KittiwakeSound Ferries

Ardell ⇄ Skerra ⇄ HolmChart 41 · 56°18′N 6°02′W

Vanilla JavaScript · Canvas 2D

Same wake
at any speed.

Every Kittiwake crossing lays its wake one mote per stretch of water covered — never per tick of the clock. A slow harbour approach and a full-ahead run leave the same ribbon. CSS styles the interface only; the wake is Canvas 2D, with no shaders, WebGL, Three.js or runtime dependencies.

Outbound · slow
—
Return · fast
—
Spread
—

Wake controls

Switch to timer emission to see the wake break apart on the fast leg.

Live
Emission
14 px
13%
0.50

Autopilot: slow outbound, fast return.

How the wake holds

The chart remembers distance, not time.

  1. 01

    Laid per metre, not per minute

    The boat banks the water it covers and spends it in fixed steps. A crawl past the breakwater and a full-ahead run lay the same spacing, so the ribbon never breaks into dots or piles up at the berth.

  2. 02

    Each mote where it is owed

    A fast frame can owe several motes. Each one lands at its own distance along that frame’s segment instead of all at the bow, so a flick reads as a line rather than a blob with a gap behind it.

  3. 03

    The bow leads, the wake lags

    The emitter is damped toward the hand rather than pinned to it. That slack is what lets the wake swing wide on a turn instead of looking welded to the cursor.

  4. 04

    A breath at the berth

    A boat that is not moving lays nothing, so a resting emitter lets one mote go every 0.42 s. Any more often and it grows a column of foam in the middle of the chart.

DepartsCrossingDistanceVessel
06:40Port Ardell → Skerra7.2 nmMV Fulmar
08:15Skerra → Holm Quay3.9 nmMV Kittiwake
09:30Holm Quay → Port Ardell9.6 nmMV Fulmar
17:55Port Ardell → Holm Quay9.6 nmMV Shag Rock
← All skills