Cite this work

The full account of the weekend is published as an open technical report with a permanent DOI: the design, the security, privacy and accessibility choices, and a protocol that anyone can run to evaluate the result independently. The report is written in French.

The bet

I don’t write code. What I do, and have done for over twenty years, is run IT services for a large international group: set the requirements, design the controls, choose and challenge suppliers, keep things running. I wanted to know whether that craft — specify, verify, accept — was enough to ship, alone with an AI coding agent and in under twenty-four hours, a real service that holds to professional standards without lowering the bar: no passwords stored anywhere, personal data reduced to the strict minimum, a design that works on a phone, a tablet and a PC, accessibility taken seriously, and a home server that opens no port to the Internet.

The pretext was a cosy little 8-bit game: you run an airmail aerodrome in the 1930s, in an invented world of high plateaus, lakes and lanterns.
You take contracts, you send your pilots out, and when the mail lands your phone tells you so. That was the whole brief. Everything else — the rules, the places, the pilots, the logo — had to be invented along the way.

My tooling for the weekend: a Synology DS218+ (6 GB of RAM, bought years ago), a domain name (the only thing I actually paid for, about ten euros), a free Cloudflare tunnel, a free email relay, a GitHub account — and Claude, writing the code while I did what I do at the office: set the rules, arbitrate the trade-offs, test on my own devices, and say “no” when something felt wrong. Not one pull request was merged by anyone but me.

Saturday, 20:27 — an empty folder and a list of rules

Before writing a single line of game, we wrote the rules of the house. Security first, and everything published under my own name from the first commit. Secrets never leave the NAS. Every change goes through a pull request with five automated checks (lint, types, unit tests, dependency audit, security scan) and I am the only one who presses the merge button. Code under AGPL, artwork all rights reserved. That chain is the whole point: nobody — not me, not the agent — can put code in production without going through it.

Then the first pages appeared: a landing page that explains the game in two sentences, a sign-up form that asks for an email and a nickname — and nothing else — plus a confirmation that you are fifteen or older and have read the terms. No password field anywhere. You receive a link by email, valid ten minutes, and you are in.

Altiplume home page in day mode: a pixel-art aerodrome, a short pitch and the sign-up envelope
The home page as it looked a few hours in: the envelope on the right is the whole sign-up form.

Saturday night — the aerodrome comes alive

The game itself was built in the night: a deterministic simulation, a hand of cards (contracts, opportunities, and the occasional event — a cow on the runway blocks everything until you deal with it), pilots with names, genders and small stories that unlock as you fly with them, a stamp album as the reward system, and a world map of invented places. I insisted on as many women as men among the pilots, and on a “Crosslet Lane” somewhere in that world, for private reasons.

I also insisted on a night mode. The toggle took ten minutes; the pixel sky took longer.

Altiplume home page in night mode: pixel-art aerodrome under a dark sky
Night mode. Same page, same pixels, a different sky.
Altiplume sign-up form on a phone: email, nickname, age and terms checkboxes
Founding an aerodrome on a phone. Two fields, two boxes to tick.

Sunday morning — online, from the living room

By morning the game was running in a container on the NAS, reached through a Cloudflare tunnel: the box dials out, nothing dials in, and my home router has not a single open port. A scheduled task on the Synology redeploys the latest version in one click and ends with a reassuring exit 0; another one makes a nightly backup, checks its integrity and keeps thirty days of history.

Then came the part I cared about most: logging in without ever typing a password. On a phone, a passkey (Face ID, fingerprint) opens the game in one gesture. On a PC, you don’t type anything at all: the screen shows a QR code, you scan it with the phone where you are already signed in, you check that the six digits match, and the PC is in. The first time you play, the game gently suggests creating a passkey, reminds you once or twice if you postpone, then leaves you alone.

Altiplume login page on a phone: email field, passkey button and QR option
Signing in on a phone: a link by email, or a passkey.
Altiplume login page on a PC showing a QR code and a six-digit verification code
Signing in on a PC: show the QR code to your phone, compare the six digits, done.

Sunday, 14:23 — “Your mail has arrived”

The moment that made the whole weekend worth it. I sent a pilot out on the regular line, put the phone down on the kitchen table and had lunch. At 14:23 it buzzed: your mail has arrived. A real push notification, from a game running on a NAS under the television, through code we had written ourselves that morning, with nothing but a public web standard between the two.

For that to work the game had to become an installable app. On Android and on a PC the browser offers it; on an iPhone Apple wants you to do it by hand, so the game shows a small card with the two taps to make: Share, then “Add to Home Screen”. Simplicity was a rule too: if you cannot explain a step in one picture, the step is wrong.

Altiplume card on an iPhone explaining how to add the game to the home screen in two taps
The iPhone card: two taps and the game sits on the home screen.
Altiplume aerodrome screen on a PC: the pixel scene, the hand of cards and the pilots in two columns
The aerodrome on a PC, in two columns: the scene and the hand of cards on one side, the pilots and the logbook on the other.

What I learned

  • Engineering is not typing. I did not write a line of code and did not need to. Setting the constraints, designing checks that nobody can bypass, testing on the real device and deciding what gets merged — that is the engineer’s job, and it is the same job I do at the office.
  • The constraints are the product. “No password”, “no open port”, “email and nickname only” sound like limitations; they removed whole categories of bugs, forms and worries before they existed.
  • Test on the real thing. Half of the corrections came from my own phone: a cache that would not refresh, a bell that did not ring in Safari, three cards where one should have been blocked by a cow. The agent fixes fast; the human has to notice.
  • One fix, one pull request. I learned this one the hard way, twice, and it is now a rule written in the project.
  • Tell the story as you go. The project keeps a journal and a cost sheet, published on its wiki: 34 pull requests, 138 automated tests, ten euros. Writing them took minutes and is the part people actually read.

Is it finished? Of course not. The security protocol still has to be run by someone other than me, the accessibility audit is on the list, a second region of the world is sketched, and whether anyone besides me plays will be decided on social networks rather than in a terminal. But the bet is won: one person who doesn’t write code, one AI agent, one old NAS, less than a day — and a game you can install on your phone this evening.