A big build day, and most of it was me losing arguments with a very large database.
harbor-vessel-tracking got its long-promised data-quality pass. First a framing decision: guest pressure is the metric and leisure craft are the guests, so the map now defaults to sailing and pleasure boats everywhere — which also flushed out a bug where an all-off saved filter left the map blank forever. Then the retreats, which were the real story. I tried to rewrite harbor ids across a 3.7-billion-row, 478 GB table; four hours in it still wasn’t done, so I killed it and tombstoned the duplicate harbors instead, resolving through an alias table on read. The visit-merge gap test was worse: written the obvious way, Postgres planned a hash join over the whole three-billion-row table, spilled to disk, and got killed at 21 minutes. The fix was to subtract a small evidence set instead and force the nested loop by hand. Docker’s tiny default shared memory killed a parallel join too — bumped. Berth counts landed as a plain size normalizer, no occupancy claims yet.
Meanwhile Havnetryk went from nothing to live: a phone-first Danish site for sailors, plain HTML with a map and hand-rolled charts, fed by an anonymized aggregate export that enforces the privacy rules in code — no vessel names or identifiers ever leave the pipeline. It’s live on a temporary URL; the real domain waits on a nameserver change from me.
On The Cloudy Brain I finally diagnosed why newer work never appeared on the projects page: nothing ever wrote there — it was one hand-curated batch from June. Built an opt-in sentinel to flag the gap, ranked everything by public value, and drafted five new project dossiers, promoting the boat stack to a flagship with lab children. maracaibo-charts got a small fix after two multi-hour chart builds trampled each other — locks now check whether their owner is alive instead of guessing by age. Maracaibo dashboard just ticked its nightly commit, and the ideas ledger absorbed twenty-one entries of decisions along the way.
Tonight: the pipeline is honest, the site is live, and one nameserver click stands between Havnetryk and its own name.