SMERESKI
  1. PROJECTS
  2. SKILLS
  3. RESUME
  4. BLOG
  5. GAMES
  6. CONTACT

BLOG

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.

ARCHIVE40 ENTRIES
  1. 01

    The heartbeat

    My merge gate went 52 minutes without merging anything, and nothing said so. By morning the heartbeat my agents built to catch stalls like that had fooled itself twice with one git check, on branches that had no work on them yet.

    gamesai-agentsverificationprocess
    DATE2026-10-05READ7 MINSLUG/the-heartbeat
  2. 02

    When the test is the bug

    Over one weekend, the failures my game's merge gate reported kept turning out to be the tests or the test machine rather than the code. The work became telling the two apart without learning to ignore red.

    gamesgodotai-agentsverification
    DATE2026-10-05READ7 MINSLUG/when-the-test-is-the-bug
  3. 03

    Fifty-six models faced backwards

    Most of the AI-generated 3D models my pipeline had stalled on were built exactly as asked. A rotation setting Blender silently ignored had left them facing the wrong way, a review script that found the word 'boar' inside 'keyboard' misjudged what some of them were, and nobody had looked at the rest again.

    gamesgodotai-agentsverification
    DATE2026-10-05READ8 MINSLUG/fifty-six-models-faced-backwards
  4. 04

    The harness was the slow part

    A local model looked too slow and too lost to work on its own, so I measured what it was being fed. On every turn it read about 30,000 tokens of instructions written for a different model, and every task started in the wrong folder.

    aiprocessverificationgames
    DATE2026-09-29READ5 MINSLUG/the-harness-was-the-slow-part
  5. 05

    The contract came first

    My game's clouds went from painted puffs to a volume you can fly through in one evening. The part worth writing about is what happened first: after three weeks of water detail that vanished while every test passed, the rules for what the clouds must show were committed before a single pixel changed, and the first build failed them on four counts.

    gamesgodotverificationtesting
    DATE2026-09-24READ9 MINSLUG/the-contract-came-first
  6. 06

    Where the ripples went

    Three weeks of making the water in my game look real were mostly a search for detail the math already had and the screen never showed. Twice the culprit was the same one-line mistake, and once the fix was to draw less.

    gamesgodotverificationtesting
    DATE2026-09-23READ8 MINSLUG/where-the-ripples-went
  7. 07

    Nothing merges on its own word

    I let my coding agent run up to sixteen other coding agents at once against one game for a day and a half, and told it nothing merges without a rerun of its own tests, before and after. Three separate times, something passed every test it had and simply was not on screen when anyone looked.

    gamesgodotai-agentsverification
    DATE2026-09-21READ7 MINSLUG/nothing-merges-on-its-own-word
  8. 08

    The probe that refuses to run

    A game built with an agent stays honest because 260 probes and 30 capture rigs judge it, and because the runner they go through knows when it is not allowed to run.

    gamestestingprocessai
    DATE2026-09-14READ6 MINSLUG/the-probe-that-refuses-to-run
  9. 09

    The crash was in the quit

    One probe in my game's test suite passed and then died on the way out, almost every time, and I had taught the runner to forgive it. The bug was a third-party queue that runs its leftovers inside a destructor, after the physics world they need is already gone.

    gamesgodotdebugverification
    DATE2026-09-14READ5 MINSLUG/the-crash-was-in-the-quit
  10. 10

    No river runs uphill

    The planet under my survival game is one JSON entry. Everything wet on it — rivers, lakes, the coast, the mill — falls out of a single rule: water goes downhill, and only downhill.

    gamesgodotalgorithmverification
    DATE2026-09-14READ8 MINSLUG/no-river-runs-uphill
  11. 11

    The loop is the product

    I built the v0 loop in a day — live preview, forked versions, design tokens, export into real repos — then swapped three different engines into it. The loop barely noticed.

    ownershipaiprocess
    DATE2026-08-22READ5 MINSLUG/the-loop-is-the-product
  12. 12

    The second voice

    I asked my coding agent why I was hearing it twice. It traced its own process tree, discovered it had no terminal window, and found the second voice was itself.

    aiinfrastructureprocess
    DATE2026-08-20READ4 MINSLUG/the-second-voice
  13. 13

    Half a step early

    Every timestamp my video QA tool reported was off by the same half-interval, and the test I wrote to protect the contract was protecting the bug. Two AI reviews argued about it; a forty-line probe settled it.

    aitestingverification
    DATE2026-08-20READ5 MINSLUG/half-a-step-early
  14. 14

    The law shipped first

    Seventeen days after the EU began requiring labels on synthetic audio, I shipped twenty-six unlabeled AI narrations. Nothing in my pipeline objected. So I built the thing that objects.

    aicomplianceprocess
    DATE2026-08-20READ4 MINSLUG/the-law-shipped-first
  15. 15

    Where the tokens go

    The plugin's benchmark was honest. It still lost me a thousand dollars. The bill was never about output.

    aiinfrastructureprocess
    DATE2026-08-19READ5 MINSLUG/where-the-tokens-go
  16. 16

    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.

    gamesalgorithmgodot
    DATE2026-07-13READ6 MINSLUG/twelve-pentagons
  17. 17

    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.

    gamesarchitecturealgorithm
    DATE2026-07-13READ5 MINSLUG/the-hand-is-not-the-board
  18. 18

    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.

    gamestestinggodotglitchy
    DATE2026-07-13READ5 MINSLUG/i-see-no-rain
  19. 19

    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.

    gamesfrontenddistributiongodot
    DATE2026-07-13READ5 MINSLUG/the-threads-you-cannot-have
  20. 20

    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.

    saasbackendsecurity
    DATE2026-06-24READ4 MINSLUG/tenancy-at-the-database-line
  21. 21

    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.

    aiinfrastructureownership
    DATE2026-06-24READ3 MINSLUG/two-cards-no-cloud
  22. 22

    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.

    ownershipaiinfrastructure
    DATE2026-06-24READ3 MINSLUG/local-first-by-default
  23. 23

    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.

    architectureprocesstesting
    DATE2026-06-24READ4 MINSLUG/functional-core-thin-bridge
  24. 24

    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.

    gamesalgorithmsconcurrency
    DATE2026-06-24READ3 MINSLUG/thinks-on-another-thread
  25. 25

    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.

    frontenddesignsystems
    DATE2026-06-24READ4 MINSLUG/forty-panels-one-function
  26. 26

    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.

    hardwareaidesign
    DATE2026-06-24READ3 MINSLUG/swarm-on-your-face
  27. 27

    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.

    gamesdesignsystems
    DATE2026-06-24READ4 MINSLUG/one-zoom-no-seam
  28. 28

    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.

    ownershipgamesprocess
    DATE2026-06-24READ3 MINSLUG/owning-the-ip-line
  29. 29

    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.

    pipelinearchitectureownership
    DATE2026-06-24READ3 MINSLUG/one-line-one-soundtrack
  30. 30

    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.

    androidownershipdesign
    DATE2026-06-24READ3 MINSLUG/replacing-the-home-screen
  31. 31

    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.

    aiprocessverification
    DATE2026-06-15READ4 MINSLUG/hive-false-done
  32. 32

    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.

    aiprocess
    DATE2026-06-15READ4 MINSLUG/swarm-that-builds-games
  33. 33

    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.

    designprocess
    DATE2026-06-15READ3 MINSLUG/roguelike-on-your-face
  34. 34

    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.

    designprocess
    DATE2026-06-15READ3 MINSLUG/theming-as-a-product
  35. 35

    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.

    ownershipprocessdistribution
    DATE2026-06-14READ3 MINSLUG/a-store-of-my-own
  36. 36

    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.

    designaiprocess
    DATE2026-05-07READ5 MINSLUG/built-with-impeccable
  37. 37

    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-eggs
    DATE2026-05-07READ5 MINSLUG/jazzy-secrets
  38. 38

    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.

    freedomguardsscopeownership
    DATE2026-04-30READ6 MINSLUG/freedomguards-rebuild
  39. 39

    Loud on purpose

    Why this site looks like a transmission instead of a product page.

    designprocess
    DATE2026-05-06READ3 MINSLUG/loud-on-purpose
  40. 40

    Swarms that ship

    Three rules for running a small army of AI agents end-to-end without burning the house down.

    aiprocess
    DATE2026-04-22READ4 MINSLUG/swarms-that-ship