Blog

Thoughts on software, specifications, and the future of development.

Your Specs Are Trapped in Chat Logs

Every AI conversation where you describe what your software should do is a specification you wrote and then threw away. The knowledge is there. It's just locked in the wrong place.

Determinism Isn't Going Anywhere

AI is great when you need creativity and latitude. It's computationally wasteful when the process is already known. Deterministic systems aren't legacy — they're the endgame.

The Study of Apps

Code became the source of truth by accident. We think specifications should be. Here's why — and what AI makes possible.

Agentic Workflows Are Just Automated Specifications

An AI agent executing a business process is really just running a spec. If the spec is wrong, the agent is wrong. Here's why that matters.

The Discovery Phase Nobody Wants to Pay For

The highest-leverage investment a team can make is understanding requirements before writing code. So why does everyone skip it?

AI Doesn't Replace the Spec Problem

LLMs can generate code faster than ever. But without specifications, there's nothing to verify it against. More code, less understanding.

The Locked Spec

What happens when a specification is validated, signed off, and locked? It becomes a building block that AI and teams can trust forever.

Why Natural Language Specs Aren't Vague

The obvious objection to natural language specifications is precision. Here's how to make them rigorous enough to be machine-actionable, without inventing a new formalism.

The Programmer's Oath, Revisited

Uncle Bob proposed a professional oath for programmers. Now that AI agents write code too, what should that oath look like?

The Cost of Reimplementation

HTTP clients, date parsers, cryptographic algorithms, rebuilt from scratch in every language. How much has the industry spent solving the same problems over and over?

Software's Missing Middle

Every other high-stakes profession has an institutional layer between intent and implementation. Software skipped that step. What would a 'building code' for software actually look like?

Technical Debt Is Specification Debt

Teams don't accumulate bad code, they accumulate missing or drifted specifications. The code is a symptom. The spec is the disease.