RecordPile is a project I started for myself before I joined MagicSchool in 2025, partly to learn some Next.js ahead of my interviews but also solve what might be a problem unique to me. With my music collection spread across my NAS, vinyl records, and cassettes I wanted to give myself a queue of albums that I could sort by priority to incentivize actually sitting down and listening to something. I had been using StoryGraph for books which allowed me to track what I wanted to read regardless if I owned the book yet or not, so I stopped adding to my growing physical to-be-read pile. I wanted to build the equivalent of that but for music, since existing tools like Discogs and RateYourMusic didn’t meet that need for me. Plus I can stack other fun stuff on top, like a “Spotify Wrapped” equivalent and other analytics.

Demo of the RecordPile app

Now I’ll be honest, I don’t like Next.js very much because it’s convention over configuration, and the “magic” nature of it hides a lot of the configuration I actually want to access like an editable Webpack config. Plus there’s been a number of recent security incidents, and the controversial relationship with Vercel/Next.js/React makes me a bit concerned for the future of React. This planted the seed of moving RecordPile off of Next and onto a standard RESTful SPA setup. Being on flight without internet later affirmed that a Linear-esque local/offline prioritized experience was a better fit for me than SSR anyway.

I think this is the type of thing that a well-crafted Claude plan would excel at. It might struggle a bit with the transition from a hydration boundary database reads to new API endpoints but with some steering and maybe pre-migrating everything to Next server endpoints beforehand it would be pretty smooth. What Claude doesn’t “know” is all of the experiential stuff, product/architectural pivots, and what I plan on building in the future. Yes if I could forecast everything that I wanted to change I could include it in my planning prompt, but I think that some level resistance is valuable. Friction slows stuff down but it gives me opportunities to evaluate each decision as it comes up, which might prompt new ideas for architecture or even feature ideas that require further changes.

In startups the cost-benefit analysis is different because sometimes the correct business decision isn’t always the right technical decision, and as product-minded engineers we have to strike a balance between business opportunities and immediate customer delight with what’s going to be easy to maintain. That compromise is heightened by the fact that we can be whim to our worst impulses when an LLM can help ship features faster than we could ourselves. We don’t always stop to ask what the impact users feel is when their product experience is constantly shifting underneath them. Some of that is offset by intentional feature-gating and/or changing release cadences, but the increased dev velocity can be unsettling to users. We’ve all experienced frustration from a product we use suddenly changing critical things without a percievable benefit to us.

There’s also something to be said for hand-coding as a way to keep engineering skills sharp so I’m a more effective reviewer both for my peers in PRs and the output of my coding agent. A lot of my best growth moments have been from casually reading through MDN documentation because I was trying to figure something out and got distracted by some new API or CSS feature. I file those discoveries away in my brain to pull them out when appropriate, then I’m more aware of the current state of evergreen web browsers and what tools are available to me. To some degree LLMs are like Spotify in that it will recommend artists with a high level of similarity to things you already like, and you can get trapped in a little aesthetic bubble where nothing challenges your comfort zone. Rather than repeating the same code patterns over and over, we can grow alongside the abilities of browsers to write even better code.

RecordPile being completely hand-written I think is also an indicator of longevity, because we’re now in an era where open source projects can be entirely vibed over a weekend. If you decide to self-host it or have some level of investment in it there’s no garuntee it will stick around past the whims of its author. Not to say I have an expectation from open source maintainers that they support their work indefinitely, but the existence of code is no longer an indicator of effort and therefore not a litmus test of intention. I don’t know what the long-term trajectory for RecordPile is, whether it’s purely meant for self-hosting by individuals or there’s a monetization path, but it’s proven its usefulness enough that I’ve continued to add to it for nearly a year now.

None of this is meant to be an indictment of agentic coding, I use it at work when I feel like it’s the most effective tool for what I’m doing. This is simply my reasoning for why I’m not using LLMs outside of work. When a company wants to pay my subscription for Claude I will definitely use it, but when the majority of messaging from AI companies is that engineers won’t code anymore I still want to signal that software engineering is a craft that requires practice and maintenance. And maybe in a few months RecordPile will have offline support!