Writing (and rants)

I write about the things that annoy me until I figure them out, which is basically all of software engineering. Go, Ruby, FreeBSD, infrastructure, API design, the occasional JavaScript when I can't avoid it. If you're here for hot takes on naming conventions and operating systems that most people forgot exist, you're in the right place. If you're here by accident, honestly, stick around. You've already made worse decisions today.

2026

Your coding agent has your keys

You open your coding agent, point it at a repository, and let it handle the heavy lifting. But the agent runs as your user account, inherits your credentials, and can reach the network. If it reads the wrong instruction, the damage is bounded only by what your account can touch.

The assumption nobody wrote down

I was three hours into a redesign when a spec contradiction stopped me cold. Five sections of a 1,600-line spec, all resting on one assumption I had never written down.

Do you know what's actually on air?

The webhooks were green. The metadata matched. The listener heard half a second of the wrong track bleed through during a live set. So I recorded the stream and taught ffmpeg to tell me what was actually on air.

Open source is just plumbing now

Nobody thinks about plumbing until something comes up through the floor. Open source is plumbing now, and most of it is maintained by one guy in Nebraska.

2025

2022

The quiet revolt of the digital self

One billionaire bought a platform and everyone suddenly remembered they don't own anything online. A look at protocols, portability, and the quiet work of building something better.

2017

2016

2015

Stop naming all your callbacks cb

Everyone names their callbacks "cb" and then spends forty minutes debugging why the wrong one fires. Two words fix it. You're looking for "next."

2014