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-up
Does 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-up
Ship 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-up
Where 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-up
npm 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-up
Should 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-up
Is 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-up
Rabe: 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-up
Building 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-up
What 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-up
Who 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-up
Share 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-up
Asking before analyticsAnalytics that only start after a yes, asked in a small terminal prompt instead of a cookie banner.
write-up
Testing WCAG 2.2How axe, keyboard tests and a contrast test check every page of this site against WCAG 2.2 AA.
write-up
What the budgets caughtHow measuring first changed the notes filter, the home page's largest paint, the fonts and the budgets.
write-up
An ASCII grid that waitsThe ASCII grid behind the home terminal, and how it stays out of the way of the page.
write-up
A 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-up
How this site worksA static site built with Bun and React, JavaScript only where needed, and size budgets as tests.
write-up