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...

The Value of Explicitness

Elixir is often compared to Ruby. It’s true that Elixir takes inspiration from Ruby’s syntax. One of Elixir’s core tenets is “metaprogramming”, something often associated with Ruby and its ecosystem....

An Empathetic Functional Language

I’ve been writing Elixir code for over a year. Never have I been more excited about the prospects of the language and its community. The language is young but very...

Pagination with Phoenix & Ecto

I’ve been working on a web application built in Elixir. I’m using Phoenix as the web framework and Ecto to talk to my database. As the amount of data in...

Composable Queries with Ecto

In my previous post I briefly covered some lessons I’d learned while building a (kind of real) web app in Elixir. Today, I’d like to take an in-depth look at...

Building an Elixir Web App

Over the past few months I’ve been building a small internal application at work. I’ve been using Elixir, Ecto and Phoenix and it’s been an absolute blast. I thought it...

Good Software Developers

I’m approaching 8 years as a professional software developer. I’ve written a lot of code, worked on a few teams and helped build a team from 4 developers to ~60....

Node Streams for APIs

Node streams are a fantastic abstraction for evented programming. They’re also notoriously hard to implement. In this post, I’d like to walk through implementing a streams2 Readable stream to wrap...