April 8, 2026
On naming events
The hardest part of analytics isn’t the pipeline. It’s getting six engineers to agree that user_signed_up and user.created and signup_complete are the same event. Name things once, in a spreadsheet, before you write a single line of capture code. The spreadsheet will outlast three refactors.
March 22, 2026
ETS tables at 3am
Spent an hour debugging why an ETS lookup was returning an empty list. The table existed. The key existed. Turned out I was pattern-matching on the wrong arity — the tuple had four elements, my match expected three. The BEAM doesn’t lie. It just doesn’t explain.
March 10, 2026
Cover crops and dead code
Crimson clover fixes nitrogen in the soil for the next season’s planting. It doesn’t produce anything you harvest directly — it improves the conditions for what comes after. Good test suites work the same way. You don’t ship the tests, but everything you ship is better because they exist.
February 18, 2026
The Sidekiq queue is a promise
Every job you enqueue is a promise to your future self that the work will get done. Most of the time, Sidekiq keeps that promise. But when it doesn’t — Redis restarts, memory pressure, a bad deploy — you learn very quickly which promises were load-bearing and which were decorative.