ATATN #2: UnaSKAble Questions
Pick it up pick it up pick it up
I guess we are going to talk about ska here in issue number two of Albums The App The Newsletter. When I was in high school I was obsessed with a ska punk band called Streetlight Manifesto. Obsessed. At the time, they only had one record, but it was virtuosic and vital and I listened to it constantly. The lead singer didn’t do much press and had a reclusive vibe, which was maddening given he also had a habit of announcing projects that you’d never hear about again. One day, a kid I knew online told me he had an opportunity to interview Streetlight and wanted to know if I had any questions. I know a chance to know things when I see one.
This year, as part of Apple’s annual Worldwide Developer’s Conference, I applied for and was given a slot to talk to an engineer who works on the Media Player framework. Last week as I was preparing for my 25 minute one-on-one call, I felt the same urgency and intensity that led to the totally inaccessible five page list of hyper-specific and at times almost accusatory questions I sent over to my internet friend all those years ago.
There are not all that many third-party music apps on iOS in the first place, and even fewer that use some of the more arcane features of the Media Player framework, so depending on what you’re trying to do or what error you’re running into, there might not be a heck of a lot of information out there. I’ve read every last piece of Apple’s documentation, every Stack Overflow question, and every blog post on the internet even tangentially related to Media Player.
In place of answers, I mostly have gut feelings, hunches, and superstitions. I often can’t answer the question: is this playback bug because I’m doing something wrong in my code or is it because something is broken on Apple’s end? There’s a whiplash to it: run into an issue and grumble about how it’s probably Apple’s fault, then spend an hour re-auditing every line of my code that interfaces with the Media Player framework. Try everything I can think of, then throw my hands up and blame Apple again. A few days later, implement the workaround that comes to me in a flash of inspiration. Rinse and repeat with the bug that arises out of the new workaround.
One such bug had been vexing me for the past couple of weeks. A week or so after shipping the Queue Controller rewrite in 4.1 I started to get reports from a handful of users that the app would no longer play the next album in a queue at the end of a current one. That wasn’t great for a number of reasons, especially because I was so, so happy with my magnificent new solution for queue management. The code I shipped in 4.1 was a result of everything I’ve learned in several years of hard-won communion with the Media Player framework. I’d made it my business to learn every in and out and had rewritten the guts of Albums from scratch to solve problems like this. After the requisite sulking period, I took another look and swapped out a more advanced method of loading the queue for a simpler one and that fixed the issue for all but two people. Conveniently, my Apple call was coming up.
I never got answers to a single one of the questions I submitted for Streetlight Manifesto. Why? They were unaskable and unanswerable. They were pure passion, channeled poorly. They were the logical extreme of A Thing I Can Sometimes Do: transmogrify connectedness and enthusiasm for a thing I care deeply about into something rabid and alienating, especially if I think I might not get another opportunity. Over 15 years later, I’ve still got that tunnel vision, but I’ve learned to focus it better.
Now, I try to remind myself what’s behind that frenetic energy. It’s the idea that I want the thing I care about to be the best it can possibly be. I want Albums to have a rock solid foundation, so in my limited time with the Apple engineer, I asked about simple stuff. Best practices. I confirmed that my new QueueController approach makes sense. We talked through how my method of loading the next album into the player should work. We talked about common issues that can arise on Apple’s end and what to do when they do.
Solidifying my understanding of the low-level basics pretty much immediately gave me a better set of heuristics, and after a couple more days of testing, I fixed the problem for the remaining folks. So what’s the final score on this one? Ehhh. The initial issue does seem to have magically been solved by using a different Apple-provided API, but those last two people were totally an edge case I hadn’t accounted for.
That fix is now out as part of version 4.1.2. Full patch notes are below. See y’all in two weeks.
Albums 4.1.2 includes the following:
- The purple generic artwork is gone! Albums with missing art now show their names when in Artwork View, and use a less in-your-face image elsewhere in the app
- On the CarPlay Now Playing screen, tapping the album name now displays the artist’s other albums
- Slightly redesigned the CarPlay “Pin Album” and “Pin Collection” screens
- iPad users can now dismiss the album view with a two-finger trackpad swipe
- The Release Feed is now faster to update and more accurate finding artists with new releases
- Fixed an issue where the app would sometimes not play the next album in a queue.
- Fixed an issue on the CarPlay Now Playing screen where the Skip Album and Tracklist buttons sometimes loaded with the wrong light mode/dark mode color
- Fixed an issue where selecting a track from an Apple Music album might cause the app to crash
- Fixed an issue where the Release Feed could run twice in a row if you checked it first thing after opening the app
- Fixed an issue where the Release Feed might create duplicate “Released” items on a pre-added album’s release date
- The Quick Action widget now correctly updates when Quick Actions are created or the dock is rearranged
- Fixed a couple of issues with the Now Playing screen on iPad, including it sometimes growing to hilariously large sizes and the buttons along the bottom being below the swipe-up thingie.
- Misc. other crash fixes