Another Perspective on Promises

I spent 9 months of this year working on a project using Java 8 and enjoyed it much more than I expected. Specifically, the addition of Optional made my code...

Specify Your API

Much of the past 6 years of my professional life has been spent designing, implementing and maintaining APIs. I’ve learned many things to avoid as well as a handful of...

Extensible Design with Protocols

I wrote some code this week that reinforced the power of protocols as a tool for software design. The term “protocol” can mean many things in the world of software....

Elixir Streams

I previously wrote about explicitness in Elixir. One of my favorite ways the language embraces explicitness is in its distinction between eager and lazy operations on collections. Any time you...

Sanity Tests

It is common for test “classifications” to have a plethora of definitions. Sanity tests are no different. Wikipedia says the following on the subject: the sanity test […] determines whether...