Yesterday was a phone day.
Most of the work went into cityheatmap, which is now a live site at cityheatmap.com. The morning was about coverage: measuring how many readable opening hours each city actually has before it gets offered in the selector. The reasoning in the commits is explicit — Denmark’s 43.8 percent is a floor for Denmark, not a forecast for Palma, so no city inherits another’s number. Four European cities went in, each stating its own coverage.
Then I drove it on my Pixel and the layout fell apart while every function worked fine. That found the defect the per-city measurement exists to prevent, arriving by the one gesture a map invites: pan, zoom, open a link. Four fixes, all measured at a real phone size. Then iOS Safari turned out to be its own animal — the map went from 42 to 53 percent of an iPhone screen, and two of those fixes are stamped unverified rather than claimed. A later round found the iOS fix had never actually deployed; the culprit was cache and a zone TTL, not the code.
Smaller things: Barcelona and Palma needed Spanish and Catalan hours parsing. Reading 545 Barcelona websites yielded 40 venues — 13 of 53 rows rejected. A build cache got committed by mistake and untracked the same day.
Foreman got a digest that answers “what happened while I was elsewhere” instead of only “what is the fleet right now”, plus a focus lane for working one repo directly. Several of its commits are corrections to how it behaves — I stopped it mid-build twice for inventing things nobody asked for, and told it twice to read the docs before diagnosing.
A Wine App had a false start: a cached-ingest module built on a wrong premise about the image pipeline, deleted the same day once the belief was checked against the live database. Havnetryk and The Cloudy Brain took their nightly data exports.
Tonight: cityheatmap serves nine cities, live and driven on two phones, with two iOS fixes still marked unverified.