Hexagonal Architecture in Action

I’ve been an advocate of the single-responsibility principle for a long time. I’ve used it effectively on several projects to make sure that each individual class or function has a singular purpose. It’s definitely kept me from making an unholy mess out of some of the more complicated projects I’ve worked on. However, particularly with […]

Time and Relative Distance in Source (Code)

Reasoning about a program’s behavior is extremely tricky in the best of circumstances. When you throw in asynchronicity, it is the absolute worst. It’s like your code is trapped in a convoluted time travel movie. You want to perform some operation, but that requires stepping into a time portal and coming out at some indeterminate […]

Blockchains Explained: A Primer on Cryptocurrencies, Bitcoin, and Ethereum

Blockchains are nothing new: Bitcoin’s blockchain was implemented in 2009, and research papers on blockchains date back to the early ’90s. While I had heard about Bitcoin and blockchains, I didn’t fully understand them, and the gaps in my knowledge came to light when my grandma asked me to explain Bitcoin to her. This post is […]

Pixels and Palettes: Extracting Color Palettes From Images

Color palettes are usually carefully hand-selected to reflect a desired design aesthetic. Although there have been some attempts to procedurally generate palettes, automated palette creation is very difficult. It’s easy to choose some random colors, but generating a coherent and aesthetically pleasing palette in an automated way is not easy.