Skip to content

Coding Vibes

Published:
6 min read

I asked ChatGPT to generate this picture so you better enjoy it

I’ve always envied people who are incredibly proficient coders, able to take an idea or concept and bring it to life.

Unfortunately, I’ve never been focused enough to dedicate the time to any particular language long enough to really find my groove. Throughout my career, I’ve had countless run-ins with coding, mostly not by choice. IT has a way of dragging you back to the most basic of scripts, which meant I’d sometimes have to hammer my way through a problem using crude code cobbled together by yours truly. Never anything I’d be proud enough to share, and certainly nothing I ever intended to maintain long term.

That was the case until AI-generated coding exploded in late ’24 (yes, before Andrej coined the term ‘vibe coding’).

By that point, I’d had limited exposure to LLMs, mostly throwaway experimentation with early GPTs and nothing coding related. I’d just ask dumb questions, basically “Who’s the smallest man alive?”, that kind of shit.

But in late ’24 and early ’25, I started exploring code vibe coding, originally with Claude (via Cursor - pre Claude code). Claude gives me a weird sense of nostalgia now. My first foray into ‘vibe coding’ led me to a ton of random projects. Early on, they weren’t very imaginative. Some, like KasNodes (which I’m still working on to this day; I’ll write about it soon), I still play around with. Most lived and died in private repos, lost to time and eventually deleted out of shame at the quality.

Early ’25 was fun. I started a lot of projects and quickly ran into the typical Claude problems for that era of the model, and honestly still present in Opus 4.5 in my opinion. As the codebase grew past 1-2k LOC, its ability to stay on track fell apart. Like a child, it would just shit the bed. In some ways, it truly embodied the spirit of ‘vibe coding’. In other ways, it set you up for disaster, often adding 20 features you didn’t ask for and forgetting things you had spent hours documenting in .md files.

At the peak of my Claude usage, I had transitioned to Claude Code and was on the 20x max plan, having fun for the most part but mostly just banging my head against the wall as every project inevitably hit a ceiling. The pattern was always the same: strong start, great midgame, complete collapse late game - I’m sure there was tons of things i could do better to avoid this situation but i guess that’s vibe coding for you/

KasNodes was probably started or restarted around 20 times by mid March because Claude would flat out fail every single time. It ultimately limped along and produced something that was maybe 10 percent of what I had originally imagined. Maybe that counts as a win for the time, but honestly it felt like a failure. I ended up pretty burnt out on that project thanks to the amount of constant aggro I threw at the model every time it fucked up. I often found that threatening to leave it for another LLM would kick it into gear for an hour lol.

Working with Claude felt like I always had to chase the latest methodology or apparatus to patch its weaknesses. Serena MCP for memory, GitHub MCP so it knew how to git commit (Sonnet often forgot how to handle git properly) and countless other MCP’s for other misc functions. I had MCPs coming out the wazoo before I realised my actual context window for interacting with Claude was so limited that I just nuked them all.

All of that changed once I tried Codex about 3 months ago.

Codex changed everything. I had seen what other people were able to build and kept wondering how they were doing that with Claude, until I realised they weren’t.

It was fascinating. I was used to Claude, which felt like an eager child with ADHD. You would give it an instruction, look away, come back, and it had refactored half your codebase and randomly turned your frontend purple. Codex, on the other hand, was no bullshit. Sometimes I would say something to it and it would not even reply in the chat. It would just quietly dive in and fix it. At first, I was still stuck in my old Claude habits, constantly feeling the need to coax the model along and prodding it every few minutes to make sure it did not format my hdd (i like to run in yolo mode lol). Codex turned out to be another beast entirely.

I knew Codex was something else when I gave it a single instruction and it spent more than three hours analysing, researching, testing, and ultimately resolving the bug. No, that is not a reasonable amount of time to sit there staring at a prompt, but that is exactly why you open another terminal and work on something else at the same time.

Codex running for 3 hours!

It blew me away. Claude was rapid but often sloppy. Codex was slow but precise. Like a surgeon, it will happily spend 15 minutes or more just reading files before making a single edit. It is insane.

The token limit on the GPT Pro plan is also absurd. Yes, it is fucking expensive. I do not think I would have believed you if you had told me two years ago that I would be spending $200 dollars a month on an AI subscription, but nothing compares.

Even with Claude’s 20x plan at the same price, I would hit my weekly quota after two or three days, especially around the middle of the year when they kept changing the usage plans. It was still shit. In contrast, I have never hit a token limit with Codex. In the last 30 days, I have used nearly 3 billion tokens. That is insanity.

The point of all this is that nothing in AI is stagnant. The pace things are moving at makes me wonder what I will be building even six months from now. Every time a new frontier model appears, I go back through my wasteland of abandoned projects, the ones that hit technical limitations, and I just throw the new model at them. So far, Codex has blown away my expectations on every project.


Edit on GitHub