// The TV set
Two tubes, and a 560-millisecond cut.
HLS takes two to six seconds to deliver its first frame. A single <video> meant a black screen on every channel change. The set carries two: while one is on screen, the next channel loads in the other, and the swap happens under cover of the interference. They alternate by opacity, never by hiding the element: a hidden video isn’t decoded, and the second tube would have preloaded nothing. It was measured: with the previous version, one in four changes arrived with a picture.
The rotation policy is a pure function, with no clock of its own and with tests: each channel stays 18 seconds, the next starts loading 4 seconds before the jump, and on entry the set tunes through 2 cards before locking onto the first signal. The interference has rules too, so it reads as a fault and not as an animation: it hits roughly one in 4 jumps, never twice in a row, and is forced after 6 clean jumps so it doesn’t vanish on a lucky streak.
It has no native controls: on a live signal Chrome draws a progress bar that means nothing. It does have a PAUSE button that stops the video and the rotation, with the label inside so the accessible name is the same as what you read. And when a channel drops, it shows: the cut, the notice, whose fault it is. Pretending “retrying…” forever would be the real failure of a demo.