Reflections on software engineering in the age of AI

GOATS-1 pts0 comments

Reflections on software engineering in the age of AI | JP's Blog

Reflections on software engineering in the age of AI

2026-08-06

In September 2025, I had the idea to revive my self-hosted music streaming platform Coral. I had just discovered the website cosine.club and was blown away by how accurate the recommendations were for electronic music. I found out that it was using public machine learning models from Essentia and thought of a way to integrate it into Coral. The way the website works lies in its name, it uses Essentia’s inference pipeline and models to get audio embeddings, which are searched through via a vector database using their cosine distance. The lower the cosine distance is, the more similar the embeddings are and thereby the more likely the tracks in the list are to match.

I started by using their Python-based inference pipeline, which uses their C++ library under the hood to get my embeddings and built an inference API to use in Coral, which worked, but was complicated to distribute to users who weren’t using Docker. I had recently learned about .NET’s Platform Invoke capabilities, which allows you to call unmanaged code from C# and thought that it’d be relatively easy to call Essentia’s C++ library from C#. Needless to say, I struggled quite a bit having never built a C++ library before - and Essentia was no easy build.

After a lot of research and struggling, I ended up using Gemini and Claude’s chat interface to create a C-style wrapper for the C++ library, exporting the functions I needed to call from C#. At this time, I was copy pasting code in and out of Gemini, which was a painful experience - then I tried Claude Code. I managed to call the wrapper from C# and I was super happy to see it all working, except for one major problem, the library suffered from severe memory leaks. After scanning about 500 tracks, Essentia’s library had consumed all of my memory.

Essentia’s memory leak after ~500 tracks

I had to fix the memory leak somehow and together with Claude, I figured out that the best way to solve the issue was by spawning an ephemeral CLI process which ran per track. This also meant that I could easily parallelize the process of getting track embeddings. This was also around the time when I started the frontend rewrite to use React Native instead of React, so that I could listen to music on my phone. It was at this point I got hooked, if it could figure out how I could use Essentia’s tooling in Coral, surely it could also figure out how to rewrite my frontend.

It was crazy to me to feel like I had the music player of my dreams within arm’s reach. Over the course of 3 months, Coral got a gapless audio player, a desktop client powered by mpv which could play any audio format under the sun, a recommendation engine which worked incredibly well, bulk inserting rows in its SQLite database for rapid indexing of music collections, full-text powered search for instant lookups, an aesthetically pleasing user interface and the list goes on.

The back and forth process with Claude was fun in the beginning, but when bugs started appearing, I went into the codebase and realized that I didn’t understand most of what was going on anymore. Coral wasn’t my project anymore, it was Claude’s. I lost the sense of ownership of my codebase, trapped in a pile of technical debt and sadly ended up upgrading to their Max plan so it could continue working for me. I kept paying for the Max plan for a few months until I ran out of steam, until I got tired of prompting and became sad about losing ownership of what once was my favorite project.

I am however glad to have experienced what it was like to work with coding agents in a personal project, because 4 months after using them in Coral, my manager asked me “why aren’t you using any AI tools to do your work?”. I told him about my experience using Claude Code, both how productive I became, but also about the feeling of losing ownership and not knowing my way around the codebase anymore - to which he responded something along the lines of, “upper management wants engineers to start using AI tools more and you are one of the few people with no AI usage in the last few months, give it a shot and see how it works out for you”. My employer gave what seemed to me like an unlimited token budget to spend with Cursor - and the cycle repeated itself.

It has now been 6 months since my manager asked me to adopt AI tools in my day-to-day work and I’m worried about the trends I am seeing, as well as the impact it has had on my personal satisfaction and happiness at work. While browsing through Hacker News last year, I stumbled upon this article, which really resonated with me.

Technical Work as Emotional Regulation

I believe sometimes building things is how we self-soothe. We write a new tool<br>or a script because we are in a desperate need for a small victory. We write a<br>new tool because we are overwhelmed. Refactor it, not because the code is messy,<br>but...

using coral essentia from library claude

Related Articles