How Not to Build a Music Player
The Twelve-Day War revealed that online music players were not practical for people living under oppressive regimes that disconnected the internet to suppress public opinion. Once the connection was restored, the author began archiving tracks and searching for offline alternatives, discovering Strawberry, a feature-rich music player.
However, Strawberry fetched lyrics from the internet and displayed timestamps next to them, which the author found annoying. After hearing about alternative music players like foobar2000, the author decided to create their own music player, AMP, with goals such as a minimal feature-set, no C++ dependencies, proper system integration, and writing it in Zig.
They also wanted to develop their own UI due to their experience working on a similar UI during their early system programming days.
A subsequent internet blackout lasting over four months forced the author to search for alternative means to access the internet, including buying expensive internet access and relying on a black market. During this time, the author focused on building AMP, which brought them joy despite the challenges. After a period of using an LLM (large language model) to assist in coding, the author found themselves unable to review the thousands of lines of code generated.
Anthropic banned the author's account for using the LLM, and Codeberg announced its no-AI policy, forcing the author to rewrite the codebase or move the repository. After four months of rewriting nearly half of the codebase, the author ended up with a more robust version of AMP, retaining the same features. The author regrets relying on LLMs but believes it's still possible to have a healthy relationship with them as long as they are viewed as a fancy IDE feature.
The author will now stick to traditional methods of coding. They also mention that the blur shader in AMP was written in Zig, inspired by a blog post.
Written by urgent.news from Lobsters's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.