OF

written by BRAD SALOMONS

vibe coder

I took the plunge, generated some code, and tracked through what I would consider an iterative indie-adjacent software development cycle so that I could document the effort. I vibe coded for you.

Step One: Forcing Simplicity

I opened up visual studio and asked for some software.

It’s a bit more complicated than that, obviously, but it is possible, maybe even likely, that you are reading this and have never experienced coding via agent. It’s not exactly an ancient art.

For this, I plugged the Claude AI[1] API into Visual Studio on a Macbook Pro, something that is not an endorsement in any way. It’s just the smoothest path which I happened to choose to pursue this particular effort. Take that for what it’s worth.

I had decided to try and build something with practical data visualizations. And there is one particular set of data I had my eye on: twenty years of saved GPS route data from a hobby in distance running. In fact, I checked and I had over 2800 logged runs totalling a little over seventeen thousand kilometres, spanning a globetrotting list of every manner of adventure.  All of it was stored in a third-party service (with it’s own API) and exportable as a standardized GPX track file.

So, my very first step was that I queried Claude: how can I build a web-based app that can visualize a GPX track on a map.

It churned for a few minutes and spat out a plan and evaluation of a platform it could build that leaned heavily into a list of python libraries and open source map sources.

I suggested it start working.

It’s first attempt returned with a studio full of code and about four thousand files (counting all the libraries it downloaded) and written almost entirely in python and localizing a flat-file database system.

This may have been a superior approach but I am both comfortable and established in writing JS and PHP that uses MySQL. I wanted something that I could not only understand but potentially maintain.

I pushed harder for simplicity; rewrite that and assume that I’m going to install it on a pretty basic shared hosting setup.

It clung to complexity.

And we went back and forth like this probably a dozen times over an hour, me peeling back layer after layer from the starting feature list until I had just a handful of things that fit: a javascript-based app that could import GPX files manually and store them in a SQL database on the server. Anything more complex and it didn’t want to do it. It was probably right, but I wasn’t here to patchwork a bunch of libraries I couldn’t edit or understand into a Frankenstein-eqsue beast. I was here to vibe code from the bottom up.

So.

The first lesson of asking Claude for anything, I learned, was figuring out how to force it to go down a particular path. In my case, even asking for a particular shape and tone in my code met with an awful lot of resistance, and finding that foundational piece that required it to go down the path I picked was the trickiest part.

It got smoother from there, committed as it was to that model, but that wasn’t the only challenge…

References

  1. ↑ Anthropic. (2023). Claude (AI). https://claude.ai/.

꠪

Brad Salomons is a time traveller and intergalactic secret agent for hire. He writes extensively about technology, creativity and life between gigs.