Alexandra Vozár
The ambient display running

API Ambient Display / Moiré

Moiré is an ambient display that gives physical form to how constantly Wikipedia is written and rewritten. A printed paper loop, one of the oldest ways of storing knowledge, travels behind a fixed acrylic grid that reveals one frame at a time and turns an interlaced drawing into animation. When human edits to English Wikipedia rise above their 15-minute baseline, the paper speeds up. When they drop below, it slows down.

The brief was to choose an API and express its data through physical movement, with no screens.

TypeCourse project, Technology Design Foundations, UC Berkeley DisciplineFabrication, physical computing TeamIndividual LinksLive edits view, Process journal
Inspiration

After building a zoetrope, I wanted to keep exploring the illusion of motion with a technique I hadn’t worked with before. I kept coming back to moiré, the pattern that appears when two sets of lines or dots overlap. When one layer shifts even slightly, new shapes and movement appear that aren’t in either layer on its own.

Moiré was used to animate small scenes in France in the early 1900s, where a striped overlay slid across a printed image to animate it. I liked the idea of pairing such an old optical trick with new technology. The patterns follow precise math: the spacing and angle of the overlapping lines determine the size and direction of the patterns that appear, as these clippings from scientific papers show.

Moiré from overlapping random dot patterns
Overlapping random dot patterns
Moiré from overlapping line rulings
Overlapping line rulings
Moiré from overlapping curved lines
Overlapping curved lines
Concept

The burning of the Library of Alexandria is often told as a story about how fragile collected knowledge is. Online knowledge bases like Wikipedia can seem permanent, but they may be even more fragile, since they are written, edited and rewritten all the time.

I chose Wikipedia’s recent changes to give that constant rewriting a physical form, and paper, one of the oldest ways of storing knowledge, as the material to carry it.

Mapping the data

People are always editing Wikipedia, so there is never a moment with zero activity. If the machine ever stopped, viewers would read that as no one editing at all, which is never true. Instead, I established a baseline of normal activity and showed whether there is more or less than normal. Since the animation runs on a loop, that difference could be shown as speed.

The code counts human edits in the last two minutes and compares them to the average over the last 15 minutes. When activity rises above the baseline, the paper moves faster. When it drops below, it slows down. Activity within 10% of normal maps across the full range from calm to busy, so small changes are still visible, and the speed eases between readings instead of jumping.

The display itself couldn’t use a screen, but I wanted people to be able to see the edits too: who was editing which articles, and whether activity was above or below average. I built a live web view of the same data. It uses the same logic as the machine and lists each edit to English Wikipedia as it happens.

Live view of human edits to English Wikipedia(Open full screen)
Choosing a mechanism

A moiré animation needs two layers sliding over each other: a drawing made of several interlaced frames, and a striped grid that hides some frames and reveals others, one at a time. I considered keeping the paper still and having the servo change the angle of the grid, but chose a loop of paper that travels continuously behind a fixed grid, as in early French machines. A loop can run indefinitely, which suits data that never stops.

A lo-fi cardboard prototype with two dowels, paper rollers and an acrylic gear tested the mechanism at full size. It surfaced two problems for the final build to solve: the rollers rubbed against the base, and the dowels needed support to stay upright. Both pointed to bearings, stacked at two points to keep the dowels straight.

Sketch of the paper loop mechanism
A continuous paper loop behind a fixed grid
Cardboard prototype with paper rollers on dowels
The cardboard prototype surfaced friction and support problems
Sketches for reducing friction
Ideas for reducing friction

The prototype also set the dimensions for the final version:

—Width. As wide as the 3D printer bed (256 mm), so parts could print on any of the printers available to us.—Gear clearance. The acrylic gear showed how much room the gear and servo needed on the side.—Gear ratio. The roller gear is four times the size of the servo gear. The 4:1 ratio slows the roller so the paper moves smoothly instead of jumping, and multiplies the servo’s torque by about four, giving it more force to pull the loop.
Final build

Each part of the final display was tested, adjusted and reprinted on its own, so the build was designed to be modular from the start.

Moving paper smoothly

The base is the smallest that fits the servo and gears with clearance to turn, which keeps the piece compact. Because the paper width wasn’t settled yet, the base has a separate top deck, so the roller spacing could change by reprinting only the deck.

For the rollers, 3D printing gave more control than PVC. I cut PVC pipe in two lengths to compare, then printed thin-walled rollers instead, which let me set the exact width and height and keep them light. End caps are fit exactly to the dowels.

3D printed base in front of the cardboard prototype
The printed base, sized to the servo and gears
PVC pipes in different diameters
PVC in two lengths, with the printed rollers in the middle
Assembled 3D printed rollers on the base
Printed rollers, light and sized exactly to the paper
Tuning the illusion

Bearing holders built into the deck hold the bearings and support the dowels, solving the friction and support problems from the prototype. The modular deck paid off when the first plate set the rollers slightly too far apart: only that piece needed reprinting.

Slot width decides how clear the animation is. Wider slits let the grid sit further from the paper, narrower ones sharpen the frames. Tests on transparencies showed 4.2 mm slots gave the clearest animation, so the grid presses directly against the paper. The acrylic pane was enlarged to show more of the animation, and it slots into feet to stand without glue.

Acrylic panel and stand
The enlarged acrylic pane stands in slotted feet
Grid tests printed on transparencies
Slot width tests on transparencies
Connecting to live data

An ESP32 with built-in WiFi connects the display to Wikipedia. It checks recent edits and sets the servo speed using the same time windows as the live view, so the machine and the view always show identical numbers.

The printed animation had to match the loop exactly. A plain paper loop run on the rollers confirmed it rotated smoothly, and its measured length set the dot spacing and strip width for the final print.

Soldering header pins to the ESP32
Preparing the ESP32
Servo wired to the ESP32 on a breadboard
The servo speed follows the edit rate
A plain loop sets the length of the final print
Outcome

The final display is a compact 3D-printed base that hides the servo, gears and ESP32, with two rollers carrying a printed paper loop behind a fixed acrylic grid. Side by side, the display and the live view respond to the same numbers. The display shows the overall level of activity at a glance, while the view shows what is actually being edited.

The ambient display next to the live edits view
Reflection

The display was received well. Since we couldn’t use screens to represent the data, I was struck that many people first thought it was a screen. Only up close did they realize it was a physical optical illusion: paper moving behind a printed grid. I liked that an early 1900s technique could be mistaken for a digital one.

← Index Next: Endangered Languages