Last week I spent a couple hours building myself a guitar tool. I map the guitar to a UI component and quiz myself on how to find the notes. It seems simple, and is, but I use a bunch of math tricks and connections to make it easier.
To “pass” my self paced class I needed to find the notes within 2 seconds. This test is common amongst the guitar learning community. To generate the next option I was told to buy a 6 sided and 12 sided die.
As a developer I figured this should be coded up so I started on the task. Mind you, I have not built a website since college. Even then, it was annoying.
In comes AI. I used O1 instead of gpt4o and made my first attempt in 10 seconds. By just defining the product.
Completely buggy, but it started to look like something. The frets correspond to the 6 notes I needed to recall quickly in 5 positions on the guitar. I can go into more details on the specifics but for now, lets assume notes are somewhere, and I need to know what note is where.
A few prompts later and I had something that looked ok. Looks, unfortunately, were all that mattered. The rest I could fix myself.
Better.
Almost, but it really had a funny take on the guiding dots.
This take on a guitar nut was hilarious. And, honestly, it was the hardest visual to pin down. I assume I could have dived into the css at this point but I was intent on not touching html/css until absolutely necessary.
Still no guitar nut after 5 iterations. Luckily, the iterations are quick.
I still was not done but within 30 minutes, I went through 20 iterations before I started looking into the code.
This was my last generated UI. It was really close to the final goal. Each of the frets is clickable and I added some UI components after for a current final version.
It works. I use it to practice and I hosted it for really cheap so I can share it for free at Songs from Scratch
This experience was a bit jarring. On the one hand, I made my tool really quickly. And I am sure many people can make simple websites hosted on GitHub pages that solve their problems for 0 to 4 dollars a month. That is amazing. On the other hand, I did not learn nearly anything during the experience.
I am reading through the html and css only now. A few days after completing the task. Since I want to create a whole suite of tools, it makes sense to familiarize myself with the fundamentals. But, I am not sure if most people do.
Also, AI leads to really awful git practice. Given the AI’s limitations, I asked for a single page website to start. And went through 24 versions. All of which had too many changes in-between them. I suspect Cursor or Kline may help with this so I will look into them for my next UI work, but, overall, it led to bad practices.
Luckily, I learned to code before all of these fancy tools worked. So I can refactor a working product and dive into breaking bugs. For example, the notes were really odd to start. So I explained to the AI that representing notes as numbers and doing modular arithmetic makes it easier. However, the AI knew guitar strings are reversed. So, after it generated a full page of code I kept noticing the notes being off. After digging in I realized they were mirrored, I fixed the issue. BUT, only locally. The next iteration the issue came back. Until I explicitly told the AI it reversed one but not the other. This led to it not reversing anything. Which was also wrong.
AI felt like a very enthusiastic dev student. Not a developer yet, but willing to get its hands dirty. For me, this fits perfectly with the UI code that has stopped me from pursuing entrepreneurship. I will read through every line of code, but, only retroactively. No need to build domain knowledge on how to put a footer right above the end of the website instead of in the middle.
The AI yet does not help with the core issue either. It can get me the scaffolding done in a much faster way, but the core problem tends to require my input. This has led me to send back the full file each prompt. It is definitely an expensive use of tokens, but it is the only way I was able to maintain a reasonable git log. I also tell the AI to make the minimal changes needed to have less scope creep.
All in all. AI is useful but not all powerful, for now. I will build many tools for a lot less effort than I would have needed a few years ago. I built this widget in 2 hours after not having worked on web for 8 years.
Next stop, processing acoustics. This has always been a fascinating topic that is related to but not exactly like the NLP work I love. For now I am reading through some research to build a not registration setup. My next tool will help me practice playing a note on any of the 6 strings and measure the time between the question and my having played the note. Possibly in two octaves.