Technology1 min read

How Not to Build a Music Player

By · Published by Everything Blog

In short

Frustrated by unreliable web streaming and shortcomings in existing tools, the developer utilized the Zig language to build a lightweight player called AMP. Progress stalled during a four-month blackout, requiring costly black-market connectivity to access basic documentation. After relying on Claude to accelerate the work, an account termination from Anthropic and Codeberg's ban on machine-generated code forced a complete rewrite. That manual overhaul cut the codebase roughly in half while retaining the original feature set and setting up future cross-platform releases.

Key points

  • Severe national internet censorship drove the technical requirement for a completely nati…: Severe national internet censorship drove the technical requirement for a completely native, offline music playback architecture.
  • Geopolitical restrictions and automated platform policy enforcement can abruptly interrup…: Geopolitical restrictions and automated platform policy enforcement can abruptly interrupt independent open-source software development.
  • Manually purging artificial intelligence contributions halved the total codebase while yi…: Manually purging artificial intelligence contributions halved the total codebase while yielding a significantly more robust application.

Sources checked by our analysis pipeline: 1

The Twelve-Day War made me realize online music players aren’t a viable option for those who live under an oppressive regime that disconnects the internet across the country as a way to silence public opinion.

So, as soon as the connection came back, I started archiving tracks and looking for offline alternatives and discovered Strawberry. It’s a feature-rich music player and kept me happy for quite a while, but I have this habit of looking at song lyrics and singing along! Strawberry fetches lyrics from the internet when it recognizes a song, but sometimes the lyrics weren’t line-synced and worse, it displayed the timestamps next to the lyrics which I found pretty annoying to look at. I wasn’t aware of other music players such as foobar2000 which my friend just pointed me to while writing this post.

I decided to write my own music player and call it AMP with a few goals in mind: minimal feature-set, no C++ dependencies, proper system integration to make it feel like a native app, and of course, write it in Zig (including the…

Technology