Notes
Longer write-ups and short TILs about building software. Mostly for future me — hopefully useful to you too.
2026
Cut your web fonts down to the characters you useA font file carries hundreds of glyphs, and this site uses 119 characters. Subsetting at build time cut the preloaded fonts by a quarter.
write-upDoes the strongest model pay off?In 1,961 headless coding runs, the strongest Claude pair passed most, but it cost far more per pass than cheaper pairs that passed nearly as often.
write-upShip a Bun-compiled CLI on npm like esbuildHow spatz puts a compiled Bun binary on npm: a small Node launcher plus one package per platform, so each user downloads only one binary.
write-upWhere should a decision model decide?A model choice can happen per request, turn, subagent, session, or after failures. Each timing trades cache reuse for precision.
write-upnpm Trusted Publishing: what to set up firstPublishing to npm from GitHub Actions without a token takes a few steps in a fixed order. This is the order that worked for @spatz/cli.
write-upShould a decision model pick your model?Letting a decision model pick the model for each coding task saves a choice, but it has costs. The reasons for it, against it, and three alternatives.
write-upIs the cheaper model enough?Why a model recommender must sometimes try the cheaper model on purpose, and why a random control group makes the comparison fair.
write-upRabe: see what Claude Code runs in the backgroundRabe is a Claude Code mod that shows agents, Codex jobs, shells, monitors, crons and workflows in one band and one pane.
write-upBuilding a model recommenderA model recommender in four steps and a feedback loop, why it can only recommend, and why linking a result to its task is a guess.
write-upWhat is a decision model?A decision model answers a fixed question with one of your options and a probability. That makes it fast and easy to check, if the options are right.
write-upWho picks the model?Coding agents let you choose a model and an effort level. Why both easy answers cost something, and the idea of a model that picks for you.
write-upShare images without a browserHow the build draws a share image for every note as SVG and turns it into a PNG, without a browser.
write-upAsking before analyticsAnalytics that only start after a yes, asked in a small terminal prompt instead of a cookie banner.
write-upTesting WCAG 2.2How axe, keyboard tests and a contrast test check every page of this site against WCAG 2.2 AA.
write-upWhat the budgets caughtHow measuring first changed the notes filter, the home page's largest paint, the fonts and the budgets.
write-upAn ASCII grid that waitsThe ASCII grid behind the home terminal, and how it stays out of the way of the page.
write-upA small shell in the browserThe terminal on the home page is a small shell over the content of this site, tested without a browser.
write-upHow this site worksA static site built with Bun and React, JavaScript only where needed, and size budgets as tests.
write-up