Dev diary, 2026-08-03
A very big day — north of 50k lines moved across a dozen repos, and two of them ended with me tearing out the thing I’d built that morning.
The going-out map, cityheatmap, got the whole of Europe: 1.48 million venues out of a 32 GB extract. Then it got a lesson. I wired a ticketing feed, measured it, and found it reaches 1.3 percent of Copenhagen — so the answer was to make the structural map excellent rather than bolt on more sources. By afternoon I’d built two screens with a ranked shortlist. Then I said out loud that the shortlist was circular, and it went in the bin. Later I looked at the served map and said I still couldn’t see the use — big squares, no meaning. So the squares went too. The answer is now a named place: Kødbyen, Indre By, Jomfru Ane Gade. Absence is drawn honestly in three states, and the ceiling on the whole thing turns out to be readable opening hours — only about 6,000 of 15,000 Danish venues have hours you can parse, and it falls worst on the clubs.
Maracaibo had its best day yet. maracaibo-plotter ran on a real Android phone for the first time — the chart drew, then it drew on the real boat, and recorded passages now replay indoors. Along the way a stand-in wrote a fake boat into a real track log, so I spent time proving which rows were fake and enforcing the rule instead of just declaring it. maracaibo-charts spent the day arguing with itself: I blamed the tiles for kilometre-wide holes, then retracted it — the decoder was at fault — and rewrote the gate to measure thickness rather than area. maracaibo-camtank got three physical fuel invariants enforced by construction. maracaibo-trip-replay learned to pick up new passages by itself, and four per-trip land files turned out to be the same 59 coastline rings four times over.
Foreman took seventeen commits of hard lessons: a worker was declared dead while it was ninety turns deep and fine; a test tap got applied as a 2,000 DKK/month approval in my name. Money now needs my actual words. The panel stopped showing paragraphs and started showing labelled fields ranked by consequence — after I told it twelve cards of unstructured text weren’t a layout problem, they were a why problem. Workers run on Opus by default; no silent downgrades to dodge quota.
Elsewhere: the Tenant-migration tooling repo lost 86k lines to a security sweep — committed dumps and debug scripts gone, docs re-verified against code that had drifted a refactor behind. The Cloudy Brain got a real archive route instead of an unbounded link list on the front page. Havnetryk took its nightly data export. marine-route-planning finally got a Definition of Done you can test. And my resume got an AI section — drafted, previewed as rendered HTML because markdown is not a review surface, approved, then widened past “assisted delivery” because that label framed me as a consumer of tools. One file is canonical now; the variants are archived. Across the ideas ledgers, 149 commits of bookkeeping, and four dead oversight gates got retired — a gate nobody will ever action is noise.
Tonight: the map answers a time and names a place, the plotter has been on a real boat, and the foreman can finally tell me what’s left rather than only what’s on fire.