
In Praise of Whitespace
A black and white photograph of two swallows, a fifty-year war over invisible characters, and the question of why code is the only craft that never developed a theory of nothing.

Senior Software Engineer

A black and white photograph of two swallows, a fifty-year war over invisible characters, and the question of why code is the only craft that never developed a theory of nothing.

The delegation boundary is the articulation boundary. On taste as the knowledge you cannot say, and what it costs to finally say it.

Dormant features do not get promoted by redesigns. They get promoted when a new kind of user arrives and re-reads what was always there. On exaptation, affordances, and betting on what AI agents promote next.

Your CLI's newest user reads the entire manual in one request, never tires of retrying, and cannot press the arrow keys. A human absorbs a vague tool once. An agent invoices you for it on every run.

Most Gang of Four patterns were workarounds for what C++ could not do. Your language solved those problems years ago. Now AI is bringing them back.

A line-drawing algorithm from 1965 also times neutron pulses and generates Cuban rhythms. The math finds you whether or not you know its name.

Foreign keys enforce relationships on every insert, update, and delete. But the moment you query, you are on your own. By design.

Refactoring is not technical debt repayment. It is how production software stays honest.

Skills, plugins, elaborate prompting systems: they feel productive. But the best interface for an LLM is the one it was designed for: conversation.

The Gutenberg inspector sidebar ties your controls to a single tab. There is no escape hatch. So I built one.

The desktop app gives you the conference talk. The terminal gives you the answer.

How offscreen buffers, raw pixel arrays, and Web Workers let a browser tab chew through one billion samples without breaking a sweat.

Flowcharts are not implementation details. When treated as contracts, Mermaid diagrams become the most effective way to guide AI agents through complex codebases.

DRY violations go beyond code. Claude Code plugins fix the repeated setup problem across projects, but the system has growing pains worth knowing about.

Why WordPress REST API read permissions ignore your custom capabilities on private CPTs, and how to fix it with a custom controller and test it with Playwright.