The descent into madness
Back in November of 2024 I switched from an iPhone to an Android device, stagnation and lack of innovation from Apple’s side pushed me over to the other side.
My journey began with the Pixel 9 Pro which is the closest you can get to a stock Android whilst still having an amazing photo camera (and mediocre video recording but that’s a different story). For my use case it was perfect, I don’t game on my phone at all so the speed of the SoC was irrelevant.
One of my most used apps on my phone is the Podcasts, unfortunately Apple butchered it but that’s another story. On the Android ecosystem there are a lot of alternatives but nothing that looked polished imho. I know that you might have different opinions but for me they all looked pretty ugly and cluttered.
Being a software engineer, I did the only logical thing: I ignored my actual job to tinker with a new language for a Real Need™. Who needs weekends? Having some React experience, I gravitated toward React Native. I quickly learned that deep OS integration -Android Auto, “Now Playing” hooks, and seamless background audio, isn’t a walk in the park. It felt sluggish and brittle.
I pivoted. Surely Flutter was the answer? After several late nights cursing the compiler and my own hubris, I realized I was fighting the abstractions.

I decided to go native. With some (admittedly dusty) Java experience, I jumped into Kotlin. Turns out, the transition wasn’t as painful as I’d feared. While my backend-leaning brain handled the data models and architecture fine, the initial UI… well, it looked like a backend dev built it.

The initial screens and styling looked pretty rough, but for the first time in months, the app didn’t feel like a layer of abstraction fighting against the hardware. It felt like it was finally part of the OS.
The descent was complete. Now, it was time to actually build the thing.
Stay tuned for Part 2, where I tackle the nightmare that is Android Media3 and try to make a UI that doesn’t offend my eyes.