Why re-invent the wheel?

Is it so wrong to do it?

For the past week or two, I’ve been thinking about building my own coding agent; for fun and for learning.

Claude Code feels too magical to me. The other day I used it in VS Code’s terminal for the first time, and it autonomously decided to install itself as a plugin in the code editor.

I don’t like automatic updates either, I should at least be asked. Mario Zechner mentioned something along these lines in one of his presentations, and when I use PI, I am asked about updates.

So why not just use PI, since it’s extensible? Yes… but the learning is the part I want. Besides, I don’t like NPM packages, and I want to experiment with agents running on my own servers, so I need something that can ship as a single compiled binary.

And why do I want my own coding agent? I have a gut feeling I won’t get the same kind of “magic”, those one-shot wins I sometimes get with Claude Slot machine. But I still want to try. Isn’t that the whole vibe of being a hacker?

The next question is which language to use. I considered TypeScript, Rust, Python, and even Zig, but I’m going with Go, even though some people have already done it.

It’s a little ironic, because Go came out of Google. Many “good developers” consider it too simple, it ties your hands and won’t let you be clever with fancy solutions. But maybe that’s exactly what makes it appealing. It was originally created in part by Rob Pike, who taught me that concurrency is not parallelism back when Python was just starting out with its async implementation.

I don’t know, it just feels like the right call to use Go. I have my arguments, but I also have my taste.

So, why re-invent the wheel? Because it’s how we learn. And if there’s one thing we’re giving up to AI, it’s our chance to keep learning.

Over the coming days and weeks, I’ll be posting a series about this journey of building an agent, and making it public.