Twenty-four hours of tide, sun and moon in one glance.
Android home-screen widget · Bremerton, WA · dozenal or hourly · computed on the phone
The same chart as the inksurf e-ink tide panel, as a widget you can stretch to any size. Now is the line down the middle: twelve hours behind on the left, twelve ahead on the right. It comes in two editions — pick either from the widget list, or place one of each.
The tide is predicted on the phone from NOAA's harmonic constants for station 9445958, the same prediction method NOAA uses. Across a full year of hourly samples it matches NOAA's published predictions to 0.07 ft RMS, 0.25 ft at worst. Sun and moon positions are computed the same way, so the app doesn't ask for network access at all.
A Rust renderer draws the chart at the widget's exact pixel size, so every line stays one pixel wide whether the widget is a sliver or half the screen. It composites front to back: the labels go down first, coloured as the solid fill beneath them with their own colour XOR'd in, so they contrast with whatever they sit on — and since anything drawn later lands behind them, no line or curve ever runs thru a digit.
The widget redraws every ten minutes, on the minute the dozenal time ticks over. Android only schedules that exactly if you allow it: open the app and tap Allow exact :X5 updates (Alarms & reminders). Without it, Android may run each update up to ten minutes late. A sleeping phone isn't woken; the chart catches up when the screen comes on.
It's Bremerton only, in Pacific time, for now.