Blog

  • Podcast app journey 2

    We are getting somewhere

    Back in November of 2025 I took an overnight flight to Bengaluru, India for a work trip. It was an amazing experience but most importantly during the late hours of the night, in the dimly lit cabin of the beautiful Boing 777, I got my colour scheme inspiration.

    The dreamy deep purple colour of the dark cabin combined with the coral light in the toilets of all places looked perfect.

    The theme for AudioWeave started taking shape. The aesthetic of an overnight flight really clicked with me, the podcast app is taking you on a journey in a silent cabin with only the droning noise of the engines coming through your noise cancelling headphones. A journey of sorts through the mundane commuting or chores around your house.

    Being a sucker for the aesthetic, I should have spent weeks in Figma. But I’m a dev, I have an IDE waiting for the next keystroke. I jumped straight into Jetpack Compose. Since I already had the layout concepts from my failed Flutter experiments, translating those into Kotlin felt surprisingly fluid.

    I wanted the UI to feel like that cabin: dark, focused, and out of your way.

    The colour palette, excuse the use of AI but i’m really rubbish at design

    So with the screens ready I had to think long and hard about bits that I missed from other podcast players and define all the areas that I wanted the app to be different. The core values if you like:

    Manifest

    • Privacy Focused: No trackers, no data-brokering. It’s a tool, not a spy.
    • True Offline-First: Thumbnails and metadata shouldn’t vanish just because you’re in a tunnel. If the app has seen it once, it should remember it.
    • The “Anti-Lock-in” Policy: Easy OPML imports and exports. Your data is yours; you’re just using my interface to listen to it.
    • Anti-Clutter: Auto-hiding trailers and promotional “spam” that clogs up subscription feeds.
    • The Digital Archivist: The ability to pull MP3s out of the app’s sandbox and into your own storage for posterity.
    • Clip & Share: Turning a long-form medium into shareable, bite-sized insights.

    The technical implementation

    At its heart, the app architecture is fairly standard. It’s backed by a Room (SQLite) database that acts as the source of truth for your subscriptions and that all-important where was I? episode progress. I went with a classic Repository pattern, it doesn’t care if it’s parsing a badly formatted RSS XML (and believe me I found a lot of them during this phase) feed from the iTunes API or fetching a cached episode from the local disk. It just works.

    On paper, Google’s Media3 library is the unified future of Android playback. In reality, it’s a sprawling beast that reminds you exactly why audio is hard. Integrating the MediaSession so that your play button actually works, handling audio focus so a rogue notification doesn’t deafen you, and ensuring the background service doesn’t get nuked by Android’s aggressive power management… it’s a lot. There were many nights where I sat in my bedroom office staring at the screen, wondering why a play button was the most complex thing I’d ever built.

    But once it clicks? It’s satisfying. There’s something deeply rewarding about seeing your custom app working, and the biggest reward was when I first used the app and trusted it enough to download a full season of my favourite podcast to listen on a plane. I don’t do movies on flights myself, so I took a gamble with my own coding – and it worked. It has since accompanied me many times whilst commuting to the office through the crap network stability around Waterloo Station or the blank spots in the “beautiful” journey through the Central Line.

    Just look at how far we’ve travelled…

  • Podcast app journey 1

    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.

    Flutter early concepts

    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.

    first iteration of styling on Kotlin – we are cooking

    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.

  • Devil’s Punch Bowl

    Devil’s Punch Bowl

    Total distance: 13583 m
    Total climbing: 434 m

    Details

    Length13.5 km (8.4mi)
    DifficultyModerate
    Duration3 – 3.5hrs
    Rating★★★★★
    LinkAllTrails

    Hiking the Devil’s Punch Bowl: A Moderate Loop Near SW London

    Looking for a satisfying circular hike with impressive views, conveniently close to South West London? The Devil’s Punch Bowl in Hindhead fits the bill perfectly. Located just a roughly 45-minute drive away, it offers a great escape into nature.

    Getting Started & Parking

    The main trail kicks off right from the National Trust car park. Be warned, it gets busy, especially after 10 am. I opted for an early start around 7:30 am on a pleasant mid-April morning and had the paths mostly to myself until the final kilometre.

    Parking fees apply (as of my visit): £2 for 1 hour, £4 for 2 hours, £6 for 4 hours, or £9 for all day. National Trust members park free. While some free parking might be found in the nearby village, I was happy to pay, assuming the funds contribute to maintaining these beautiful trails.

    Right near the car park, you’re immediately greeted with a fantastic viewpoint overlooking the dramatic bowl and a helpful 3D relief map showing the valley’s contours. (For the geologically curious, the National Trust website and Wikipedia have detailed information on its formation).

    The Trail Experience: A Hike in Three Acts

    I found the trail offered a pleasant mix of terrain – single tracks, wider forest paths, and even a few short road sections. For me, the hike naturally broke down into three parts:

    1. The Initial Loop (Towards the A3 Tunnel): Starting clockwise from the car park, this section offers those initial sweeping views but also introduces the hike’s main drawback: the A3.
    2. The Valley Descent (Towards Hurt Hill): After heading towards the A3 tunnel viewpoint, the path descends. As you drop lower and turn westwards towards Hurt Hill, the scenery remains lovely, and thankfully, the traffic noise begins to fade.
    3. The Return Climb: This final section feels the most remote. The A3 hum disappears, replaced occasionally by the distant sound of a train. It’s also the hilliest part of the walk, though nothing overly strenuous. The most significant climb comes towards the end, just before reaching the flatter path leading back to the car park around the 12km mark.

    A Note on Noise

    One thing often missed in trail descriptions (like those on AllTrails) is the persistent drone from the A3 motorway. You can hear it clearly throughout the first section and parts of the second. For me, this constant hum did detract somewhat from the feeling of being truly ‘out in nature’. It’s a trade-off for the area’s excellent accessibility, but definitely something to be aware of before you go. The final third of the hike, however, is much quieter.

    Overall Thoughts

    Despite the traffic noise in the earlier sections, I thoroughly enjoyed this hike. It felt easier than some online descriptions suggested, offering a good workout without being excessively challenging. The accessibility from SW London is a major plus. If you can tolerate some background road noise for the stunning views and convenience, the Devil’s Punch Bowl is a rewarding day out.