Writing
Notes on coordination, indexing, and the things that fail while reporting success.
Content addressing makes merge conflicts impossible
If two parties key their documents by the hash of the contents, combining their work is a union rather than a negotiation. Here is what that buys, what it does not, and why disagreement should be preserved instead of resolved.
Every bug we shipped was the same species
A migration that aborts and exits zero. An extractor that processes nothing and returns cleanly. A lock that guards one code path and leaves another open. Notes on the failure mode that test suites are structurally bad at catching.
The 1943 problem — why you cannot grep for absence
Search engines, vector databases and RAG pipelines all rank things that exist. None of them can tell you what is missing, because absence is a property of a set rather than a document. Here is why that gap matters and how to close it in SQL.
Why not just use git?
Git records that bytes changed. It has never read your files, cannot tell you what is unfinished, and detects collisions only after the work is done. Here is exactly where that boundary sits, and what sits on the other side of it.