Dan Corin
banner
danielcorin.com
Dan Corin
@danielcorin.com
Software and AI Engineer
I write at danielcorin.com

Author of Tomo, an ambient chat app and Delta, an open source tool for conversation branching with LLMs

https://www.wvlen.llc/apps/tomo
https://github.com/danielcorin/delta
Strongly agree. I tried vibe coding to try and build a better mental model for the current limits of agents
March 29, 2025 at 5:28 AM
For now, I’m out on vibe coding but I’ll still be using models and agents often.

Tell me about your vibe coding experience and nightmares.
March 28, 2025 at 11:12 PM
In doing so I understand how my project works, learn new things as I collaborate with the agent, and keep the code in a state where it can continue to be extended. I’ll definitely progress more slowly but I won’t fly off the rails either.
March 28, 2025 at 11:12 PM
I can vibe code a fun game but eventually, I may not be able to add more features due to the unmaintainable sprawl the model eventually creates.

There is a small cost here. I have to be a touch more thoughtful as I build something to ensure the agent is staying on the rails.
March 28, 2025 at 11:12 PM
So where do I go from here? I’ve actually had immense success writing code using agents and models with my hands on the wheel. For production code, this has always been the only viable option. But for personal projects, I now appreciate the ceiling vibe coding placed upon them.
March 28, 2025 at 11:12 PM
The agent cannot be prompted to code itself out of the hole it digs. I’ve tried. I’ve told the model to identifying duplication and refactor. I’ve read the code and identified the points of duplication then told the model where and prompted for a refactor. State of the art models and agents fail.
March 28, 2025 at 11:12 PM
I need to know this in case the model misses anything, so I can step in and make the correction. If I only find out the model has been doing weird state duplication and synchronization when the agent finally stops being to make progress, it is too late.
March 28, 2025 at 11:12 PM
At this juncture, I could evaluate the plan and pull in more context in case the agent missed something. To be able to do a good job of that, I need to know the codebase, at least architecturally. I need to know how state is managed, what libraries are used, how the file hierarchy is organized.
March 28, 2025 at 11:12 PM
The agents just do things. Yes let plan, read files, make tool calls and use MCPs. But then they just *go* and that is a problem. From experience, I don’t think I ever want an agent to even start writing code without proposing a plan for what it wants to do.
March 28, 2025 at 11:12 PM
These problems can’t be anticipated. You can’t rule-write your way out of them because you rarely know what the X0,000 line codebase should look like when it’s only X,000 lines. You can write code that remains flexible and is refactorable but today only the human knows when there’s a problem.
March 28, 2025 at 11:12 PM
This becomes a problem only later when you realize but at that point the agent has made more poor decisions based on this initial one.
March 28, 2025 at 11:12 PM
The code will work and meet your requirements, but if you don’t read the code, you’re not going to realize when the model deviates in its approach from what you considerable reasonable.
March 28, 2025 at 11:12 PM
It’s too late. For every convention rule you do write there will be one you miss. The agent will invisibly write working code that makes decisions on your behalf, filling in under specified requirements, and eventually you will have spaghetti.
March 28, 2025 at 11:12 PM
Finally cracks open the code. What am I even looking at? Ever tried to grok XX thousands lines of legacy code? Not easy. Use the model to find which code to look at. State is everywhere. State in hooks. State in redux. State in zustand. I really should have written rules for conventions.
March 28, 2025 at 11:12 PM
Now the codebase has fragmented state. Viber comes back to the codebase 15 commits later. The application has grown considerably. GPUs, brrr, etc. Prompts the agent to make more changes using the state and it fails. Follow up prompts, debugging, MCPs. Why isn’t it working?
March 28, 2025 at 11:12 PM
Initially, this doesn’t seem like a problem. The agent does what it does best. Writes code to solve the problem. No shared states available in the React app? No problem, it’ll write some hooks for you. Viber validates the behavior in the browser. Looks good? Commit and ship. Never reads the code.
March 28, 2025 at 11:12 PM
Agents use search to look around a codebase to find relevant files to pull into context. You can also use rules to define how an agent should structure the codebase. At some point, often unbeknownst to the viber, the agent fails to pull a relevant file into the context window.
March 28, 2025 at 11:12 PM
Agents love to generate code. Give one a task and it is off to the races. In a new project, this isn’t the worst thing. In a project with existing functionality, this becomes a problem due to a combination of lack of context and lack of effective planning. The two go hand in hand.
March 28, 2025 at 11:12 PM
You might argue I need to use rules better or something like that. I would say that isn’t vibe coding. I interpret vibe coding as the agent addressing whatever whim I have in the realm of the possible, figuring it out for me. Mostly, I end up with spaghetti codebases that the agent cannot untangle.
March 28, 2025 at 11:12 PM
Nice! I added one a few weeks ago to my Hugo site as well. I like the category breakdown you added www.danielcorin.com/til/hugo/llm...
Way Enough - Adding an llms.txt file to Hugo
www.danielcorin.com
March 19, 2025 at 12:11 AM
If you are just using the model to repeatedly run deterministic code, you would probably be better of prompting the model to generate actual code from your spec instead.
March 2, 2025 at 11:41 PM