Journal

Field note: scroll-scrubbing film without hijacking the reader

Engineering notes on the opening film: blobs over byte-ranges, the motion-handoff contract, and why the page must survive without a single line of JavaScript.

Field notes are short engineering entries. They exist so that how we build is as inspectable as what we build.

The opening film scrubs five chained video legs by scroll position. Three constraints made it interesting:

Blobs, not byte-ranges. Many static hosts don’t serve HTTP range requests, which pins video.seekable to [0,0] and silently freezes scrubbing at frame 0. We fetch legs as Blobs and play from object URLs — always seekable. 1 Cost: memory; bounded by fetching at most two legs ahead and disposing behind.

Velocity, not just position. Seam continuity isn’t only frame-identical pixels; the camera must never reverse across a seam, or the eye reads a rewind. In 40 seconds of film, the one allowed reversal (the push-in during the judgment scene) lives entirely inside a single leg. 2 Every leg ends and begins with the same clause: a slow, steady forward drift.

The fallback ladder is a contract, not a hope. No-JS shows a still and full copy. Reduced-motion collapses the film to stills. iOS gets first-touch priming. 3 Each rung is separately shippable — because a page that needs JavaScript to make its point hasn’t made it.