Thursday, September 08, 2011

To The Cloud! How Content Gets Delivered and Stored

I recently read and discussed an article from TechCrunch called Start Mobile And The Thin Cloud. I thought I'd share my thoughts on how content is delivered and consumed.

First, I'm not 100% sure I fully understand/cover all the options, but here are the 4 main ways that I see content delivery/storage happening:

#1 Pure Desktop
One option for content is to have everything on your computer - a "pure desktop" app. This is great because as long as you have your device, you always have access to your content. No Internet connection required. What's also wonderful is that the app is usually super fast because the only speed limit is your processor. Unfortunately, if you're device isn't with you, can't can't access your content. Laptops helped solve a lot of the mobility issue - just take it with you.

#2 Pure Cloud
Another option is to have a "pure cloud" app. An example is a webpage. Everything needs to be loaded from a server: the display, the content, even the user input needs to communicate with the server. This is great because no storage is required, and you can easily jump between devices. Furthermore, you never need to update your app because it always pulls the current code off the server. Unfortunately though, no Internet access means you can't access your data.

Now for a couple hybrids:

#3 HTML5
HTML5, and browsers that support it, allows a small amount of data to be stored on the device. For example, Google just released offline support for Gmail. This Chrome browser extension allows Gmail, the webpage, to store and access emails in the browser. So even if you don't have Internet access, you can still open some emails and even write an email which will be sent the next time you connect to the Internet. Very cool. Minimal storage required, no app updates, and you don't always need an Internet connection.

#4 Thin Cloud
This is what the article talks about: a "thin cloud" app. First, you download the display, and the content. Then, when you use the app, the only thing that transfers over the Internet are the changes to the content, known as "delta updates". This is also very cool because an Internet connection isn't constantly required. The app also loads much faster since all the core data is on the device. Even the app's reaction time is faster because very little data is being transfer over the Internet (also a bonus if you have a data plan). Unfortunately, app updates are required and it does require more storage.

Lots of writing. Here it is in a table:

XML (and similar options like mySQL) really allowed this division. It fundamentally separated the data from the display. So you could transfer the data to any device/app then the device/app would figure out a way to display it.

My favorite example is IMAP for email. With IMAP, you can access your data on the web (like You can also access it via Outlook or Apple Mail. You can also access it on your phone (either or from the built-in mail app). Data is separated from the display/GUI. Beautiful.

Twitter is another example of this. There's, their own mobile apps, and then a whole host of 3rd apps that let you access Twitter's data (or is it my data? I digress).

What about the future?
The big question is really whether HTML5 or the Thin Cloud (AKA native apps) will "win" in the next couple of years. Apple clearly thought it was HTML5 when they introduced the iPhone, but then quickly switched over to promoting the App Store. Personally, I see developers continue to focus on separating out the data from the display. Then they'll make a native app because of the richer experience, then they'll create an HTML5 website to enable access anywhere.

It would be cool if there was some sort of universal language, like HTML, so developers could write once and use everywhere, but currently it can't compete with the capabilities of native apps. I don't think that's necessarily bad - I mean, just look at the apps available in Apples App Store: they're amazing! Plus, it does save me on data usage when I'm out and about.

So there you go, a semi-technical dive into how content gets stored and displayed. My big take away is that learning HTML isn't good enough anymore. I need to invest the time in understanding C++ and its derivatives.

No comments:

Post a Comment