Older posts
A contract before the client
The planned native client gets an offline submission path, a bundled dictionary, and an API compatibility rule before its first install exists.
What the end of a game should say
The end-game dialog gets a hierarchy, sharing survives the trip to the daily countdown, and the final board becomes part of the result without storing the whole game.
Showing the snake where it's about to go
A ghost-path overlay that simulates each keystroke before it happens, a collision rule that took two attempts to get right, and the interactive demo it made redundant.
Quiz should score high
Word scoring drops the inherited word-frequency model for Scrabble-style letter values, the duel AI is recalibrated to match, and a domain glossary lands first to give the whole decision a shared vocabulary to be written in.
Giving the logic a name
Two days pulling shared logic out of stores and routes into small, named, independently tested modules, one of which immediately surfaced a real duel bug and got its own same-day fix.
A reason to come back
The daily challenge gets a real midnight boundary instead of an arbitrary UTC one, the wait for it becomes a countdown instead of a dead end, and web push notifications arrive, built around the one hard constraint the hosting platform imposes on anything running on a schedule.
The clock comes off
The thirty-second per-word timer added three weeks ago comes out entirely, scoring reverts to pure word length times rarity, and a UI freeze traced to backdrop-filter blur turns up in three more dialogs with a blunter diagnosis than the first time.
Not like this
The engine gets pulled apart into deep, single-purpose modules, and a day later the entire day-two Norwegian layer, carried for three weeks without a dictionary worth playing against, comes out for good.
The week the game started watching itself
A three-PR refactor trio makes the word-submission pipeline immutable and side-effect-free, then the newly-launched game gets its first stats page, a same-week AI tuning pass informed by it, docs finally caught up to the Postgres stack, and a WCAG 2.2 audit closes the week.
Two kinds of ready
A second design pass swaps oklch approximations for exact designer hex values and a machine-readable spec, then a seven-part bundle declares the game launch-ready: once-per-day enforcement, a streak counter, analytics, and a way to help pay the hosting bill.