Here you can find all my previous posts:

Quick database change management without external tools

Ad-hoc schema management, but less soーMarch 31, 2019

Explicit relationships and the principle of least surprise

When simplicity is more complex than you might expectーFebruary 3, 2019

Avoiding lost updates in PostgreSQL logs

Ensuring the past holds no nasty surprisesーDecember 18, 2018

Brevity in Failure

When to just die quietly in a corner...ーNovember 3, 2018

Streaming Approximate Histograms

Self Driving BucketsーSeptember 7, 2018

Solving Zelda Puzzles Satisfactorily

The other kind of lazinessーMay 31, 2018

Learning Haskell messily

Learning by getting stuck inーApril 27, 2018

How software systems learn

Homely systemsーMarch 9, 2018

Choosing the right scaffold

Tooling for mere mortalsーDecember 31, 2017

Local build orchestration with make(1)

Orchestrating the orchestratorsーNovember 29, 2017

Supposedly a Property test library

Supposing that my code works...ーOctober 23, 2017

A quick tour of LLVM's Sanitizer coverage implementation

Inside the grey boxーSeptember 30, 2017

Automatic port allocation

For when you just can't decide...ーAugust 30, 2017

Adding flexibility to build processes

Knowing where to break the chainーJune 30, 2017

Die-hard Statefully

Puzzling quickcheckーMay 30, 2017

A Taste Of Cloudformation.

Carving with clouds.ーMarch 20, 2017

Adventures in TCP latency measurement

There and back in quantifiable time.ーDecember 13, 2016

Desire without objectification

For those embarassing abstraction leaks.ーDecember 9, 2016

Testing as question asking or Hypothesis Driven Development

The praxis of What-who-where-when-why .ーOctober 24, 2016

It's all happened before

How a little counter can avoid calamitous causal confusion.ーMay 23, 2016

Rules-based Network programming with Mio and Rust

Making the non-deterministic, less so.ーJanuary 27, 2016

More Clojure component patterns

Parking the cart before putting the horse to bed.ーOctober 31, 2014

(defn reloaded/-main [] …)

The code is dead, long live the code.ーSeptember 30, 2014

Tell don’t ask with Sinatra handlers

Putting your actions in their place.ーOctober 31, 2013

My little Backpressure: Flow Control is magic

Avoiding congestion and I/O stuffiness.ーSeptember 30, 2013

Precise scheduling with RabbitMQ

The things we'll do to avoid dependencies.ーSeptember 28, 2013

POSIX Threads and fork(2): on not crossing the streams

New Jersey's revenge.ーAugust 31, 2013

Emptying the depths of your database with Sequel.

Cleaning up after yourself.ーJuly 31, 2013

Tail calls in functional languages aren’t always a good fit.

Avoiding the thunk explosion.ーJune 30, 2013

Page objects in Ruby

Your UI is a domain, too.ーMay 31, 2013

Mutant Refactoring powers

Knowing your tests are actually worth something.ーApril 28, 2013

Ruby Property testing with Rantly

More test cases than you could possibly want, for cheap.ーMarch 16, 2013

Continuous Integration for Github Pull Requests with Teamcity

Avoiding those embarassing accidents on master.ーJanuary 13, 2013

The Scientific Method in Debugging.

How to know when it works.ーNovember 19, 2006