What Adrian Did Next — Part 4 — how I helped Netflix launch on iPad and iPhone — 2007 to 2010
I’ve been meaning to get another installment of my career history posted for a while. The 15th anniversary of the launch of the iPad gave me a reason to pull out a chunk of that history into this post.
In part 3 I mentioned that I had developed some phone based apps while at eBay Research Labs in 2006, and I had also become involved in the Homebrew Mobile Phone Club, where a bunch of people got together in their spare time to try and build a phone that would be programmable by anyone. Before 2007 mobile phones were extremely locked down by the carriers and manufacturers and they were not openly programmable. We had some fun getting hardware figured out, and I used a 3D printer to make some cases, but the whole project was interrupted by the delivery of the iPhone by Apple in late 2007. It was clearly far better hardware than we could build, had a proper full featured operating system on it, and as soon as it shipped, people figured out how to “jailbreak” it and program it. I went to the launch event, got an iPhone on day 1, and when Apple finally shipped their SDK in March 2008 I was in the first wave of people who signed up as an iOS developer. My homebrew phone project was abandoned and I started to learn Objective C and Apple’s mobile app development tooling. This was all a spare time project, as my day job at Netflix at that time was as a director level manager of a team working on personalization code in Java, and it wasn’t my job to write the code myself.
I showed the iPhone to people at Netflix, as it had excellent quality video playback, but they weren’t interested. They were focused on getting Netflix onto TV sets, and thought the screen was too small, the time people would spend watching was too short, and there wasn’t enough mobile network bandwidth. At that time YouTube was primarily very short low quality videos, and Netflix average viewing time was over 30 minutes of high quality video.
In September 2008 Netflix ran an internal hack day event. They were about to launch a public API and wanted internal teams to try it out before launch. I decided to build an iPhone app that connected to Netflix, and that could be used to find content to add to your Instant Watch queue. The public API didn’t support streaming, so it was all about discovery and integration. One of the Java engineers on my team — Jian Wu — joined me to help figure out the API. The first problem we had was to get the authentication to work, there was no OAUTH code for iOS, and the MacOS code I found needed to be changed to make it work (and neither of us knew Objective C well). We spent more time learning how OAUTH worked than building our app, but we did get a list of streaming content onto the iPhone and won a prize in the Hackathon. I continued to develop the app for the next few years, and listed it in the iPhone app store. It was the top selling 99c app for a while, although it still only let you find things to watch on your TV later. Here’s the trophy we won.
In January 2010, exactly 15 years ago, Apple announced the iPad. A day or so later I got a calendar appointment to have my quarterly 1on1 with Reed Hastings the next morning. He wanted to talk about the iPad and what I thought of it. I had already seen young children using iPhones, and my opinion then was that this was the ideal computer for kids and older people, who didn’t want to deal with the complexities of PCs and would find the user interface intuitive. I told Reed I thought it would be successful.
The reason he was asking me about it was that Netflix had already been talking to Apple about another topic, and they had reached out to us via that contact to ask if we wanted to be part of the iPad launch. It would have to be a completely secret development program, between January and May, we’d have to rearrange internal development priorities, and we couldn’t tell anyone internally that didn’t need to know, or hire anyone from outside. Reed wanted to know if we should do it, and whether it was possible in the time available?
An engineer on my personalization team who had left a few weeks before — Stephane Lunardi — was ex-Next, ex-Apple, a total Objective C guru, and he left us to join Palm to work on WebOS because he wanted to work on mobile applications, and at that point there was no interest in mobile apps at Netflix. Terrible timing… but without Stephane I was the only iOS developer anywhere at Netflix, and it wasn’t my job to be a developer, by then I was leading the cloud re-architecture team.
What did happen is that we assigned Stephane Odul as Product manager (it would have been amusing to have two Stephane’s working on this project), and I helped him get setup with an iOS developer account in his own name. We found an engineer from another team who knew C++ and was willing to learn Objective C and borrowed him for the project (unfortunately I’ve forgotten his name). I took the core code from my own hack day Netflix on iPhone app that authenticated with the Netflix API, created an internal repo with it, and turned it over to them to develop the iPad app. (I wonder if any of my code is still present in today’s Netflix apps?)
At some point a storage cupboard was taken over with a combination lock on the door, no-one was allow to ask or discuss what was going on, as Apple insisted on absolute secrecy. A prototype iPad was bolted to the desk inside, and the developer was the only person allowed in to work on it. As the iPad delivery day in May approached, I engaged again to help Stephane Odul run the app through Apple’s App Store submission processes. The Netflix app was staged ready for launch a few days before the iPad app store went live, and people were rummaging around in Apple’s URL spaces looking for clues about apps for the launch when someone found metadata about the Netflix app. Word got out, it became a big story, and I think we had to get Apple’s permission to run the Netflix on iPad press release a day early. On the day, I was part of the first shipment and I still have my “day 1” iPad. The Netflix iPad app was a big hit, and has been one of the top apps for the iPad ever since.
Sales of my 99c Netflix app increased, although people were grumpy that it didn’t stream video, but there was no public API support for streaming. The main reason for this was that Netflix didn’t want to have people build apps with advertising wrappers around the Netflix content. A contractual relationship was needed to get access to the private streaming API. A year or so later, in 2011, Netflix also launched their (free) official iPhone app, and my sales plummeted! I eventually removed my app from the app store. The Netflix iPhone launch was the first platform launch that Netflix did which was entirely backed by the AWS cloud. We simply didn’t have enough capacity in our datacenter to run the traffic, so it had to work. We knew that many customers already had iPhones so the traffic ramp up for the new service was extremely fast. To test the cloud based backend, we tee’d a proportion of the incoming “home page” requests (which returned lists of about 2000 videos personalized for that user) from the datacenter to the cloud and processed them there, discarding the result. It worked really well as a stress test, and the launch had no issues.
I built two more iOS apps that worked with Netflix. One was built in September 2010 at an externally run iPad DevCamp (hosted at the Paypal offices), with help from the Netflix API Evangelist Kirsten Hunter. It was called Actors for Netflix, and let you browse the Netflix catalog by pivoting through the actors and directors of videos using an ODATA API, and launched the actual Netflix iPad app to play the video. The code is still up on github. It won the best use of Web API’s prize at the iPadDevCamp. I wrote the foreword for Kirsten’s book Irresistable APIs, and recommend anyone designing an API should read it. The Netflix public API was badly designed in several ways and was eventually shut down, we learned a lot from the experiences.
The second iPad app I built was for another internal Netflix hack day, later in 2010. I wanted to target Netflix at children, and built a prototype of Netflix for Kids as an iPad app. This is before the current Netflix kids functionality existed, and we had just hired a product manager to take a look at it. I had to remind him I was not his development team… The app was aimed at pre-school kids, had no text in the UI, and just showed kids shows as box shots. It also had filters in settings so parents could exclude any content they deemed unsuitable or didn’t want to hear for the N’th time. The actual Netflix for kids functionality they launched much later was aimed at an older age bracket as a sub-profile using the main Netflix app on all platforms. I have a trophy for this Hack Day as well.
Happy 15th birthday to the iPad! I use mine most days to watch videos. We currently have four of them around the house and I still have my day 1 iPad in storage somewhere.
There’s a lot more to say about my time at Netflix, but that’s a story for another day.