NOTES.
Field notes from a one-person shop. Posted when there is something worth posting — process, design, the occasional Easter egg. Receipts at the bottom of every page.
- 01
Twelve pentagons
You cannot tile a sphere with hexagons alone. The twelve exceptions are not a bug to hide — they are the shape of the thing.
gamesalgorithmgodotDATE2026-07-13READ6 MINSLUG/twelve-pentagons - 02
The hand is not the board
Everyone assumes the poker hands form on adjacent hexes. They do not. Getting that wrong would have welded the rules to the geometry forever.
gamesarchitecturealgorithmDATE2026-07-13READ5 MINSLUG/the-hand-is-not-the-board - 03
I see no rain
Every line of logic was correct. Both feature flags were right. Three hundred checks passed. The player saw nothing at all.
gamestestinggodotglitchyDATE2026-07-13READ5 MINSLUG/i-see-no-rain - 04
The threads you cannot have
Godot's web export wants SharedArrayBuffer. SharedArrayBuffer wants headers your static host will not give you. There is a way out, and it costs you threads.
gamesfrontenddistributiongodotDATE2026-07-13READ5 MINSLUG/the-threads-you-cannot-have - 05
Tenancy at the database line
Multi-tenant isolation belongs in the database, not the application. One forgotten WHERE clause should not be able to leak another org's data.
saasbackendsecurityDATE2026-06-24READ4 MINSLUG/tenancy-at-the-database-line - 06
Two cards, no cloud
Image-to-video diffusion as a daily driver, run on consumer GPUs at home — where the trick is keeping the gaming card out of the lane.
aiinfrastructureownershipDATE2026-06-24READ3 MINSLUG/two-cards-no-cloud - 07
Local-first by default
Running everything on hardware I own is not frugality. It is a design choice that changes what I am willing to build.
ownershipaiinfrastructureDATE2026-06-24READ3 MINSLUG/local-first-by-default - 08
Functional core, thin bridge
The pattern under a chess engine, a casino, and two smart-glasses apps: keep the rules pure and push every side effect to the edge.
architectureprocesstestingDATE2026-06-24READ4 MINSLUG/functional-core-thin-bridge - 09
The opponent thinks on another thread
A chess AI that searches a tree deep enough to matter, without ever freezing the board it is playing on.
gamesalgorithmsconcurrencyDATE2026-06-24READ3 MINSLUG/thinks-on-another-thread - 10
Forty panels, one function
An ops dashboard that runs as my wallpaper and never reflows on a data tick — because placing the panels is a pure function, not a hand-built layout.
frontenddesignsystemsDATE2026-06-24READ4 MINSLUG/forty-panels-one-function - 11
The swarm on your face
Agent status and a push-to-talk assistant on a pair of smart glasses — which works because the glasses are the last inch, not the logic.
hardwareaidesignDATE2026-06-24READ3 MINSLUG/swarm-on-your-face - 12
One zoom, no seam
A game that runs from one deckhand mining ore by hand up to an empire of fleets, with no loading screen between the scales.
gamesdesignsystemsDATE2026-06-24READ4 MINSLUG/one-zoom-no-seam - 13
Owning the IP line
Shipping a game on Steam means owning every name in it. The discipline that guarantees that is a written bible and a quarantine.
ownershipgamesprocessDATE2026-06-24READ3 MINSLUG/owning-the-ip-line - 14
One line, one soundtrack
An audio-generation tool with three front doors, where the one that matters is the door a game build walks through to get a file path back.
pipelinearchitectureownershipDATE2026-06-24READ3 MINSLUG/one-line-one-soundtrack - 15
Replacing the home screen
A launcher and a game that read as one product, because they share the same storage and the score shows up with no sync plumbing at all.
androidownershipdesignDATE2026-06-24READ3 MINSLUG/replacing-the-home-screen - 16
The hive reported false-done
An AI swarm told me a game shipped. The game did not exist. The only status that counts is the one the repository agrees with.
aiprocessverificationDATE2026-06-15READ4 MINSLUG/hive-false-done - 17
A swarm that builds games
The interesting part of an agent swarm is not that it writes code. It is what happens between a one-line request and a playable app on my phone.
aiprocessDATE2026-06-15READ4 MINSLUG/swarm-that-builds-games - 18
A roguelike on your face
Building a full Balatro for smart glasses, where the display is 576 by 288 pixels of monochrome and the only input is a tap.
designprocessDATE2026-06-15READ3 MINSLUG/roguelike-on-your-face - 19
Theming as a product
Most sites have a theme. This one has six, each a different layout — here is the architecture that keeps that from becoming a maintenance swamp.
designprocessDATE2026-06-15READ3 MINSLUG/theming-as-a-product - 20
A store of my own
Making small games was never the hard part. Getting them onto the phone was — so the app store shipped first, and a week of games followed.
ownershipprocessdistributionDATE2026-06-14READ3 MINSLUG/a-store-of-my-own - 21
Pair-designing with a stubborn senior
What it feels like to design a site with a tool that refuses to write code until it has interviewed you.
designaiprocessDATE2026-05-07READ5 MINSLUG/built-with-impeccable - 22
The combination lock on the title screen
A match-three game with a hidden layer underneath. The seven cartridge sprites are an input device, not decoration.
glitchydesigneaster-eggsDATE2026-05-07READ5 MINSLUG/jazzy-secrets - 23
Eighteen sections, one guild
A guild site is supposed to be a forum and a calendar. We built eighteen surfaces because the work demanded it.
freedomguardsscopeownershipDATE2026-04-30READ6 MINSLUG/freedomguards-rebuild - 24
Loud on purpose
Why this site looks like a transmission instead of a product page.
designprocessDATE2026-05-06READ3 MINSLUG/loud-on-purpose - 25
Swarms that ship
Three rules for running a small army of AI agents end-to-end without burning the house down.
aiprocessDATE2026-04-22READ4 MINSLUG/swarms-that-ship