I made a podcast player for iOS. It’s called Podcatcher and
it’s live on the iOS App Store! As with most
things I’ve made in the past several years, it’s
implemented using a combination of Racket and Swift. This
approach continues to be a very fun and productive way for me to
write apps, and working on these projects has allowed me to refine
it further. For example, I’ve recently added async support to Noise
and made it compliant with Swift Concurrency while maintaining
backwards-compatibility with the existing implementation based on
Future
s.
Why a podcast player? Because I listen to podcasts a lot (like a lot,
a lot, a hundred hours a month a lot) and the podcast player I used
to use recently made some changes I didn’t like, so I decided to make
an app suited to my liking and listening style. As you might expect
from a modern podcast player, it’s got audio enhancements like an
equalizer that boosts voices, silence trimming, variable speed with
pitch adjustment, and a “shower mode” that boosts voices further,
trading quality for loudness when you need it. It’s also free, has no
ads or tracking, and it’s local-first except for the podcast directory
and sync. There is a backend component that ingests podcast feeds
periodically and sends push notifications to the app to update its local
data