Maxime Perniola

Journal

The notebook.

Build notes, taken while I build. Written for myself first, published in case they are useful to someone else. Entries are written in French first and translated here.

#012

The rule applied too well

In Scopa Fortuna, the mandatory capture was right for normal cards. Extended to upgraded cards without anyone deciding it, it forbade moves the game promised.

Scopa Fortuna 6 min
#041

WhatToPlay, or knowing what to launch tonight

A PS Plus subscription unlocks more than six hundred games, listed alphabetically. I built the site that ranks them by rating, every day, in 44 countries. What it does, how it works, and what it taught me.

PS Plus Catalogue 8 min
#016

Ten years away from code, and what it gave me to come back

Developer, then manager, product owner, CTO, presales. Less code with every role. Why those ten years are exactly what it takes to build with AI tools, with WhatToPlay and the club website as examples.

Craft 8 min
#017

The same site, five times

Twenty-five years of a taekwondo club's website: hand-written HTML on chez.com in 2001, Joomla in 2010, WordPress in 2014 and again in 2022, Astro in 2026. The need never changed. What it took to meet it did.

Taekwondo Meylan 7 min
#011

Four databases, ten countries, and none of them agree

A game rated 91 on one side, 78 on the other, missing from the catalogue on the third source. What I learned trying to merge data that does not want to be merged.

PS Plus Catalogue 8 min
#010

The button that only failed on Samsung

Three days to understand why a buzzer refused to fire on a Galaxy A33. The answer was neither in the code nor in the documentation.

Quiz Buzzer 7 min
#009

Migrating a WordPress site to Astro over a weekend

Ten years of content, a club with a hundred members, no maintenance window possible. What went well, and the one thing I would do differently.

Taekwondo Meylan 9 min
#008

Estimating a project when a tool writes the code in thirty seconds

Execution speed has changed. Estimation has not. Why the two are not linked, and what it means when you commit to a fixed price.

Craft 6 min
#007

Five months without a line

Between 26 February and 20 August, not one commit. Two new jobs, and a pause I had not planned. Why I am coming back, and what changed while I was not looking.

Craft 5 min
#006

Two projects that died in February

A Telegram bot for selling on Vinted, an amateur esports tournament platform. Two repositories, hundreds of pages of documentation, zero useful lines of code. What they taught me about templates.

Craft 6 min
#005

Seventy tickets in a weekend

Voice notes dictated while playing, sixty screenshots, and a ticket file the tool can work through without me. The method that took Scopa Fortuna from playable to publishable.

Scopa Fortuna 7 min
#004

The plan said nineteen weeks

On day one the tool produced a nineteen-sprint plan for a card game. The game was published six days later. What a plan is worth when building costs nothing.

Scopa Fortuna 6 min
#003

The newline in the environment variable

Confirmation emails never arrived in production. Three stacked causes, including an invisible character stuck to the end of a URL.

Quiz Buzzer 7 min
#002

Connected, but nothing arrives

The WebSocket said "connected". The server received nothing. One missing parameter in a constructor, and two days looking everywhere else.

Quiz Buzzer 5 min
#001

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

On 28 January the app worked. On 17 February it actually worked. What happened in between is everything I had forgotten about what "done" means.

Quiz Buzzer 6 min

No entry on this topic yet.