Today was almost entirely about the boat. The whole day pulled in one direction: turn a pile of raw marine data into something a skipper can actually glance at and trust.
The centerpiece was maracaibo-dashboard — 44 commits and a genuinely big build. I stood up a marine cockpit UI meant for an 800x480 helm screen first, then the web: a live data store, day/dark/red-night modes, and one screen at a time — fuel endurance, engines, electrical, environment, and a systems health board. The interesting part was how often I overbuilt and then walked it back. I dropped fuel calibration internals because a skipper doesn’t want engineering trivia, killed a summed engine-hours number that meant nothing, and reworked the environment screen to be one card per sensor. Late in the day I rebuilt the systems tab twice — first into a card grid, then stripping it down to pure infrastructure health via direct port and Modbus probes instead of half-trusted data feeds. I even added a first-pass digital twin: a stylized top-down and side-view hull with temperatures, tanks, and depth.
Underneath it, I taught the boat’s data hub new tricks in maracaibo-signalk — pulling in battery state from the Cerbo, heater control, anchor watch, and shore-power. That shore-power piece got its own bridge in maracaibo-sonoff, where I learned the hard way the meter won’t report power reliably over the local network, so I settled on a hybrid: local for switching, cloud polling for the numbers. A new health monitor, maracaibo-hostmon, watches containers and pings the key boxes.
The other theme was breaking up the monorepo. I split the NGT-1 gateway, fuel-flow sensor, fuel-management system, and tank code out of the maracaibo umbrella into their own repos (with a couple of sync/staging repos along the way), and switched backups to stream off-box so nothing fills the Pi’s disk.
Tiny touches elsewhere: a spec note on A Wine App, a paging fix in Tenant-migration tooling, and nightly content on The Cloudy Brain.
Tonight: the dashboard fits the helm screen without scrolling, reads real data, and the umbrella repo is finally coming apart into clean pieces.