The Journal
Building Geo Climber
A web dev's journey building an iOS game from scratch with Claude Code. Honest stories, mistakes included.
Launch Day, and Why I Wrote a Cookbook Instead of Just Shipping Posters
On launch day I generated six posters, fought a model that kept inventing fake logos, discovered that marketing specs are a crutch, and wrote the recipe so I'd never have to figure this out again.
Six Failures and a Local Test
How six consecutive CI failures on Fastlane taught me to stop treating GitHub Actions like a REPL, and the release workflow that emerged from the wreckage.
The Blog That Builds Itself
Twenty days of commits, pivots, and debugging sagas had produced a game, but the story of how it got built was more interesting than any feature list. Designing a blog series, building the infrastructure to feed it, hitting the infrastructure's own limits, and refining it into a pipeline that could outlive any single conversation.
Teaching an AI to Play My Game
A web dev with zero ML experience builds a reinforcement learning agent for his iOS game. From porting physics to Python, to cross-validating against real gameplay recordings, to watching the agent discover mechanics nobody taught it.
Making Friends (The Most Ambitious Day)
Eighteen tasks, 35 commits, one feature: the social identity system went from brainstorm to working Apple + Google auth, friend graph, profiles, avatars, and invites in a single session. Then the QA pass found 15 bugs.
One Terminal to Orchestra
How the Claude Code workflow evolved from a single chat window on day 1 to a multi-agent orchestration system on day 18: plugins, skills, agents, hooks, worktrees, and the first domain-specific skill that understood difficulty tuning.
Teaching the Game to Remember
The recording system started as an end-of-day testing tool. It became a feature. Then it became the foundation for an AI that plays the game. Fifteen feature commits, seven determinism bug fixes, and the first serious use of git worktrees.
The Boring Stuff (at 1am)
Sentry, SEO, and the 37-minute midnight Docker debugging saga that taught me what .gcloudignore does. Plus the extensibility overhaul where one terminal became plugins, skills, agents, and hooks.
Shipping Day: Twenty-Four Issues Closed
The Pesach holiday sprint. Eighteen commits, twenty-four Linear issues closed, the first /ship skill invocation ever, and the revive bug I shipped at 1 coin instead of 50.
Thirteen Zones, Zero Photoshop (Almost)
180 art assets in three hours via a code-controlled AI pipeline. Plus why I abandoned ComfyUI (not because it was bad, but because it pulled me into designer mode) and my confession about Firefly AI.
The Rebrand Day
AyaEscape becomes Geo Climber. Aya becomes Inge, named after a real Danish seismologist. Plus a marketing website shipped in a single day, and the ranked-mode UX decision I'm still not sure about.
Four Phases in Two Days (From a Ski Lodge)
GCP Cloud Run, offline SwiftData, analytics batching, Workload Identity Federation, all shipped between ski runs in Andorra. Plus a hot take on GCP and the Game Center debugging saga that cost three commits.
A Web Dev Builds a Backend (The Comfort Zone)
After eight days of iOS and Swift and Metal, Fastify and Prisma feel like home. Plus the monorepo decision I made for the AI agents, not for me.
Getting It Into People's Hands
The gap between 'works on my simulator' and 'on someone else's phone.' TestFlight, App Store Connect, encryption compliance, alpha channels on icons, and the single most relatable sentence any developer will say this year.
The Day I Planned Everything
Thirty-four Linear issues in a single day, without typing a single word into Linear. The shift from 'can I make it work' to 'what am I actually building', and why I chose Linear specifically because it's agent-first.
C++ Has to Go
Day 3 of building an iOS game with Claude Code. Frame drops, half-hour prompts, and the moment I almost gave up before ripping out the entire engine.
Day 2: It Runs on an iPhone
From a janky SDL window to a working iPhone prototype in a single day. Plus the first warning sign that the 'no tech gap' feeling has a catch.
I Found a Game on GitHub
Day 1 of building an iOS game with Claude Code. A casual car conversation, a C++ project that wouldn't compile, and the moment I realized Claude could actually read this code.