
Sign up to save your podcasts
Or


I should be upfront about something before we get into it today.
I’m a scientist who builds games and apps as a hobby. I’m not a professional software developer. I started learning Swift before the AI revolution and it was slow, and tedious. I’d spend more time searching StackOverflow, watching YouTube videos and googling specific problems that didn’t have answers than actually working on the project.
Today, like many of us do, I use AI tools (mostly Claude and ChatGPT) to compress the learning curve. But I’m still learning. Or at least trying to. I do my best to not just copy paste the code these bots spit back at me. I read it, ask questions about it, sometimes I even push back. The goal is to try to understand what is actually being done so that I can maintain my code.
So I’m not writing code from scratch in a dark room fueled by caffeine and decades of expertise.
I’m a tinkerer using tools to compress a learning curve and that context matters for this story.
The Experiment
The Stack is a card game I’ve been building for iOS. Think cyberpunk, roguelike, deck-building. It has a central file called GameState.swift that holds everything — player health, the deck, the enemy, the phase of the run, upgrade flags, reward state. About 3000 lines. Not enormous but not trivial either. Big enough that losing the thread of it has real consequences.
My goal was simple. Add a card upgrade system. Seven cards, each with a flag tracking whether it had been patched. This is a simple, focused task. What could go wrong?
What followed was several days of incremental changes, accumulating confusion, and eventually multiple rewrites of the same file.
What Actually Happened
The vibe coding problem is real and I walked straight into it.
This is what happens when you’re moving fast with AI assistance. Things are mostly working and you start to get excited about what you’re building. You forgot to slow down and make sure things are still making sense. Context windows widen, drift happens… slowly. Almost imperceptibly. Before you know it things stop working and you can’t explain why.
The rewrites weren’t a result of a singular failure, but an accumulation of a thousand tiny imperfections.
What I Actually Learned
The way I handled this, was to open a new context window with Claude. But I wasn’t starting completely from scratch here, after all I still had the original conversation.
I told Claude the plan. I was going to start a new context window with it, but I needed this instance of Claude to give its future self a prompt to help me solve my problem we were having in the current conversation.
It took a bit of work, but eventually Claude was back on track and I was more focused on preventing sources of drift.
What had happened was that I got lost in the creative flow. I forgot that I was supposed to be making sure the AI was still making sense. I forgot that I was supposed to be checking, learning, pushing back.
Anyone can ask an AI to write code. Understanding why it wrote what it and correcting it when it’s off base is where knowledge accumulates. This is the difference between slop and value.
What This Proved
AI assisted development is genuinely powerful for someone like me. I’m building things I couldn’t build alone if I had all the free time in the world. These tools allow me to get my ideas out of my brain and into some workable form. Whether anything comes of them, isn’t really the point right now, what matters is that this has been a fun creative experience for me.
And yes, GameState.swift is back to being a functional massive chunk of code. Someday I will undergo another major overhaul to break up the monolithic single file into more manageable blocks, but that’s an experiment for another day.
By John DavenportI should be upfront about something before we get into it today.
I’m a scientist who builds games and apps as a hobby. I’m not a professional software developer. I started learning Swift before the AI revolution and it was slow, and tedious. I’d spend more time searching StackOverflow, watching YouTube videos and googling specific problems that didn’t have answers than actually working on the project.
Today, like many of us do, I use AI tools (mostly Claude and ChatGPT) to compress the learning curve. But I’m still learning. Or at least trying to. I do my best to not just copy paste the code these bots spit back at me. I read it, ask questions about it, sometimes I even push back. The goal is to try to understand what is actually being done so that I can maintain my code.
So I’m not writing code from scratch in a dark room fueled by caffeine and decades of expertise.
I’m a tinkerer using tools to compress a learning curve and that context matters for this story.
The Experiment
The Stack is a card game I’ve been building for iOS. Think cyberpunk, roguelike, deck-building. It has a central file called GameState.swift that holds everything — player health, the deck, the enemy, the phase of the run, upgrade flags, reward state. About 3000 lines. Not enormous but not trivial either. Big enough that losing the thread of it has real consequences.
My goal was simple. Add a card upgrade system. Seven cards, each with a flag tracking whether it had been patched. This is a simple, focused task. What could go wrong?
What followed was several days of incremental changes, accumulating confusion, and eventually multiple rewrites of the same file.
What Actually Happened
The vibe coding problem is real and I walked straight into it.
This is what happens when you’re moving fast with AI assistance. Things are mostly working and you start to get excited about what you’re building. You forgot to slow down and make sure things are still making sense. Context windows widen, drift happens… slowly. Almost imperceptibly. Before you know it things stop working and you can’t explain why.
The rewrites weren’t a result of a singular failure, but an accumulation of a thousand tiny imperfections.
What I Actually Learned
The way I handled this, was to open a new context window with Claude. But I wasn’t starting completely from scratch here, after all I still had the original conversation.
I told Claude the plan. I was going to start a new context window with it, but I needed this instance of Claude to give its future self a prompt to help me solve my problem we were having in the current conversation.
It took a bit of work, but eventually Claude was back on track and I was more focused on preventing sources of drift.
What had happened was that I got lost in the creative flow. I forgot that I was supposed to be making sure the AI was still making sense. I forgot that I was supposed to be checking, learning, pushing back.
Anyone can ask an AI to write code. Understanding why it wrote what it and correcting it when it’s off base is where knowledge accumulates. This is the difference between slop and value.
What This Proved
AI assisted development is genuinely powerful for someone like me. I’m building things I couldn’t build alone if I had all the free time in the world. These tools allow me to get my ideas out of my brain and into some workable form. Whether anything comes of them, isn’t really the point right now, what matters is that this has been a fun creative experience for me.
And yes, GameState.swift is back to being a functional massive chunk of code. Someday I will undergo another major overhaul to break up the monolithic single file into more manageable blocks, but that’s an experiment for another day.