I don't know if this is a good place for feature requests, but the only thing keeping me from switching to this at at the moment is download settings per podcast.
For example, some podcasts I don't want to miss an episode and I want them all downloaded. Other podcasts I only check in on occasionally and would only want the latest episode to be kept on device.
I subscribe to a lot of podcast and downloading and keeping every episode is going to eat up a lot of storage.
Besides that, love the simplicity of it. Well done!
Thanks! That makes a lot of sense. It actually only downloads at most 2 episodes per podcast at a time, but that's still not great for your use case. I do plan to add per-podcast settings in probably the release after next, so stay tuned for that!
I have the same requirements but started to think these use cases might be different enough to warrant different apps. So I’ve gradually shifted to those “don’t miss” ones in a dedicated podcast app and the occasional ones to Spotify. Could probably do with another app for the tiny daily ones too..
"Boost voices" is a cool feature a lot of apps have, but what is really needed is a "compress voices" feature. So many podcasters speak loudly 75% of the time, but then trail off randomly or almost whisper. Then you turn it up and they're projecting loudly again and blow your ears out. It's especially annoying in the car trying to compete with road noise.
Sure! I have a whole library dedicated to integrating Racket and Swift and you can find some of the nitty-gritty details there[1]. The gist of it is:
1. You build Racket for iOS in an interpreted mode (regular Racket works a bit like a JIT in that it needs to load code into memory at runtime, which is a no-go on iOS)
2. You link to it as a regular static library.
3. You call Racket's C API[2] to load and run Racket code.
Here's[3] a somewhat outdated video I did a while back on using that library for Mac app development. Many of the things in this video are now much simpler/more straightforward, but maybe it serves to give you an idea. I also have some source-available Mac apps built this way that you can take a look at[4, 5].
I support a number of podcast creators on Patreon, and apparently they’ll (at some stage) allow creators to have multiple RSS feeds. Until then, I’d love to be able to regex match on titles for download. This one creator I follow has about 6-7 different shows on the same feed, but I only listen to 2 of them.
I’ve been a Pocket Casts users since I can remember. I’ll +1 the CarPlay support that you mention was already on your list. The other, which they’ve recently introduced, is to disable Lock Screen scrubbing. Been a life saver!
Looks great though! I’ll keep an eye on the change long as it evolves.
> The other, which they’ve recently introduced, is to disable Lock Screen scrubbing
I was so happy I happened to read through their recent changelog and caught that. WAY too many times I accidentally swiped along the scrub bar and put myself at a random place in a 4 hour podcast episode and had to spend 5 minutes trying to figure out where I was.
The app store labels are somewhat broad, but that refers to the error tracking that the app does. When an unhandled exception occurs in the app, that error is sent to Sentry.
A botched deploy that I didn't notice ended up crashing the server, which then failed to recover when the systemd unit tried to restart it (it couldn't bind the port and ran out of retries quickly) overnight, so that's why that was failing. It's back up now and I'll put a fix in today.
The app looks really good! Based on the title I thought it’d be something you made most as a testbed for Racket so I was surprised to see the app itself actually looks great :D
I tried looking through your blog but couldn’t find anything except the 40 minute YouTube video for your other app. It sounds like both the UI and the audio-related code are in Swift? What code ends up actually being in Racket then?
That's right, the UI and the Audio Engine bits are in Swift, because it's easier to interface with those Frameworks directly from Swift (and not fight the platform). Everything else (the Database management & the models, the download manager, ID3 parsing, parsing release notes, syncing with the backend server, etc.) is implemented in Racket and is portable.
Looks cool! If I may, a couple of feature suggestions:
1. You mentioned it already but bookmarks. In particular bookmarks that can be added through iOS Shortcuts (so we can each build whatever crazy automation we need) and that can be exported (so we can keep LARPing productivity in our Obsidian vaults).
2. An "undo" function, somehow. I know this is weird but I've misclicked the seek bar so many times (esp. in the lock screen) and lost where I was... a solution for that would be so cool.
I've been using the same podcasts app for... well over 10 years. But yours looks really cool, I may just switch.
Noted! There is already an undo function, though. If you seek, an undo button pops up. Also, if you go to settings, there's a "History" view where you can also undo from.
I will definitely check it out. I've never done iOS development but I have been considering doing this very thing as a way to learn and to give myself the podcast player I really want. :) Good luck!
Can it handle feeds that aren't available on the public internet?
I have a personal feed that I can connect to over TailScale. But I've found that most podcast clients have a server-side component, which means their backend server must be able to access the feed.
I tried adding my private feed to Podcatcher and am getting "Server Error (500)".
Yup, unfortunately Podcatcher works the same way and that explains why you'd be getting that error, since the server can't access your feed. That's certainly something that it could support though, but you would obviously not get any push notifications for that feed.
[+] [-] freeplay|1 year ago|reply
For example, some podcasts I don't want to miss an episode and I want them all downloaded. Other podcasts I only check in on occasionally and would only want the latest episode to be kept on device.
I subscribe to a lot of podcast and downloading and keeping every episode is going to eat up a lot of storage.
Besides that, love the simplicity of it. Well done!
[+] [-] pvg|1 year ago|reply
If you've checked out the thing being showhn enough to have a feature request, you're doing Show HN right.
[+] [-] Bogdanp|1 year ago|reply
[+] [-] petercooper|1 year ago|reply
[+] [-] carlosjobim|1 year ago|reply
[deleted]
[+] [-] strunz|1 year ago|reply
[+] [-] Bogdanp|1 year ago|reply
[+] [-] oidar|1 year ago|reply
[+] [-] Bogdanp|1 year ago|reply
1. You build Racket for iOS in an interpreted mode (regular Racket works a bit like a JIT in that it needs to load code into memory at runtime, which is a no-go on iOS)
2. You link to it as a regular static library.
3. You call Racket's C API[2] to load and run Racket code.
Here's[3] a somewhat outdated video I did a while back on using that library for Mac app development. Many of the things in this video are now much simpler/more straightforward, but maybe it serves to give you an idea. I also have some source-available Mac apps built this way that you can take a look at[4, 5].
[1]: https://github.com/Bogdanp/Noise?tab=readme-ov-file#usage
[2]: https://docs.racket-lang.org/inside/cs.html
[3]: https://www.youtube.com/watch?v=aTvU0j4hBR0
[4]: https://github.com/Bogdanp/remember
[5]: https://github.com/Bogdanp/Franz
[+] [-] the-chitmonger|1 year ago|reply
https://docs.racket-lang.org/inside/ios-cross-compilation.ht...
[+] [-] KristijanM13|1 year ago|reply
I’ve been a Pocket Casts users since I can remember. I’ll +1 the CarPlay support that you mention was already on your list. The other, which they’ve recently introduced, is to disable Lock Screen scrubbing. Been a life saver!
Looks great though! I’ll keep an eye on the change long as it evolves.
[+] [-] hbn|1 year ago|reply
I was so happy I happened to read through their recent changelog and caught that. WAY too many times I accidentally swiped along the scrub bar and put myself at a random place in a 4 hour podcast episode and had to spend 5 minutes trying to figure out where I was.
[+] [-] Graziano_M|1 year ago|reply
[+] [-] tao_oat|1 year ago|reply
[1]: https://siftrss.com/
[+] [-] hoofedear|1 year ago|reply
[+] [-] Bogdanp|1 year ago|reply
EDIT: Oh, I just realized you might be referring to my blog, in which case I _can_ take credit for that :P. Thanks again!
[1]: https://www.chakra-ui.com/
[+] [-] sneak|1 year ago|reply
The app privacy label says it tracks diagnostics.
[+] [-] Bogdanp|1 year ago|reply
[+] [-] anonzzzies|1 year ago|reply
[+] [-] philsnow|1 year ago|reply
[+] [-] Bogdanp|1 year ago|reply
[+] [-] philsnow|1 year ago|reply
edit: oh right,
> I am still debating whether or not I want to make the app itself source available, like I've done for Franz and Remember. Maybe if there's interest.
[+] [-] jonathanyc|1 year ago|reply
I tried looking through your blog but couldn’t find anything except the 40 minute YouTube video for your other app. It sounds like both the UI and the audio-related code are in Swift? What code ends up actually being in Racket then?
[+] [-] Bogdanp|1 year ago|reply
[+] [-] sghiassy|1 year ago|reply
[+] [-] baggachipz|1 year ago|reply
[+] [-] adlpz|1 year ago|reply
1. You mentioned it already but bookmarks. In particular bookmarks that can be added through iOS Shortcuts (so we can each build whatever crazy automation we need) and that can be exported (so we can keep LARPing productivity in our Obsidian vaults).
2. An "undo" function, somehow. I know this is weird but I've misclicked the seek bar so many times (esp. in the lock screen) and lost where I was... a solution for that would be so cool.
I've been using the same podcasts app for... well over 10 years. But yours looks really cool, I may just switch.
[+] [-] Bogdanp|1 year ago|reply
[+] [-] wuliwong|1 year ago|reply
[+] [-] astound473|1 year ago|reply
[+] [-] teekert|1 year ago|reply
[+] [-] jonathonlacher|1 year ago|reply
I have a personal feed that I can connect to over TailScale. But I've found that most podcast clients have a server-side component, which means their backend server must be able to access the feed.
I tried adding my private feed to Podcatcher and am getting "Server Error (500)".
[+] [-] Bogdanp|1 year ago|reply
[+] [-] giuliomagnifico|1 year ago|reply
[+] [-] mixmastamyk|1 year ago|reply
Couldn’t find a good app for phosh and was thinking of writing one.
[+] [-] Bogdanp|1 year ago|reply
[1]: https://podcastindex.org/
[+] [-] willemlaurentz|1 year ago|reply
[+] [-] wenbin|1 year ago|reply
[+] [-] andro_dev|1 year ago|reply
- Privacy
- OPML support
- Ability to import from Apple Podcast
- Dark theme
[+] [-] hbn|1 year ago|reply
I see Windbreaker Podcast featured in those screenshots on the App Store listing. A Z̶e̶r̶o̶ ̶P̶u̶n̶c̶t̶u̶a̶t̶i̶o̶n̶ Fully Ramblomatic fan?
[+] [-] Bogdanp|1 year ago|reply