pf2026.md

$ cat pf2026.md

PF 2026: building a New Year's browser game in a single sprint

Every December the same ritual. A PF card lands in your inbox, you glance at it for half a second, you close it. I send those too, and every year I feel a little worse about it. So this time I decided to do something nobody asks for: instead of a card, a small browser game. You play a projectionist, you calibrate a cinema projector, you race the clock, and when you pull it off, Claude hands you a personalized video greeting. The whole thing, idea to deployed, in one focused sprint.

This is the build story. What was fun, what was fiddly, and why I think shipping tiny creative things fast is one of the most underrated uses of AI right now.

The idea: do my own job, but as a game

I integrate cinema systems for a living, so the premise wrote itself. Calibrating a projector in real life is a slow, careful dance: geometry, focus, color, brightness, the lamp warming up while you sweat the deadline before the first screening. That tension is the game. I took the real workflow and turned the knobs into sliders, the deadline into a countdown, and the satisfaction of "picture is locked" into a win screen.

No game engine. No build step I'd regret in six months. Plain HTML, CSS and a single file of vanilla JavaScript. The whole point was to stay light and ship, not to build a platform.

The fun part: the loop came together fast

The core loop is dumb in the best way. You get a target (focus here, color temperature there, keystone straightened), you drag sliders toward it, and a little diff meter tells you how close you are. Hit the threshold before the timer dies and you advance. Miss it and the picture stays ugly and the crowd waits.

With an agent next to me, the prototype was playable in an evening. I described the loop, it scaffolded the state machine, I tuned the feel by hand. That's the division of labor that actually works for me: the agent writes the boring plumbing, I make the decisions that need taste. How fast should the timer run? How forgiving should the tolerance be? Those aren't prompts, those are playtests. You sit there, you play it ten times, you nudge a number, you play it again.

The fiddly part: it's always the feel

The logic was the easy 80%. The annoying 20% was everything that makes a toy feel good instead of just working:

None of this is hard. All of it is the kind of thing you only catch by actually using the thing, which is exactly why I don't believe in shipping a creative project straight from a prompt. You build it, then you live in it for a few hours.

The reward: Claude writes the greeting

Here's the bit I genuinely enjoyed. A static PF card says the same thing to everyone. This one doesn't. When you finish the calibration, the payoff is a video greeting generated for that moment, not a stock clip everyone gets. The game isn't decoration around a message; finishing it is the message. You earned the wish by doing my job for ninety seconds.

That framing flipped the whole thing for me. It stopped being "a card with a gimmick" and became "a tiny experience that happens to end in a greeting." Same content, completely different feeling.

Shipping it

Deployment was the least interesting part, which is how I like it. Static files, a folder, done. No backend to babysit, nothing to keep running, no 2 a.m. page. A New Year's greeting that needs a server is a New Year's greeting that breaks on New Year's. Boring infrastructure is a feature.

Why I'd do this again tomorrow

The real lesson isn't about projectors or games. It's that AI has quietly made the cost of a small creative idea almost zero, and most of us still haven't updated our instincts. A few years ago "instead of a card, a browser game" is a two-week side project you never start. Now it's a sprint, and the only scarce resource left is taste and a couple of focused evenings.

So my honest takeaway: stop saving your good little ideas for "when you have time." The plumbing is cheap now. Build the dumb fun thing. Ship it. Worst case, three people smile and you learned something. Best case, somebody plays your PF card instead of closing it in half a second. PF 2026.

back to blog