Archive

Here you can find all my previous posts:

Conventions of safety

Paving cowpaths to avoid sharp edgesー2019-08-18

Quick database change management without external tools

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

Explicit relationships and the principle of least surprise

When simplicity is more complex than you might expectー2019-02-03

Avoiding lost updates in PostgreSQL logs

Ensuring the past holds no nasty surprisesー2018-12-18

Brevity in Failure

When to just die quietly in a corner...ー2018-11-03

Streaming Approximate Histograms

Self Driving Bucketsー2018-09-07

Solving Zelda Puzzles Satisfactorily

The other kind of lazinessー2018-05-31

Learning Haskell messily

Learning by getting stuck inー2018-04-27

How software systems learn

Homely systemsー2018-03-09

Choosing the right scaffold

Tooling for mere mortalsー2017-12-31

Local build orchestration with make(1)

Orchestrating the orchestratorsー2017-11-29

Supposedly a Property test library

Supposing that my code works...ー2017-10-23

A quick tour of LLVM's Sanitizer coverage implementation

Inside the grey boxー2017-09-30

Automatic port allocation

For when you just can't decide...ー2017-08-30

Adding flexibility to build processes

Knowing where to break the chainー2017-06-30

Die-hard Statefully

Puzzling quickcheckー2017-05-30

A Taste Of Cloudformation.

Carving with clouds.ー2017-03-20

Adventures in TCP latency measurement

There and back in quantifiable time.ー2016-12-13

Desire without objectification

For those embarassing abstraction leaks.ー2016-12-09

Testing as question asking or Hypothesis Driven Development

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

It's all happened before

How a little counter can avoid calamitous causal confusion.ー2016-05-23

Rules-based Network programming with Mio and Rust

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

More Clojure component patterns

Parking the cart before putting the horse to bed.ー2014-10-31

(defn reloaded/-main [] …)

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

Tell don’t ask with Sinatra handlers

Putting your actions in their place.ー2013-10-31

My little Backpressure: Flow Control is magic

Avoiding congestion and I/O stuffiness.ー2013-09-30

Precise scheduling with RabbitMQ

The things we'll do to avoid dependencies.ー2013-09-28

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

New Jersey's revenge.ー2013-08-31

Emptying the depths of your database with Sequel.

Cleaning up after yourself.ー2013-07-31

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

Avoiding the thunk explosion.ー2013-06-30

Page objects in Ruby

Your UI is a domain, too.ー2013-05-31

Mutant Refactoring powers

Knowing your tests are actually worth something.ー2013-04-28

Ruby Property testing with Rantly

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

Continuous Integration for Github Pull Requests with Teamcity

Avoiding those embarassing accidents on master.ー2013-01-13

The Scientific Method in Debugging.

How to know when it works.ー2006-11-19