A pair of small, tactile devices that let two people play Simon together across any distance, in light and rhythm. No screens, no chat, just a quiet conversation that builds over days.
Screens, scheduled calls, and piled-up texts have no equivalent for small signals of closeness. Milo leaves those signals, played as a game.
"I love how nostalgic and calming it feels. I'd actually use it with long-distance friends."Play tester · Edinburgh, 2023
Two devices, paired over the cloud. One taps a sequence of colours; the other watches it play back, repeats it, adds one more. Get it right and play on; get it wrong and a new round begins.
Player 1 taps three colours to start.
A blue light signals your turn. Press the side button when ready.
The ring plays back the sequence sent by the other player.
Tap the sequence back, then add one colour to extend the round.
Flashing green, a rising beep. The longer sequence travels back.
Flashing red, a falling beep. The other player scores and starts fresh.
A rhythmic conversation, played across time and space.
The first design was fixed, sized for a shelf, with a turn-light readable across the room. Almost complete, until testing told a different story.
"Testers, including ourselves, kept preferring the cardboard prototype over the actual one. We'd been biased by the original Simon and hadn't designed for how young adults actually pick things up."Design journal · Iteration review, mid-project
The new direction kept the language, rounded square, wood, pastel buttons, shrunk to hand size. Two units, visually distinct: white for Player 1, black for Player 2.
Milo is an "adult toy," tricky to CMF. Pastel on wood gave playfulness without tipping into youth product, nodding to the original Simon: nostalgia without imitation.
Sized to be held like a small controller. The side button sits under the index finger.
Bright primaries would read as a children's toy. Muted pastels keep the Simon-coded memory but feel calmer.
The blown-glass cap diffuses the NeoPixel into a soft glow. White = Player 1, black = Player 2.
Rebuilt from scratch in roughly two weeks: laser-cut MDF for the housing, hand-blown glass for the diffuser, layered laser-cut button caps.
Most of the project ran in true collaboration. I led sketching and mind-mapping; Quentin led CAD and renders. Code, electronics, testing, and the pivot were shared decisions.
Each Milo runs on an M5 Stick C Plus (ESP32, Wi-Fi, built-in LiPo). The units talk through Adafruit IO: each press writes to a cloud feed, the partner plays it back. Neither needs to be online at once.
Runs the code, handles Wi-Fi, pushes button events to Adafruit IO. Built-in LiPo makes it portable; the screen is repurposed as a score readout.
Soldered into the casing so the layered caps sit flush. Each press writes a colour ID to the cloud feed.
Mounted under the glass cap. Plays back the sequence, signals turn state (blue, green, red), animates win/loss beeps.
Re-uses the M5's built-in button, extended with a wooden dowel and painted cap. Confirms "ready to receive."
A piezo speaker plays the win/loss beeps. Adafruit IO carries the two feeds connecting the pair.
The second phase mattered most: we each took a unit home and played for a couple of days, testing where the design was actually meant to live.
Button feedback "ideal amount of wonky." Beeps clear. Right difficulty.
"Add a colour" cue unclear. Unit could be thinner. Some pastels confused at a glance.
Prompted texting between rounds. Sense of connection with no contact. Spread-out rounds genuinely harder.
Could get repetitive over a long stretch without gameplay variation.