
The Audit That Couldn't Save Itself
The audit found a real problem on one of my sites. Then it failed to save its own report. The real story of the week was a migration, not a check.

One JSON Line on Stdout
When the caller cannot read the room, the script has to put the room on stdout. One JSON line, one status field, everything else on stderr.

The Year 0003 Problem
Sixteen rows in a federal dataset claimed they were filed in the year 3. The schema lied, and that gap is where the real engineering lives.

The Watchdog That Couldn't Fix It
A bash watchdog and the failure it couldn't restart: when your AI agent's CLI logs itself out and the only fix is a human at a keyboard.

I Built My Own Analytics. Three Invisible Bugs Said Otherwise.
Building my own pageview analytics taught me that passing every static check and actually working are two very different claims.

I Gave My Chat Agent A Foreign Key
My chat agent could publish articles but had no memory of what got published. The fix was a foreign key, a system prompt, and a delegation pattern.

The Machine That Can Do Anything Except Care
I've spent the last year building with AI every day. Not once has it started anything on its own.
Builder Journal
Why I Gave AI Its Own Machine
A practitioner's case for dedicating a Mac Mini as a headless AI agent workstation instead of running agents on your development machine.
Builder Journal
Every Session, I Reintroduce Myself to My Own Writing Assistant
AI writing, creative tools, AI memory, writer profile, project memory, creative process, writing tools, AI collaboration
Builder Journal