11 August 2025
For our local art collective, Susquehanna River Creative Collective (SRCC), I setup some Raspberry PIs connected to televisions to display our flyers advertising benefits of membership and upcoming events.
The machines are behind a firewall and running on a read-only overlay filesystem for resiliency, so I had the machines periodically pull the event images from the website, and I can change out the images on the website any time.
This was all done with desktop autostart scripts
and cron
for quite some time,
but eventually, we needed more control.
We wanted to have different sets of images and to be able to choose them. For a show, we may want to only show the logo, while other times might call for all the normal advertisements.
The machines have no keyboards or mice, so they needed to be controlled by a web browser. I also don’t know if they’ll start up on the same IP addresses, so I needed a bit of Javascript in a static place to have the browser search and find running slide servers.
The service on each machine
now runs as a babashka script that starts upon automatic login.
It pulls new images from the website
and from a Google Drive,
periodically refreshes them,
and starts Eye of Mate (eom
)
to run the slide show.
The babashka script
also starts a small web server
on http-kit
to let us
to choose image sets
and to trigger a refresh of the images.
http-kit
is provided by default in babashka.
The SRCC website is a static site built with Hugo, so I add all the events to it via an image or 2 and some YAML. It’s hard to train another normal person to do this stuff, so the responsibility fell exclusively on me. I scripted it up with some bash, but that’s still only accessible to me.
Finally, I’ve been coding all Clojure code for the past couple weeks, and I’ve started playing with Gemini CLI to see what it can do with some Clojure code.
I now have a web form available to
allow others to create events
for the website,
and it interacts with git
for publishing to the Hugo site.
The service is deployed on my normal Linux servers
as a container run by podman kube play
and systemd quadlet
.
I can direct Gemini to make changes or add features, and I review the code, ask for corrections or just make updates myself. It’s kind of like pair programming with someone who’s really good at Googling answers and jumping to some (mostly) useful conclusions. Having the AI agent has helped maintain some momentum and saved me jumping down some deep rabbit holes before I needed. I’m asking it for small changes and iterating, not trying to get it to do everything in one shot.
Gemini’s CLI interface makes it easy to switch to another project directory and let it try some stuff on lots of my projects recently.
I had also played with Claude CLI for a day, but Gemini’s free tier is proving capable enough for me so far.
03 November 2022
I have 73 feeds I currently follow. I have a whole system of prioritization, so I can listen to important things first. I’ve listed them alphabetically here:
99% Invisible https://feeds.simplecast.com/BqbsxVfO
All About Android (Audio) https://feeds.twit.tv/aaa.xml
All Songs Considered https://feeds.npr.org/510019/podcast.xml?uid=n1qe4e85742c986fdb81d2d38ffa0d5d53
Android Central Podcast https://androidcentral.libsyn.com/rss
Arrested DevOps https://www.arresteddevops.com/episode/index.xml
At Liberty https://feeds.soundcloud.com/users/soundcloud:users:40330678/sounds.rss
Back to Work https://feeds.fireside.fm/backtowork/rss
The Best of Car Talk https://feeds.npr.org/510208/podcast.xml
The Candid Frame: Conversations on Photography https://thecandidframe.libsyn.com/rss
CaSE: Conversations about Software Engineering https://www.case-podcast.org/feed/aac
The Changelog: Software Development, Open Source https://changelog.com/podcast/feed
ClojureStream Podcast https://feeds.soundcloud.com/users/soundcloud:users:627190089/sounds.rss
Cognicast https://feeds.feedburner.com/cognicast
The Daily https://feeds.simplecast.com/54nAGcIl
Darknet Diaries https://feeds.megaphone.fm/darknetdiaries
defn https://feeds.soundcloud.com/users/soundcloud:users:220484243/sounds.rss
Distractible https://feeds.megaphone.fm/QCD8163454930
Do By Friday https://feeds.simplecast.com/5nKJV82u
Do By Friday After Show (Private Link)
Don’t Ask Tig https://feeds.publicradio.org/public_feeds/dont-ask-tig/itunes/rss.rss
Engineering Culture by InfoQ https://feeds.soundcloud.com/users/soundcloud:users:258266127/sounds.rss
Escape Pod https://escapepod.org/feed/podcast/
Everything is Alive http://feeds.everythingisalive.com/everythingisalive
FLOSS Weekly (Audio) https://feeds.twit.tv/floss.xml
The Fox News Rundown https://feeds.megaphone.fm/FOXM1880458659
Freakonomics Radio https://feeds.simplecast.com/Y8lFbOT4
Functional Geekery https://www.functionalgeekery.com/feed/mp3/
Global News Podcast https://podcasts.files.bbci.co.uk/p02nq0gn.rss
Grammar Girl Quick and Dirty Tips for Better Writing https://feeds.simplecast.com/XcH2p3Ah
Groovy Podcast http://groovypodcast.podbean.com/feed/
Hacker Public Radio http://hackerpublicradio.org/hpr_rss.php
Hanselminutes with Scott Hanselman https://feeds.simplecast.com/gvtxUiIf
Hidden Brain https://feeds.simplecast.com/kwWc0lhf
How I Built This with Guy Raz https://rss.art19.com/how-i-built-this
Interview Podcast – Echoes https://echoes.org/category/program-highlights/interviews/feed/
Jeffery Saddoris: Everything https://pcr.apple.com/id1438550795/
JS Party: JavaScript, CSS, Web Development https://changelog.com/jsparty/feed
JUXT Cast https://feeds.feedburner.com/JuxtCast
LensWork - Photography and the Creative Process https://www.lenswork.com/podcast.xml
Linux Inlaws https://linuxinlaws.eu/inlaws_rss.xml
Lost in Lambduhhs https://anchor.fm/s/581d4eb4/podcast/rss
Marketplace All-in-One https://www.marketplace.org/feed/podcast/marketplace-all-in-one
The Mortified Podcast https://feeds.feedburner.com/MortifiedPod
No Stupid Questions https://feeds.simplecast.com/dfh_verV
NPR News Now https://feeds.npr.org/500005/podcast.xml
Oh No, Ross and Carrie https://feeds.simplecast.com/ftB6Gihc
On the Media https://feeds.feedburner.com/onthemedia
People I (Mostly) Admire https://feeds.simplecast.com/rP60Wf24
Podcast – Cory Doctorow’s craphound.com https://feeds.feedburner.com/doctorow_podcast
The REPL https://feeds.therepl.net/therepl
Security Now (Audio) https://feeds.twit.tv/sn.xml
Smashing Podcast https://feeds.transistor.fm/smashing
Software Defined Talk https://www.softwaredefinedtalk.com/rss
Software Engineering Radio - the podcast for professional software developers https://seradio.libsyn.com/rss
Song Exploder https://feed.songexploder.net/SongExploder
The Stack Overflow Podcast https://feeds.simplecast.com/XA_851k3
TED Radio Hour https://feeds.npr.org/510298/podcast.xml
This American Life https://www.thisamericanlife.org/podcast/rss.xml
This Week in Tech (Audio) https://feeds.twit.tv/twit.xml
Thoughtworks Technology Podcast https://thoughtworks.libsyn.com/rss
Wait Wait… Don’t Tell Me! https://feeds.npr.org/344098539/podcast.xml
Welcome to Night Vale http://feeds.nightvalepresents.com/welcometonightvalepodcast
What’s Your Problem? https://www.omnycontent.com/d/playlist/e73c998e-6e60-432f-8610-ae210140c5b1/32c25e85-1667-4acb-99fd-ae3c0021f33e/beacef48-19d2-4f52-b9e8-ae3c0021f347/podcast.rss
Wicked Good Development https://anchor.fm/s/81a22db8/podcast/rss
Wrong About Everything https://wrongabouteverything.libsyn.com/rss
WTF with Marc Maron Podcast https://feeds.acast.com/public/shows/62a222737c02140013aa4c03
You Are Not So Smart https://feeds.simplecast.com/N5eKDxJI
24 August 2022
I’ve used BeyondPod for over 10 years, since my first Android phone, to download, organize, and play podcasts. For at least the past 4 years, maintenance and updates to the application have slowed to a crawl. I had paid a one-time fee for the application, so I guess I couldn’t think they owed me updates forever.
I would try to find a replacement every once in a while, but the other podcatchers always lacked some feature upon which I relied. Even Podcast Addict fell short the last time I tried it about 4 years ago, but it’s been getting lots of updates.
SmartPlay allowed me to organize my 74 podcast feeds into 3 or 4 tiers. This allowed me to ensure the quick, timely podcasts were played first before the longer podcasts that could wait for days or weeks. I even managed to create one tier that played chronologically, which is opposite of all my other podcasts.
For each podcast, I could boost the volume, adjust speed, and have it only keep the latest so many episodes.
It had a button to skip the rest of a podcast to quickly get to the next one.
It liked to just stop playing and crash occasionally.
It was increasingly abandoned and unmaintained, so I didn’t trust it would continue to work when Android 13 hit my phone.
I could export my OPML file, but it went to a private filesystem that can no longer be accessed by file managers in newer versions of Android.
BeyondPod never updated to use the standard media controls and kept its old notification-based player.
There was a race-condition bug when skipping forward through the end of an episode: it would skip way into the next episode.
The catalog of podcasts has stopped working, so I could only add podcasts by URL, which is fine, but less convenient.
Podcast Addict can play at even faster speeds, though I’ve not taken advantage of these speeds: I’m still listening at 2-3x speeds.
For each podcast feed, I can set custom volume boost, speed, and auto cleanup by age or count of episodes.
When an episode is finished, it automatically moves it to a Recycle Bin or 24 hours, so I can go find it again if I want to refer to it again, or completed it by accident. In BeyondPod, I had to "delete played" occasionally for myself to give myself time to review and recover what’s been played.
I can assign a numeric priority to the podcasts and sort by it, so I can easily ensure my favorite podcasts play before others when they’re available just like BeyondPod’s SmartPlay, but even more conveniently.
"Smart Priorities" automatically increments a podcasts priority when I manually click an episode to play before others. In practice, this moved things around more than I wanted, so I disabled it and fine-tuned the priorities by hand as I saw them slightly out of order.
I can see artwork for each episode. I didn’t even know there was per-episode artwork.
I also never knew chapters were a thing in podcasts. Now I can see chapters for the couple podcasts that provide them.
Skip silence works well, but it’s super-weird for story podcasts, since it eliminates all hints of punctation.
These latest features are working really well, so I’m excited everytime I get to see the software in action. I expect to see even more features showing up in the frequent releases of Podcast Addict.
There’s a Getting Started guide which intuitively walked me through the things I’d likely want to configure, and I immediately recognized all the features I wanted. I was confident Podcast Addict would work for me, so I set it up completely, and signed up to pay the annual subscription fee to help make sure they keep updating it.
I made the transition, and I love Podcast Addict. Listening to podcasts is easily my #1 pastime, so it’s important that I found the perfect software.
2022-09-23: Player→Settings→Controls→Skip Outro=95% let’s me hit the forward skip button in the last 5% of a podcast and finishes the whole episode instead of skipping only 20 seconds as it usually would. This saves a couple taps to get past the last bit of credits or closing music.
30 August 2020
I have a good bit of music I had acquired and ripped in the late 90s and had purchased from Amazon later. That all lives in a directory on my big computer. I never play anything from there, and it just sits there for safe keeping.
I continued to purchase DRM-free MP3 files from Amazon Music, and I eventually embraced their "free" streaming with Amazon Prime. I could add available music to my collection for free, and then stream it along with the stuff I bought, so it’s nice and blended. This allowed me to easily toss a new album or artist into rotation, and if I really want, I might purchase it to keep.
The Prime streaming service had some limitations with some music I wanted to sample being unavailable, and sometimes, I’d notice some of the free music disappeared from my collection. I decided to pay the little bit for the Unlimited Music plan, and that made almost everything available. I notice very few cases of music becoming unavailable, so now I don’t bother buying downloadable MP3s except in rare cases where I want to be able to use a song on another device outside the Amazon Music client.
I don’t really use the stations at all on Amazon Music. I don’t feel the need to hear large numbers of new songs all the time, so I have a smaller curated list of podcasts and DJs where I discover new music to add to my collection at Amazon:
All Songs Considered at NPR Podcasts
Echoes Interview Podcast for chill ambient electronic music
Song Exploder Podcast for extended discussion on the anatomy of a song
Shadowland the monthly Goth/Industrial party
DJ Neidermeyer for 80s and 90s Music I may have never known or had forgotten
I had uploaded all my music to Google Play Music years ago, but there had always been news of the service’s eventual demise. It’s finally migrated recently over to YouTube Music, and they seem to have reintroduced the ability to upload my own music. I’ve paid for YouTube Premium, so I have YouTube Music as well, and this could be a nice alternative. I have a few albums uploaded there which I can’t find on Amazon. I don’t think I can buy music there, though, and I’ve already purchased a good bit of (DRM-free) music on Amazon.