The Irresistible Charm of Flip-Discs
A programmable, kinetic display that clicks, clacks, and speaks in pixels.
There’s something weirdly satisfying about flip-disc displays.
If you’ve ever stood in a train station and heard that rhythmic click-click-click as the departure board updated, then you know the vibe. I remember the first time I took a train from Penn Station in NYC to Washington DC. The flip board was loud, relentless, and somehow magical. It made the whole thing feel more official. More real. Like I was graduating from pretend trains to real ones. That sound, the mechanical chorus of travel, just sticks with you.
That’s the energy behind flipdisc.io, merging the nostalgic charm of flip-boards with modern programmability, not as a mere homage, but as a functional, interactive display that bridges the analog with the digital.
We used 9 Alfazeta panels in a 3x3 grid or 84x42 dots, sourced from eBay. These panels were originally built for transit signage, game shows, and tradeshow booths. Each frame of data is sent over RS485. We wrote a JavaScript library to make this super easy.
The frontend is a custom iPhone app. We wanted to make sure it was really easy to change the scene throughout the day. My favorite is a Spotify scene that displays my current playing track. What makes the project come alive is how interactive it feels. To handle gesture input, we’re using Google’s MediaPipe libraries and models. Most ML libraries run in Python, so we use Node.js to spawn Python scripts that handle the gesture recognition and pass results back over ZeroMQ. It’s a lightweight, hybrid setup that works surprisingly well.
Maybe someday we’ll swap in Python WASM to unify the stack, but for now, this gives us the flexibility we need to experiment without over-engineering.
Since most of the ML tooling runs best in Python, we spawn Python scripts from the Node.js backend and pass data back and forth using ZeroMQ for inter-process communication. It’s flexible, but at some point, we might move to Python WASM. For now, we’re able to get the performance of Python ML libraries and the flexibility of JavaScript for orchestration.
The display lives in our home now, mounted on the wall. It’s silent when idle, then bursts into motion with the flip of a pixel. You can animate a message. Watch it ripple. Control it live. The sound it makes has become part of the house’s rhythm, like a mechanical heartbeat.
This wasn’t a fast build. It involved debugging serial buses, reading flaky hardware docs, and figuring out how to build a grid of 3528 little discs to flip on command without them falling out all over the floor. But that’s also what made the project so satisfying. There’s something very grounding about building a thing that physically moves when your code tells it to.
The full write-up, with photos, schematics, code, and demos, lives at flipdisc.io. It’s all open-source. If you’re the kind of person who loves projects that blur the line between art and infrastructure, this one’s for you.
A few months later we received several flipdigit boards and made a large interactive display. Similar to flipdots, it flips segments on a seven-segment display.
Our halloween installation that moved a skull’s eyes as you walked by on the sidewalk:
A rotating 3d pyramid:
We also released a library to make working with flipdigits super easy. Also, keep an eye out on flipdisc.io for a full build guide.
In a world of ephemeral interfaces and virtual everything, there’s something grounding about a physical display that literally flips over to show you something new. You don’t just see it—you feel it, and you hear it, too.
Sometimes progress doesn’t mean replacing the old—it means reimagining it.