No News is Good News (part 2!)
This is an update on the project I began all the way back in 2024 where I wrote about my quest to cut the news out of catch-up radio. I often listen on catch up and don’t care much for old news. I’ll retroactively call that blog post part 1 of this series.
Anyway - since then a lot has happened and I thought I would write about it.
The 2024 project was a browser extension that skipped the news by fiddling with the player controls. While it worked, it broke almost immediately and I couldn’t be bothered to fix it, mainly because I tend to listen to music on my phone or other devices where browser extensions are not supported.
So I was staring down the barrel of vibe coding my own app/player and while coding harnesses these days are so good, I didn’t want to waste precious tokens (i.e. £££) re-implementing a player across Mac/iOS just to satisfy my irrational desire to avoid listening to old news.
This meant I put the project on ice a bit, until some point earlier this year, listening to a show and getting rudely interrupted about something Donnie T said 2 weeks ago. It was so irritating I started a conversation with an LLM about it, surely there HAS to be a better way??
…and then the agent came up with the simplest solution/idea that unlocked the whole thing wide open.
The agent said1 Daniel! You know what’s on every device, plays some form of audio, easy to distribute audio to? Keeps track of what you have played and where you have listened up to? Podcast apps! Podcast apps Daniel! You just need a valid RSS feed and somewhere to host the audio and podcast apps do the rest of the legwork!
I was annoyed I’d not thought of this solution myself2
Re-igniting the old flame
This was a revelation to me and while I was annoyed the clanker had gotten me out of my rut, it was just the sliver of inspiration I needed to get the project going again.
The first thing I did was reimplement the processing pipeline properly this time. The pipeline has actually gone through a number of iterations with the most recent looking like this.
I’ll talk about the AI model stuff in part 3 otherwise this post would get too long, but this is probably the part I iterated on the most.
Essentially the pipeline gets the episodes from the internet, transcribes them through whisper.cpp, and uses AI models to tell me where in the transcript the news segments are. If found, the audio files are edited to cut those segments out and then stored on my NAS. I implemented a bit of durable stuff via sqlite so you can replay/resume any stage of the pipeline if needed.
Then there is just a simple server running in my network that’s monitoring all the content on the NAS and constructs an RSS XML response when requested over HTTP.
With all of that in place I was ready to test the solution end to end, “just provide some RSS to your podcast app” the agent said - how hard could it be?
Podcast apps hate your network
I’ve been a long time user of PocketCasts across both Android and iOS. So that was my first port of call to import my now news-free radio show “podcast”.
Except it didn’t work.
The RSS server thing I wrote was hosted on my home network, accessible via reverse proxy. To access it at home, that means using my local DNS; away from home, connect through Tailscale.
So PocketCasts just didn’t like it. Turns out they only support podcasts that are publicly accessible
I didn’t really want to make my news-free feed available on the public internet as I’m not sure the legality around hosting someone else’s content (probably illegal?). This was for personal use only!
So PocketCasts had to go into the bin. Enter Overcast - my new best friend. Or so I thought. But no Overcast has the same public internet requirement.
I was becoming desperate at this stage, maybe the LLM’s excitement around RSS feeds and podcast apps was misplaced and I had blindly followed, enraptured by the promised land it had shown how things could be (“It should just work Daniel!”)
So yeah, while there’s loads of podcast apps out there, I’d only really heard of PocketCasts and Overcast and didn’t want to start investing in something unknown. The only other one I could think of was Apple Podcasts which is the default app installed on OSX, iOS, iPadOS and so on.
…and it worked!
It had no problem ingesting my feed, getting the artwork and playing the audio!
This was amazing!
I’ve been using Apple Podcasts ever since. While it’s not the best app, it does the job. The only downside is - I added an extra feature as part of my RSS feed to serve the transcription for each episode as well, but Apple doesn’t seem to support it - but minor quibble overall.
So yeah, problem solved at last. I’ve been enjoying listening to the radio shows news free ever since.
In part 3 of this (series?) I’ll discuss the processing pipeline a bit more because I’ve been doing a bunch of nonsense around that too which I’m excited about.
Lessons learned
- Browser extensions are awesome but difficult to share across devices. Also the one I built was hard to maintain.
- LLMs are good at surfacing ideas you might not have considered. Even the simplest ideas are often the best.
- Standards like RSS are so good, it’s amazing that podcasts keep RSS alive
- I can’t remember the conversation I had with the LLM exactly but in my head it sounded like this [return]
- Amusingly in the first post I actually say that I wanted something resembling a podcast app… [return]