Senior Software Engineer · 2014–2015 · San Francisco
Working where the product met someone else's platform: Roku's billing, Google's Cast runtime, and partner apps authorizing through our API.
Rdio streamed music from 2010 until it sold its technology to Pandora and shut down in late 2015.
This was 2014–2015. Rdio had bought TastemakerX that June and we went across, into a company where a music service was expected to show up on your TV, your speakers, and inside other people's apps. That meant most of my work happened at the boundary with a company that wasn't ours.
- JavaScript
- Backbone
- Django
Key projects
Selected work from the Rdio years.
Signing up on a television
Partner platformsRoku wanted Rdio on the box, which meant signing people up on a screen with no keyboard. I built the web flow their channel handed off to: account linking through Roku's Partner Account Creation SDK, a 30-day trial bought in-line through their billing API, and the confirmation after. Most of it was edge cases: family-plan invitations arriving without the invite link, countries we weren't licensed to sell in, and a billing submission that kept coming back 400.
The path a partner app took to play a song
AuthorizationWhen an app like Shazam handed a listener to Rdio to play a song, it travelled a path nobody had written down: partner app, API gateway, authorization screen, then a sign-in that had to know which app had sent you and why. I documented the OAuth 1.0a and OAuth 2 versions of it for Shazam, then went after what was slow or wrong: logging on those pages so we could see where people dropped, and client-ID attribution so an authorization traced back to the partner that triggered it.
Seven seconds of nothing
Device runtimesOur Chromecast receiver put a spinner up in about a second, and then sat on it. I profiled the whole boot: spinner at 1.1 seconds, dependency loading eating another seven and a half, and the first real frame not landing until 11.5. The app was never the slow part. jQuery, Backbone, Underscore, Modernizr and a template runtime were all shipping to a stick that needed almost none of them. The fix was a rewrite with none of them.
The way out
ShutdownRdio shut down on 22 December 2015, and one of the last things I worked on there was the door. The converter we had brought from TastemakerX already knew how to read someone's favorites and write them out, and it became the path your stations took to Pandora, which a back-end engineer and I kept running. I designed the export page: it offered your favorites, downloads and playlists as XSPF, handed your stations to Pandora, and told you what four years had been: hours listened, first track played, most-played album.
Pandora bought Rdio's technology out of bankruptcy in November 2015 for $75 million, and the service shut down that December. The last thing I built there was the tool that let people take their music with them.
Related context
- After ditching Echo Nest, Rdio acquires music discovery startup TastemakerX
VentureBeat • June 2014: the acquisition that brought me to Rdio, framed publicly as replacing Spotify-owned Echo Nest for music discovery.
- Pandora Media to Pay $75 Million for Assets of Bankrupt Rdio
Wall Street Journal • November 2015: acquisition of Rdio assets after bankruptcy.
- Pandora Buys Rdio To Become A Global Streaming Powerhouse
Music Industry Blog • November 2015: analysis of Pandora's acquisition strategy and Rdio's technology.