Software Engineer
Oculus VR
@jamesabooth
github/jabooth

On-Demand Resources: the age of the streaming App

Sat 12 September 2015

Serenity Caldwell has written a nice explainer of On-Demand Resources and what they mean for the new Apple TV over at iMore. Reading the comments there made me realise that the tone of the discussion around On-Demand Resources is framed around it being a compromise. Apple didn’t want to ship a large expensive disks in the new Apple TV, and On-Demand Resources are a hack to get around that. More work for developers, just so Apple can ship another paltry 16GB of storage in its devices.

Actually, I think it’s a lot more than that.

On-Demand Resources move software delivery towards a streaming model, just as Netflix moved video delivery from a download to a streaming model. Netflix is very convenient for a user on a connected device; playback is near instantaneous, there is no need to worry about device storage constraints, and ultimately you still download a similar amount of data to a traditional download. It improves the user experience on all fronts. The one case where streaming is a bad experience is when connectivity is lost (you can’t, after all, stream Netflix on a plane). For constantly connected devices like TVs though, it's just better.

Would it have been easier for Netflix to instead offer a (DRM’d) download service? You bet. Streaming long videos is fraught with peril. You have to handle variation in connection speeds, download speeds on Netflix’s backend have to constantly be sufficiently high to ensure smooth playback, and otherwise trivial things like skipping through video is challenging to implement well (something John Siracusa had a good rant about on a recent ATP). Netflix did the hard engineering work of taking video streaming mainstream because it knew it would be a better experience for users, and that ultimately users would reward Netflix for doing it.

For Apple TV apps, where connectivity can be safely assumed, On-Demand Resources provides similar improvements to the user experience. In the best case users get much faster install times, no change in the total amount downloaded, and don’t have to worry about storage restrictions.

The maximum initial size of an app is fixed at 200MB. Even on my parents broadband connection in rural Yorkshire, that means the maximum wait time from getting an app to having the app open in 2015 is around a minute, and for many it will be far faster than that. To put it in some context, that size is getting within an order of magnitude of many web pages these days. I’m sure Apple will be working hard to get that even lower in the future, but even if 200MB turns out to be the sensible lower limit needed to ‘bootstrap’ an app, continued rise in broadband speeds will eventually make that payload feel pretty instantaneous for many users.

I qualified my earlier statement with ‘in the best case’, and by that I mean that developers figure out how to mask the acquisition of On-Demand Resources for the vast majority of use cases, so 99% of the time users never feel any difference in their experience. I’m sure that in the beginning some games will just throw up loading screens in between levels, but other devs will get creative and sweep all that under the rug. Loading screens will lead to negative reviews, so developers will be highly motivated to figure this stuff out to give users a seamless experience. I’m not trivializing what is a technically challenging problem, I’m just saying the incentives are right for devs to get this stuff licked in the long run.

By enforcing On-Demand Resources from the start, Apple yet again places a constraint on developers that will vastly improve the user experience in the long run. We’ve seen this before with app sandboxing, limited multitasking, and in-app purchase restrictions. In each case people throw their hands in the air and chastise Apple for mollycoddling it’s users and making life hard for it’s developers. But you know what? My mum has an iPad and she loves it. She loves that apps are installable from one place and cleanly uninstalled with a tap. She loves that the battery lasts forever, and she loves that she doesn’t have to entrust her credit card details to every individual app vendor.

Constraints in software drive innovation.

On-Demand Resources are new software constraints that have the potential to usher in the age of streaming apps. Personally, I am looking forward to seeing what that world looks like.

Hello, world

Tue 31 March 2015

I've been meaning to start a blog for a long time.

It's not that I have grand ambitions of cultivating a huge readership, I just like the idea of having my own little corner of the internet where I can put my thoughts into words, even if only for my own pleasure.

It's also not that I am a particularly gifted writer (my sister got all the literary genes) but I would like to become a better writer, and I know the only way to improve is to make myself write, even if only a little at a time, about the things I am passionate about. Namely:

  • My research as a PhD student investigating 3D Morphable Models in the iBUG group at Imperial College London
  • Snippets about software development, most likely about Python
  • My thoughts on the technology industry, principally on developments around Apple, Google and Microsoft. I might also do the occasional product review of devices that I personally own.
  • Photography. My father was an avid photographer, and as a result I've grown up around the hobby. In the last few years I have started to take the subject a little more seriously, and I'll be writing up any thoughts I have of note.

Outside of blogging, this site also has a few summary pages that I will be keeping up to date. Feel free to checkout an overview of my research, software projects that I have been involved in, or find out a little more about me.

This site itself is also something I've been meaning to create for ages. I'll probably post some more details about the design a little later on, but for now I'll say that it's Pelican based with a custom theme, and should work great on any modern browser on any modern device. I'm only interested in supporting evergreen browsers so if you come here on IE9 and tell me everything is broken, well, maybe it's time for an upgrade.

I'm sure I'll look back on these early posts down the line and cringe, but the only way to get to a new destination is to take the first step.

So without further ado...