To be fair, they aren't all active projects. Some are old. Some are experiments. Some are tiny tools. Some have been abandoned, resurrected, renamed, rebuilt, or replaced by another project that I apparently decided absolutely needed to exist.
But still. I have always been the kind of person who gets excited about a new idea before I've finished the last one. AI coding tools did not create that problem.
They did, however, remove basically every obstacle that used to keep it under control.
Maybe you'd think about it for a while. Research a library. Read some documentation. Figure out how you wanted to structure it. Decide whether learning an unfamiliar framework was worth the trouble.
And ten minutes later I have a Rust project, a Ratatui interface, MIDI playback partially working, a name, a logo idea, and opinions about the layout.
This might be one of the biggest ways AI coding tools have changed how I build software.
An unfamiliar library isn't a weekend of documentation before I can touch anything.
I don't have to remember the exact configuration for every framework I've ever used.
If I want to know whether some weird idea is technically possible, I don't necessarily have to spend three hours researching it first.
I've built things with Rust that I probably wouldn't have touched yet otherwise. I've experimented with terminal UIs, local AI models, MCP servers, desktop apps, browser APIs, image tools, audio tools, little utilities, developer tools, and an unreasonable assortment of other things.
Two hours later the original project is sitting abandoned in another terminal tab wondering where I went.
Sometimes it's: I wish this command did one extra thing. It would be nice if I had a little UI for this. Why doesn't this tool show this information? I bet I could make this work in the terminal. What if this accepted pasted images directly? Could I make this local instead? I wonder if this model would run in the browser. This existing tool is almost what I want, except...
Nothing has generated more repositories on my GitHub account than "this is almost what I want, except..."
There are projects I've started where I realized pretty quickly that the idea wasn't as interesting as I thought. In the past, I might have spent days figuring that out.
The problem is that the exact same thing also makes it very easy to chase the next shiny idea.
Unfortunately, 30% is also right around where another idea starts looking very exciting.
You're creating everything from scratch. Every hour produces something visible. The architecture is clean because you haven't had enough time to ruin it yet. There are no users. There are no weird edge cases. Nobody has opened an issue explaining that your perfectly reasonable code breaks when their username contains an emoji and they're running Linux on a refrigerator.
Finishing means: fixing boring bugs handling edge cases writing documentation testing things you already thought worked cleaning up shortcuts you took during the prototype packaging deployment accessibility updating dependencies realizing the feature you added three weeks ago broke something completely unrelated
