A boat-software day, top to bottom.
Most of it went into maracaibo-helm, the Garmin-style web helm I’m building over a self-compiled OpenCPN with licensed vector charts. The morning spike proved the scary part: a transparent web view really can composite over the GL chart canvas on this Mac. From there it snowballed — shell overlaying live charts, then two direction changes in quick succession: first I ripped out the fake depth/wind/temp numbers and bound real boat data, then I dropped the websocket entirely and had OpenCPN push nav data straight into the page. Simpler, no certificates, fewer moving parts. By evening the shell was split into a top instrument strip and a bottom button band talking to OpenCPN through a small message bridge, with the chart full-bleed between them. Big build — 1,700 lines in.
maracaibo-charts got its own pipeline: decode the purchased charts into vector tiles the boat Pi can serve natively. Two fights there. The compiler’s optimizer was miscompiling the decoder — every chart segfaulted until I turned optimization off. And merging all 391 charts flat meant coarse overview land painted over detailed harbour water; fixing scale bands and polygon holes sorted it.
maracaibo-dashboard was the honest-engineering moment. My GPS stationary smoothing kept disengaging at the berth, so the position wander stayed visible. I logged an hour of fixes — 3,363 of them, wandering up to 23 meters while tied to a dock — and rebuilt the exit logic around what the data actually showed. That finding went straight into the The Cloudy Brain queue: measure the noise before you filter it.
Small stuff too: kiosk-control docs in maracaibo-cm4-box (including why a page can’t kill its own kiosk), and a couple of map notes in maracaibo.
Tonight: live charts, live nav, a working helm shell — Phase 3 is chart control from the web side.