airgap pong (experiment)

An experiment: a few balls ping-pong across a box, and the data rides on the height at which each ball strikes the wall (its quarter of the wall). A camera films the box, tells the balls apart by their color, and reads where each one hits. Every ball runs its own data fountain of the same file, so more balls means more streams at once. It is slow and for short messages; it is here to show the fountain, not to move data quickly. Everything runs in this page: nothing is uploaded. Sound · Screen to camera · Light.

What is a data fountain?

The file is cut into K blocks (16 bytes each here). Every packet a ball sends is the XOR of a pseudo-random choice of blocks, a new one each bounce, like drops from a fountain. Any K packets, or very slightly more, rebuild the file, whichever ones they are and whichever ball sent them. So the receiver never asks for anything back, can start late and can miss bounces. Details in docs/fountain-code.md.

Does it flash?

No. The balls only move; each keeps one steady color, and all the colors have the same brightness. Nothing blinks or changes brightness, so it cannot trigger photosensitive seizures the way blinking can.

Point the camera at the other screen's box of balls and hold it still (rest the phone on something). Frame the whole box. Ask the sender how many balls it shows and match it here. This receiver is experimental: it may need good light and a steady hand.

Log