Today was almost entirely about one thing: teaching a computer to plan a sailing trip around Samsø.
It started as a research question — could I fuse live weather with the boat’s own charts to pick safe overnight anchorages? The morning was a feasibility check, which came back yes, so I built the scoring engine that ranks anchorages by how sheltered they are from wind and wave. From there it snowballed. Rather than pepper myself with open questions, I dug the answers out of the boat’s own data (turns out the real draft is 1.1m) and hard-coded sensible defaults, then built an actual cruise planner: which way around the island for a four-to-five-day trip, best harbours, weather-aware overnight stops.
Then the corrections came. My first plan drew straight lines that sailed cheerfully over islands, so I built proper land-avoidance routing — a grid pathfinder over the chart’s own land polygons. The plan didn’t return home, so I made it a closed loop with a real circumnavigation. The weather source kept rate-limiting, so I pointed it at the reliable feed running on the boat’s Pi instead. By evening it could export to GPX for the chartplotter and even push the finished route straight to the boat’s navigation display. Depth-aware routing landed last: legs now stay in water the boat can actually float in. That one project alone was over 6k lines.
Around the edges: I generalised an old ferry-availability checker into a proper route/date/vehicle tool and retired the old cron. The boat dashboard learned to import and overlay GPX routes on its chart, OpenCPN-compatible both ways, plus a fix so pinching the map no longer flips tabs. And I added a read view to my idea-capture panel so I can actually read a capture instead of a snippet.
Tonight: the route planner works end-to-end but everything’s sitting in review, waiting for me to eyeball it on the water.