Maxime Perniola
← Back to the journal

#001 · · Quiz Buzzer · 6 min

A buzzer in one day, and three weeks to finish it

On 27 January I spent the day writing documentation: architecture, specifications, environment variables, an instructions file for the tool. Not a line of code. On the 28th, I asked for the application. By evening, ten phones were buzzing on a single screen, the first one won, and the PartyKit server timestamped presses to prevent cheating. One commit, a few fixes, and there it was.

I had not built anything with my own hands in years. It felt like finding a bicycle again.

What I believed

That it was done. The app did what I had described: create a game, join it with a six-letter code or a QR code, buzz, validate the answer, count points, show a podium. The Playwright tests passed. On 30 January I wrote a CHANGELOG with a version number, 1.0.0, and a feature list as long as my arm.

Version 1.0.0. The number says everything I was thinking.

What it was

A prototype that worked on my network, with my devices, when I was the one pressing. The three weeks that followed were a string of discoveries, all of the same kind: it was not code that was missing, it was the real world.

Already on the evening of the 28th, two “critical” fixes: buzzer synchronisation and player identification. Then React strict mode, incompatible with WebSocket connections, to disable. Then deployment: a missing parameter in the server connection, a page that would not compile in production. Then host accounts, planned “for later”, which uncovered a pile of things about confirmation emails and environment variables. Then a Samsung phone on which the button did nothing. Then Safari on iPhone, where it did nothing either, for a different reason.

Ninety-one commits between 27 January and 17 February. One day to build. Twenty for it to work at other people’s places.

What I take from it

I knew this. Eighteen years of making software, you know the demo is not the product. But first-day speed is misleading in a new way: when the app exists that same evening, everything that comes after looks like a delay, when it is the normal work. Before, that work was buried inside weeks of construction. Now it is exposed, and it takes up all the room.

The right reflex, which I found again around 13 February, is to treat the first version as the start of the list, not the end. And to put a real phone, one that is not mine, in someone’s hands as early as possible.

Building took a day. The rest took three weeks, and the rest is the product.

Get the journal by email

About one entry a week. What I build, what breaks, what I learn. No promotion, one-click unsubscribe.

You can also follow the RSS feed.