A Mac Podcast App You Can't Have
stephenradford.me
stephenradford.me
How does he get the UI working so fast and looking so good? How do you reverse engineer an API - this seems like some hacker stuff you'd see in Halt & Catch Fire, in my mind anyways.
I'm sure I'll get there, but right now there's a major disconnect between the C investment calculator text program I made, and these super functional, beautiful works of art.
Once you work in a domain enough - pretty much any domain - you begin to intuitively understand the assumptions that others in the field make. In the case of reverse-engineering the API, he would be able to take an educated guess that eliminates 95% of the possibilities because he can think of how he'd design the API, which is probably close to how other competent people would do it too. That experience is invaluable in making rapid decisions that are going to be 'close enough' a lot of the time.
W.r.t the UI, if you have a package of choice that you use frequently enough, you begin to be able to piece together the building blocks quickly. You have all of the boilerplate code required to make it work more or less committed to memory or, at the very least, in other examples that you can just copy/paste and modify.
Uni isn't really about this experience. The coding you do is essentially just a domain-relevant conduit to help you learn and demonstrate competency over the theories. Uni is usually about the theoretical, not the practical, and that's why a common complaint is that uni teaches stuff that isn't relevant to the 'real world'. What this complaint misses, though, is the ancillary benefits you gain through understanding the theoretical, which isn't necessarily easy to quantify.
In summary, don't be disheartened by the uni stuff not reflecting what you see in reality. Think of it as (an important) half of the puzzle. The other half is the practical experience you pick up along the way. In uni, this is probably going to be side projects - stuff you code and throw in Github and then mention in your resume. In later life, it's your professional work experience. This is no different to other technical disciplines - mechanical engineering, for example, teaches you theory but then undergrads go and do Formula SAE or other undertakings to get that practical experience.
Here are some links to get you started:
1. http://lancenewman.me/reverse-engineering-the-tinder-api/
2. https://www.raywenderlich.com/151741/macos-development-begin...
3. https://medium.com/@erikdkennedy/7-rules-for-creating-gorgeo...
Yet it's way more fun than what they teach you in school and will often involve learning the same concepts anyways. Just sad really.
I am sure I wasn't the only 17 year old told I should get a CS degree if I wanted to be a software developer. Meanwhile the most value I have gotten out of the CS classes that taught me to write a loop in MIPS or two build a XOR gate out of NAND gates is commiserating about those experiences with fellow CS grads. I would have much rather had a class about reverse engineering an API or other less theoretical and more vocational classes.
For HTTP, this is about as easy as it gets in terms of reverse engineering. In firefox, just hit ctrl-shift-q while on any modern website. The network requests made will be displayed for you and you can then start making your own by guesses at what the programmer would have done.
e.g. on HN you can see that each upvote button press loads an image from
https://news.ycombinator.com/vote?id=14786509&how=up&auth=2d...
or twitter I can see that pressing "retweet" makes a request to "https://api.twitter.com/1.1/statuses/retweet.json" with a payload of {id "some tweet id"}.
Try it, it's fun and entertaining.
The proper "hacker stuff" is when you have to break out a hex editor, instruction set decoder, or in-circuit debugger probe.
A lot starts out as magic. Class gives you enough to get started and demystifies some things, but I'd recommend doing side projects with classmates, competing in programming competitions, reading about anything that interests you (you'll find things that you have a burning curiosity about; don't wait for them to teach you that in school, because they might not).
My opinion is that the degree gives you a solid theoretical basis, and a checkmark on job listing requirements. Other than that, you're surrounded by a bunch of smart people with overlapping interests. It as perfect a time as any to set up study groups, clubs, and any other group activities you can think of to encourage extra projects and experimentation.
Reverse engineering HTTP API is not hard either, open developer console, inspect API requests, responses, etc. You need to have some web development experience, I guess.
Just read any introductory book for OS X programming and you'll be able to build this app yourself.
> I've had one semester of Computer Science, and have zero clue of how people do stuff like this.
Just wait, I've had about a decade of front-end dev experience and I think I could reverse engineer an API like this (maybe not quite so quickly). What I couldn't do, however, is write a C investment calculator text program. You're a whiz :)
I think it’s super important for CS students to pursue their interests beyond what’s covered in school. It’s the only way to gain the skills you need to get a good job out of college.
That's mainly just experience with whatever he's using for the design. I've gotten to the point where I can hack together some pretty looking CSS in a short amount of time.
>How do you reverse engineer an API
I have less experience with this, but from what I have done, I've learned that XHR breakpoints in chrome dev tools is your best friend.
On the other hand, for best iOS/Mac podcast app, I haven't been completely happy with any for years. New ones with smart speed - great feature, but I like one feature above all else.
My favorite app was Instacast for iOS because it let me add time stamped bookmarks/notes. Audible has something similar. None of the apps mentioned in Product Hunt or his blog post seem to support this. Such a bummer. I paid for Instacast 5 before it was removed. It started crashing at launch on iOS 10 however.
Edit: I recognize not many people, likely a single digit percentage of podcast app users would care for bookmarking/notes (thanks Void_)
But if those bookmarks/notes is a problem to a lot of people, then it might just be worth looking into.
Actually I have extensive time stamped notes for hundreds of podcast episodes including their ads starting and ending, but personally I'm against ad blocking. I've been in the process of removing those parts before publishing my bookmarks/notes.
It would certainly be useful to have notes for a whole range of other benefits e.g. making it much easier to search an old episode for a specific topic.
And yeah the other use cases help for sure!
Being half way through on iOS, then being able to continue listening exactly at the same point on MacOS - yes. That's something iTunes and the iPod supported since day zero, and nobody else has yet properly replicated. And it's really useful if you listen to podcasts longer than about five minutes long.
Just a thought. Tell me why I'm wrong / horribly naive / etc
Though it would probably have been a better idea to do that before they discover you've spent the last week publicly tweeting about unauthorised use of their internal API.
Consider getting Chromecast Audios and cheap speakers through your house and creating logical groupings (e.g. I have an "everywhere" group, and common room paths + destinations for various things, like Living Room through Hallway to Bathroom), and using the Cast feature of PocketCasts. Much cheaper than Sonos, etc. and you probably have a bunch of speakers anyway. Also Google Homes double as a good enough speaker in annoying rooms that don't have many outlets, if you're ok with having a microphone in those rooms, and they obviously synergize well with the Chromecast Audios.
I'm really curious if this is a special function of the AirPods or Apple's W1 bluetooth chip in general. One of my other pairs is an older pair of PowerBeats sports headphones. I would definitely consider replacing them with a new set of BeatsX headphones if that's the case.
Battery life is probably an issue too, but with low power wifi SoCs like the espressif stuff, you can probably get away with similar to Bluetooth using the tech that's around now and doing as much possible in hardware and with interrupts as possible.
(I am very happy with my wireless headphones.)
Maybe this?
- Siri integration (this is Apple's fault, no reason not to open SiriKit to music services)
- An Apple TV App (This is on Spotify, it's been asked for forever)
- An Apple Watch App (This is also on Spotify, but there are rumors it's coming soon)
But there are some real downsides to Apple Music vs Spotify:
- Apple Music's playlists aren't as good, community playlists are tough to find. I've found links to Spotify playlists filled with interesting music, no luck for Apple Music.
- Apple Music's radio is subjectively worse. Repeats far too often.
- iTunes is a travesty and I'm forced to use it to listen on my desktop. It's slow, ugly, tough to navigate, terrible to search. It does 500 things and none of them well.
- The Apple Music app on iOS isn't much better. UI is scattershot and it is tough to do some things that shouldn't be.
- No cross-device play state sync. For example, if I start listening to a playlist on Spotify I can start at the same point in the song and pick up exactly where I was on any other device.
- Social integration - I can send Spotify previews to people via Facebook Messenger, and Spotify integrates with other social stuff. Apple Music is all by itself.
I think a big issue that Apple will run into is that they insist on tying releases of Apple Music to iOS releases. Spotify can release new versions whenever they want, but because Apple didn't announce something like cross device state sync there's no chance I'll get it until at least next year.
I have both Spotify and Apple Music, but I'm not 100% happy with either.
What about Ping? Doesn't it allow this kind of sharing?
I just want to be free to accidentally press buttons on my headphones without launching iTunes.
What problem are you having with it?
I sync photos to Google Photos and movies to VLC using either iCloud Drive, Google Drive or the built in web server from VLC. The music I've bought from iTunes over the years is available to redownload.
It sounds like Pocket Casts are rather overstating their case. The dev put a lot of work into it. Unless they get a lot of traction, none of the concerns seem to matter much. And if they do get traction, it informs Pocket Cast what they should be building.
PocketCasts has many options for blocking the apps use. They can simple secure / update their API regularly, thus breaking the tool or they can simply send him a cease and desist for violating their IP and ToS.
PocketCasts would not want this app to exist, because they will be the ones that will have to deal with the influx of support tickets and customer problems related to this unsupported app.
I don't know. It would've been an interesting experiment to carry to its natural conclusion.
You might not respect their wish, but others may certainly choose to do so, it definitely is a reason to consider.
Having said that, in practice I tend to just play podcasts over a Bluetooth speaker (a JBL Flip for years, but as of yesterday a Bose SoundLink Mini II, as the Flip's battery life is down to well under an hour and it was time for a replacement/upgrade).
Also, because my laptop has a much more usable interface (keyboard and mouse) than my phone.
Slightly off topic, but I'm a recurring voice actor on the NoSleep Podcast, featured prominently in the imaging on this post. Thanks for Listening!
Plus you don't have to worry about Pocket Casts breathing down your neck because it's still through their system.
I used to have some for google play, although never could get it working with the media keys on my keyboard.
It would be amazing if someone came up with a free or one-time-cost macOS podcast app, and it would be even better if it were open source.
I use email and messaging on both platforms, and I wish I could do the same with podcasts.
For that matter, electron and/or react-native could make it easy enough to create such an application.
I tried Overcast and really loved the features (smart speed, etc.) but I didn't love the queue handling. It's not that there was anything wrong with Overcast in that regard. It certainly works fine (it's a great app), but it didn't map to the way I listen to podcasts.
Castro is ideal if you only have a few hours a week to listen to the occasional podcast and you don't always listen to every episode of every podcast. All other podcast apps (disclaimer: that I know of) have an on/off relationship with podcasts. You are either subscribed or you are not. If you are, you can specify how many of the podcast episodes to automatically download and put in your queue. So if you like to listen to occasional episodes of, say, a hundred podcasts, you will use a TON of storage.
Castro has a triage model. When you subscribe to a podcast, you can have the app automatically either queue it up immediately (like the traditional method) or have it appear in your inbox (along with a notification), which is a kind of temporary time-based view of recent arrived episodes, or you can have it put in the archive, which is where all of the older episodes eventually go. You can always queue up an episode from any of these locations.
The best part is that only things that you put (or specify to automatically add, which I never do) in the "listening to now" queue are actually downloaded. So if you keep that list at 5 podcasts, then only those 5 are downloaded. Very nice and a perfect match for my use.