Using coding assistance tools to revive projects you never were going to finish

The author explores how AI coding assistants like Claude Code can help developers complete long-abandoned personal projects by handling tedious implementation tasks and boilerplate code.
Note: I initially drafted this before my last post on how Claude Code is getting worse. I'm putting it out now so I can reference it in a future post on OpenCode. As you can imagine my opinion on Claude Code has shifted since I wrote this.
Long ago I attempted a personal project, but never finished due to life being busy. Sort of like the Japanese word Tsundoku, for the pile of books you intend to eventually read one day. We all have these projects and they are good candidates for testing out AI coding assistance. After all, they were never going to get done anyway.
The POC I put together was a shim between YouTube Music and the OpenSubsonic api. Explaining OpenSubsonic could be its own article, but for our purposes it's an API contract for nicely decoupling music streaming clients and servers. You can pick your own options for both. In my case I like Navidrome for the server, Feishin for desktop, and Symfonium for Android.
Anyways, the shim made YouTube Music conform to the API so I could add it to any of my clients. Under the hood I used ytmusicapi for metadata lookup and programmatically called yt-dlp to stream the music. Getting basic streaming working was pretty simple. However, there was a long tail implementing all the endpoints in a conformant way. Then as always, there were new shiny projects that stole my attention away.
Luckily, nothing was really novel in that streaming project, and there is a clear spec to implement which is perfect for assisted coding. So a month and a half ago I thought I would test Claude Code with Opus 4.6 and see how it did implementing the project from scratch.
The setup
Since I had already written a proof of concept by hand, I had my own opinions about the implementation and laying all of that out beforehand constrained the tool in a nice way. I created a uv project with fastapi, pydantic, ytmusicapi and yt-dlp as dependencies, and added a CLAUDE.md file to define coding conventions like type annotations and Pydantic V2 usage.
Implementing the MVP
With that setup done, I let Claude kick things off. The workflow I typically use involves entering plan mode, prompting for the next piece of work, and iterating based on gaps or problems. The first major prompt was to implement an async fastapi server that stubs out all methods from the openapi.json spec.
I got an implementation that looked reasonable pretty quickly, but fell over when trying to actually connect with Feishin. At that point I iterated by testing the client and handing the server request logs to Claude Code. I was shocked to hear the audio streaming through feishin after only a couple of iterations.
Working through the long tail
The rest of the work was the less interesting, more drudgery parts to make the project actually usable. OpenSubsonic has ~80 endpoints. I added simple in-memory caching, used SQLite for metadata, and implemented logic to save songs to disk as they streamed to avoid redownloading.
All together I was able to get a working service that I could connect to from a subsonic client in a short evening. In the end I dubbed the project "Sub-standard".
Is this good?
I don't want to sound like an AI coding assist booster. I still have fears around deskilling from relying on these tools too much. In my mind there are different buckets for personal projects. One is things I do to learn and grow and the other is things I really wish existed. This kind of project falls into the second bucket. Using AI coding assist to reify those projects is sort of a form of wish fulfillment.
Source: Hacker News
















