At some point in December, Candace, our Head of Design, asked me: what if your time at Replay could be represented as a Workflow? Every check-in, every fun event, every person you met, a living timeline, running on Temporal.
Four months later, I'm coordinating manufacturing circuit board badges in Shenzhen over WhatsApp at 11 p.m., and I've hand-soldered more PCBs than I'd like to admit.
| Temporal staff handing badges to Replay attendees |
To understand why I was asked to figure out this project is to know that my role at Temporal has this informal understanding baked into it: give Shy the weird projects. The ones that involve breadboards on a kitchen table at 11p.m, a document translation pipeline for toys. or a half-baked idea (or two, or three…) that could either be really cool or a complete disaster at a conference in front of 2,000 people.
The latter is this project where I sought out to create badges for Temporal's annual developer conference, Replay.
The concept stage#
| Our Manufacturing Partners Elecrow, QAing our badge |
I hit the ground running and started spec'ing it out. I could make one badge by myself, but to scale up to make a badge for everyone at Replay I knew I would need help. Through an introduction from some fellow recurse center alum, I found a hardware consultant and we put together a proposal.
Next, I had to pitch that proposal to Andrew Baker (our VP of Developer Relations) during his first five days on the job. Tricky because he didn't know me at all, but lucky for me, he trusted some DevRel guy with a hardware project budget that required convoluted manufacturing
The early concept drawings are genuinely charming to look at now.
Our hardware consultant's early sketches are full of hand-drawn illustrations of attendees holding a chunky handheld device with a T9 keyboard, an e-paper name tag on the front, a kickstand so it could sit on a table. There's even a little tamagotchi-esque character on the screen. The vision at that stage was something closer to a personal game console, or honestly a weird cell phone that only worked at Replay.
| A hand-drawn illustration of the energy we've created for Replay |
Then on to artistic inspiration. Our consultant came back with these stunning hand-drawn illustrations. It captures the spirit of what we were going for better than any spec doc ever could: it shows attendees gathered together, shrouded in a collective glow, illuminated by the feeling of knowledge and community. I'd even say the energy is even a little cosmic.
This is just the type of energy we've captured for the event as Replay is the community's conference. We just get the privilege of paying for it. Finding ways for attendees to interact, share moments, learn from each other, and spark something in each other is always the actual goal. The badge is the vehicle taking you there.
What the badge does#
When you hear "badge," you probably picture a rigid little plastic thing with your name and an outdated LinkedIn headshot on it. Scrap that entire notion when we're talking about this badge because this one is more like a game piece.
| Early prototype held in hand, screen showing "Alex Tideman / Design / Temporal" — a working dev unit |
Attendees navigate Replay with a mission of gathering with their peers to traverse the cosmos of the development unknown. Along the way, they collect connections, unlock new levels, and even find hidden treasures all while the badge handles the infrastructure underneath.
So what's actually inside it?
The badge runs on an ESP32-S3 microcontroller with a 128x64 pixel OLED screen, an IR transmitter and receiver, a joystick, buttons, haptic feedback via a vibration motor, and an LED matrix with programmable colors.
| Prototype B v0.0 schematic render |
It also has a gyroscope, so the screen reorients depending on how you're holding it. Firmware is written in C, with a MicroPython layer sitting on top so attendees can write their own apps without needing to learn anything new. Attendees are able to update their contact information by using the MicroPython REPL and then beam it over to each other with the IR transmitter. The conference schedule is right there on the badge so you don't have to download an app (I don't know about you, but I've encountered very few conference apps that I've liked).
| A clean green PCB with joystick and buttons, held at the factory in Shenzen, China |
| The Temporal-branded PCB, bare board with ESP32 chip |
| DELTA, our dev kit revision used for the majority of firmware development |
| Dev kit components laid out: DELTA units, batteries, cables |
| Final badge render, black with space motif, no screen content |
| Final badge render with physical print card attached, full Replay branding |
And this is what it became after Kathy, our Senior Brand Designer, got involved. The back of the badge has Ziggy, our tardigrade mascot, as an astronaut (which I love) etched into a PCB.
The AI of it all#
I have to tell you something, and I want you to keep it just between us… I never wrote firmware code before this project. Like ever.
Now, I'm a decent enough programmer and I know how to have an architecture conversation with the best of 'em. I can confidently identify when something is going wrong and I know the right questions to ask to reveal a solution, but C firmware for an embedded microcontroller wasn't something I had ever done professionally.
My testimony is this: generative AI made this project possible for me!
I used Claude and Claude Code extensively throughout my development process, eventually swapping to Codex as newer models became available. The way I think about it: I became a full-time architect with access to a team of very high int, low wisdom junior engineers who are great at implementation but need a lot of hand-holding. You can't give them something vague. You have to know what you want, know when they've gotten it wrong, and stay deliberate about what you let them build. I genuinely don't think this workflow would have worked without my ten-plus years of developer experience behind it because the experience tells you which questions matter and when to push back.
The codebase ended up around 5,000 lines of production logic, with tests more than quadrupling that. I used those tests as a way to validate what the AI was building and build trust in the output. I would record and review playwright tests to confirm user interactions worked actually how I wanted them to. I'll admit, when I code without AI, I mostly skipped writing tests in all my previous work. For me to have trust in the code that was getting generated I needed extremely solid test coverage from the start.
The documentation from all the architecture debates I had with the AI (the back-and-forth about structure, what to build, and what to cut) is over 21,000 lines, managed through GitHub Speckit that tracked specs and architecture decisions as the project evolved. That ratio says something interesting about what the job actually looks like now. It was very out of my comfort zone as someone with a CS degree and a full career without any AI tools even existing. As this project took four months, I swapped my tooling quite a bit. I finalized the project levering codex with the Grill Me Skill. It was a lot more reminiscent of wordsmithing an English essay than anything hand on keyboard, which I'm still adjusting to.
Something for you to look forward to: the whole codebase is open source! That means you'll be able to see the output of every argument I had with AI to get here! and the crowd goes wild
From one to two thousand#
Now, I've built weird IoT stuff before, in fact that's kind of my whole thing, but I've never had to build 2,000 of the same thing, and it turns out those are completely different problems.
| DEF CON badge, cat-shaped, glowing red — the inspiration reference |
The original inspiration for this whole category of badge (ours, Twilio's, GitHub's) traces back to DEF CON, the hacker conference in Las Vegas. They've been doing programmatic badges for over twenty years. The badges that run cryptography puzzles, communicate with each other, unlock hidden games. Last year's badge had a full Pokémon clone where you could walk around a virtual version of the convention center. The level of engineering that community pours into these things is genuinely absurd in the best way, and I have a lot of love for it. I used to go when I was back in college during the era of Ryan “LostboY/1o57” Clarke making all the conference badges and my memories here helped guide a lot of the creative energy I poured into this project.
| Pimoroni Badgeware and a Badger 2040 |
I had a lot of guidance too. Pimoroni, the team behind the GitHub Universe badge, were also incredibly generous. They couldn't meet our timeline but they sat with me anyway and gave me advice so this is a huge shout out to them. Their work inspired me and the updated Badgeware ecosystem, served as my prototyping platform to prove that I could pull this off. Their contributions helped us get here.
| Multiple dev badges plugged in and running simultaneously |
On the manufacturing side: I knew, at least in an abstract way, that hardware companies manage factory relationships through WhatsApp and that most electronics manufacturing happens in Shenzhen. Actually living that is something else. I'd start getting messages from the factory at 10 p.m. I'd answer until I fell asleep. I'd wake up and our west coast based hardware consultant had been chatting with them for another four hours on top of that. You're always catching up, always a little behind.
Our manufacturer, Elecrow, was incredibly generous with their time and expertise, helping us solve the problems that came up throughout this entire process. I’m especially grateful to our account manager, Chris, who not only stepped up to make sure everything worked, arrived safely, and showed up on time, but also helped us get the most out of our time in Shenzhen. She did double duty, guiding us through all the electronics markets Shenzhen is known for.
Sourcing LiPo batteries in bulk is harder than you'd think because you can't air ship them, so everything goes ground, and vendors get suspicious when you try to order large quantities at once. This resulted in our dev kits running off triple A batteries. Getting enough screens for the dev kits turned into placing about 30 separate Amazon orders across different sellers to work around quantity throttling. Our accounting team is going to have feelings about that for a while… sorry guys.
There's also the China trip. Temporal's security policy doesn't allow company compute into the country (reasonable) so when I needed to go supervise manufacturing, it required multi-week negotiations between HR, security, and finance to work out.
The answer turned out to be a clean MacBook and a clean phone provisioned specifically for the trip, access to exactly one Slack channel, and no corporate accounts. I had to say goodbye to Claude for the duration, which means I had to go back to the ways of ye olden days (pre-2023) for the development, which definitely made the firmware work interesting.
That setup was the right call, but it did mean that once I was in China, I was mostly on my own for anything that came up. Between the limited access, the timezone gap, and the fact that problems were being discovered in real time on the manufacturing floor, there was not much opportunity to phone a friend. I got one hour-long call to get help on a specific issue, and otherwise the last-minute problems had to be debugged with whatever I had with of me, in the moment.
Meanwhile, my single allowed Slack channel basically turned into a mini travel blog: factory floors, production lines, electronics markets, and a steady stream of “look at this, manufacturing is magic and also chaos.” It was useful for keeping people in the loop, but it was not exactly the same thing as having the full company brain available while trying very hard not to become the bottleneck between “we found a problem” and “thousands of these need to ship.”
Here are a few photos of what went down on my trip.
| Factory floor, hands working on PCBs in a jig |
| Stack of manufactured PCBs, dozens of them racked up at the factory |
| Factory machine, PCBs on assembly line |
Now, I'm back, the badges are in tow, and I'm excited to get them in your hands at Replay.
It's in your hands at Replay! (and beyond)#
We live in a hyper-consumerist world, and we don't want to pile on to that by creating a bunch of e-waste.
So the badge isn't e-waste when the conference ends. That was a hard constraint from the start: we're not building 2,000 things that get thrown in a drawer after three days. Because the firmware is open source and MicroPython is embedded, you can keep hacking on yours after Replay.
| Rows of finished badges, ready to be handed to Replay attendees |
The sky's the limit really. The IR sensor means you could build a universal remote, the screen and joystick give you a tiny game device, it'll keep being whatever you make it.
People also started hacking on the firmware almost immediately. One attendee built a full tamagotchi game during the conference. That's exactly the kind of thing we hoped for: someone picking up the hardware and immediately thinking cool, what can I make this do?
| Replay attendees exploring the badges |
For next year, I want to shift from the ESP32-S3 to the Raspberry Pi RP2350 and have every badge function as a Temporal worker. We managed to get Temporal's rust SDK running on the badge thanks to Edward Amsden, Staff Software Engineer on the SDK Language Runtime team, who saw me demo the badge during an engineering sprint showcase in his first week at Temporal and then casually spent the weekend hacking together Rust SDK support for us. I more or less seconded him to the badge team for his first month with us so we could get the project over the finish line. SDK team, I promise you can have him back know that we’re finished with Replay. Because Edward got Temporal running in the final weeks of the project, we didn’t have enough time to really showcase what we could do with it. Next year, though: two thousand workers hanging around people’s necks in the same room. I don’t know what I’d run on them yet, but I very much want to find out.
We also made a bunch of deeply weird games for the badge, because apparently once you put an OLED screen, joystick, accelerometer, LED Matrix, Wi-Fi, and a questionable amount of ambition into something people wear around their necks, then put a person who spent far too much time playing The World Ends with You and Henry Hatsworth on the Nintendo DS in their youth in charge of the project (aka me), this is what happens. Some are real games, some are firmware tests that got out of hand, and at least one is Flappy Asteroids: Flappy Bird on the lower LED matrix, Asteroids on the top, and absolutely no mercy anywhere. If you survived for more than 30 seconds at Replay, I hope you got your special variant joystick cap. And yes, we got Doom running.
2,000+ badges showed up and worked. If you want to get hands-on with yours, everything you need is at badge.temporal.io and if you missed out this year, make sure you come to one of our SF events over the next few months and attend Replay 2027!