First principles

A commit lands. The diff shows what changed. It does not show why, or what alternatives were considered, or which assumption proved wrong. The reasoning evaporates. The artifact is all that remains. This site is where the reasoning goes.

One decision illustrates the principle. This blog is built with a single Ruby script, kramdown for markdown, and static HTML output. No framework, no bundler, no client-side rendering. The choice was not aesthetic — it was a constraint derived from purpose. The site exists to publish technical writing. Every dependency is a surface for breakage unrelated to the writing. The dependency count is one Ruby gem. The build script is 350 lines. The output is HTML files that any server can host.

This is the form every post will take. Not the choice alone, but the derivation: why this option, what alternatives existed, what reasoning eliminated them.

The scope is software architecture, debugging, and tool design. Posts will be long when the reasoning demands length and absent when it does not. There is no schedule.

Two commitments govern what appears:

Show the derivation. A claim without its reasoning is an assertion. Assertions are not permitted here. If the derivation is too long, that is what the post is for. If the derivation does not exist, the claim does not belong.

Revise in the open. When a post is wrong, it gets corrected — not appended to, not abandoned. The revision history is in the git log. What you read is current thinking. What came before is in the commit history.