Coding with AI: From Copy-Paste to Custom Harness
How I went from pasting ChatGPT's answers into VS Code to running a custom Pi harness on Zhipu's GLM, and why the slow, painful copy-paste years are exactly the reason I can now ship multi-tenant applications with AI.
I’ve wanted to build software for as long as I can remember. The ideas were never the problem, my brain generates more of them than I know what to do with. The code was the problem. ADD and ADHD made learning to code a wall I banged my head against for years and never got over, no matter how badly I wanted to.
What I did get out of years working as a product owner and product manager, on projects I found funding for and inside companies, was a real working picture of how software actually gets built. Infrastructure on GCP and AWS. Databases and APIs. Front-end and back-end. Python, JavaScript, HTML, CSS. The library and styling layer, TypeScript, Tailwind, design systems. Figma, and a lot of UI work alongside UX and UI designers (some of it good, plenty of it terrible). Analytics, and making sense of the analytics. And the hardest lesson, learned the hard way: how to sit with customers and work out which features they actually want, versus the ones you build because you feel pressure to look like the competition.
So I understood the whole development cycle. I just couldn’t type the code myself. For years the plan was simple, earn enough to hire a team of developers and point them at the ideas. I couldn’t afford developers. So the ideas mostly stayed ideas.
The ChatGPT moment
When ChatGPT landed, 3 first and then 3.5, something changed. For the first time I could actually start building the stuff I’d been carrying around in my head. Ive used AI to code almost every single day since. There’s barely been a day where I wasn’t doing something with it.
What follows is the path I took to get from there to here. The interesting part isn’t that AI can write code. Lots of things can write code. The interesting part is that how you use it is the whole ballgame. Use it well and you ship real things. Use it badly and you’ll chuck it in and decide it’s broken.
Phase one: copy, paste, run
My setup was VS Code and the ChatGPT web UI, and I mean that quite literally. I’d ask how to set up an environment, how to stand up the infrastructure, then I’d copy the answer into VS Code, paste it into the right file, and run it. When it broke, and it broke constantly, I’d paste the error back into ChatGPT and we’d grind through it.
Sounds primitive, and it was. But it taught me the fundamentals of working with an AI. How long a thread can run before it loses the plot. How to prompt your way out of a fix. How to debug a feature by feeding the failure back in. And when to tear it all down and start over. I hit the rate limits constantly. It still worked, for a surprisingly long time.
The false starts
Naturally I tried the new tools as they showed up. Lovable I bounced off hard. It would get stuck in loops, you couldn’t drive the AI where you needed it, and you lost touch with everything happening on the back end. The first version of Cursor I just found dumb, it didn’t work the way I wanted. Codex came out as a terminal tool, and I don’t like coding in the terminal. I need to be inside the IDE, to see the code and read it. The sidebar plugins were okay, but they never quite rolled for me either.
So every time, I went back to copy, paste, run. For a long stretch that was simply the most reliable thing I had.
The agentic IDE comes of age
The turning point was Google’s Antigravity, an agentic IDE built on Gemini. The rate limits were punishing, but it was the first time the agentic-IDE idea felt good enough to actually work with. That sent me back to Cursor, which by then had worked a lot of its early problems out, and I started leaning into the real machinery: tool calling, skills, forcing the model to operate the way I’d figured out, through a whole lot of trial and error, actually produces good software.
It worked. It also bankrupted me. Between the $60 Cursor plan and another $100–$200 a month in API credits, I was spending money I didn’t have. I couldn’t keep that up, and I got desperate for an alternative.
The Pi turning point
Someone at my day job mentioned Pi. Just P-I. A terminal-based agent harness. I’m not a terminal-coding person, but the fix was easy enough: I run VSCodium, the stripped-back build of VS Code, with the terminal docked in the sidebar. Problem solved.
What won me over with Pi is that it’s simple and stripped back, but I can build custom skills and tools that force the AI to work exactly the way I get the most out of it. That was the real game changer. For example, any time the model wants to look something up or use a library, I’ve made it mandatory that it goes through Context7 first, so it’s pulling from current documentation instead of its own memory. Onboarding, offboarding, documentation, all of it happens the way I want it to, every time. I’m not at the mercy of the model’s defaults. I’m the one driving it.
Solving the cost
Pi was almost perfect, but I was still burning through tokens. The last piece was swapping the model to GLM, from Zhipu AI (z.ai). It’s a strong model and it suits Pi beautifully, it just works. On its own it’s a bit token-hungry, but paired with the Headroom extension, which puts a hard cap on context, plus the other extensions and my own documentation discipline, the token spend stays under control.
The pricing closed the loop. Effectively unlimited usage for around $100 a month, which I’m lucky enough to get through work. So the cost problem that nearly pushed me out of building altogether has basically collapsed to nothing.
What’s next
Having shaped the tools this far, the natural next step is to shape the environment too. Right now I’m building my own IDE, a blend of VS Code and Trello, built around exactly the way I work.
Conclusion
Heres the part I really want to land. People try AI coding tools, hit a wall, and conclude that you can’t build big applications with AI. I build multi-tenant, multi-database applications of real size with it, and I do it confidently. That’s not because I’ve got a better model than everyone else. It’s because I spent years in the copy-paste era, failing in slow motion, learning exactly where AI falls down and how you have to wield it as a tool instead of a magic box.
You can build serious software with AI. You just have to use it properly, and the only way I know to learn what “properly” means is to grind through the version where it doesn’t work yet.
This case study was written with the assistance of AI.