Black lives matter
Portrait Dr. Axel Rauschmayer
Dr. Axel Rauschmayer
Homepage | Twitter
Cover of book “JavaScript for impatient programmers”
Book, exercises, quizzes
(free to read online)
Cover of book “Deep JavaScript”
Book (50% free online)
Cover of book “Tackling TypeScript”
Book (first part free online)
Logo of newsletter “ news”
Newsletter (free)

The cloud and how it changes mobile computing

[2010-12-14] mobile, dev, cloud, computers
(Ad, please don’t block)

The cloud lets all of your computing devices work together like a single system.
This post explains what cloud computing is and how it changes mobile computing. It gives several examples of cloud-enabled applications that already exist and outlines future developments.

Initially, cloud computing was mainly relevant in the server space. It allows one to outsource computing power and storage “to the cloud” (=servers on the internet). Thus, the capabilities of a server can increase depending on demand. This pooling of resources enables spikes in demand to be balanced across the pool. Quoting from Wikipedia:

Cloud computing is Internet-based computing, whereby shared resources, software, and information are provided to computers and other devices on demand, as with the electricity grid.
Recently, cloud computing has also improved mobile computing. Cloud-enabled applications keep their data in the cloud and keep it updated with all changes you make. This has several advantages:
  • No more syncing. This explicit step of transferring data has always been a hassle: You have to connect your mobile device with a cable and if you forget about it, you leave important data at home. With cloud computing, you can be at your desktop computer, think about data you want to take with you on your cell phone, and just push this data into the cloud. When you use your cell phone later on, the data will already be on it.
  • All your devices function as one system. Take, for example, email which has been cloud-enabled via the IMAP protocol for a while. This allows you to read email on your tablet device, remove a few emails, write a draft. If you then move to your desktop computer, everything is like you left it on your tablet.
  • Automatic backup of your data. This goes beyond knowing your data is safe. As computing devices have become more and more important to our everyday life, losing one of them can be terrible, especially on work trips. But with cloud computing, you can never completely lose it, because it exists in in the cloud, virtually. Replacing a device can be as simple as logging into a new device (maybe even on a guest account) and getting your data from the cloud.
  • Easier installation of new devices. Right now you can easily have 5 computing devices (desktop computer, notebook, tablet, cell phone, ebook reader) and each device is configured similarly. Again, with the cloud, you’ll just log in and your configuration data can be downloaded. Currently, only Google’s Chrome OS works exactly like this (note that Chrome OS is not available to the general public, yet). I expect other operating systems to follow suit (see the Mac app store below).
  • More computing power on demand. The computing power of the iPad is enough for most applications. With the cloud, if a device is capable of streaming moving pictures in real time (say, 24 frames per second) then that suffices to outsource any conceivable task. For example, there are now several platforms that stream games (see below), which can be computationally intensive.
Examples of cloud-enabled applications:
  • Email via the IMAP protocol. Several devices sync with the same mail server. The server holds all of the data which is replicated to the devices.
  • Kindle: With Amazon’s Kindle Store, you buy books online and their server records what you own. If you start your Kindle Reader app, it downloads your belongings from the server.
  • Android 2.2: Push map locations and URLs from your desktop computer to your phone.
  • Instapaper: Push article URLs to a server. Sync to keep the complete text offline for reading.
  • Dropbox: Store files on a server, sync with desktop computers and mobile devices. 2GB storage space are free. On mobile devices, there are programs that integrate with Dropbox, like the iOS text editor PlainText. Every time, you save a file in PlainText, it is pushed to the cloud. Conversely, when you open PlainText, it updates its list of files to reflect the current state of your Dropbox. On Mac OS (I’m assuming things are the same on Windows), a Dropbox program watches a folder and whenever its contents change, the changes are propagated to the cloud (the reverse is also true). This is neat, because you can use an ordinary text editor to keep in sync with PlainText.
  • Ubuntu One: “Ubuntu One is your personal cloud. But it's not just about syncing files — whether you need to access your contacts, notes or bookmarks from any computer or the web, enjoy your favorite music from a cloud integrated store or stream your entire collection to iPhone and Android mobile phones — we've raised the bar on personal clouds.”
  • Google Calendar
  • Google Chrome: “You can save your bookmarks, extensions, apps, theme, and browser preferences to your Google Account so that they can be accessed across multiple computers.”
  • Firefox: “Access your history, passwords, bookmarks and even open tabs across all your devices.”
  • Apple’s Mac app store is cloud enabled, with app licenses extending to all of one’s personal devices. That means installing your apps on a new computer is simple and updates are performed automatically.
  • Streaming games:
    • OnLive (Engadget): A monthly subscription lets you stream games.
    • Gaikai (Engadget): Similar to OnLive, but financed via ads.
    • Steam: is not quite streaming games, but still uses the cloud to give you instant access and automatic updates.
Future developments: The following are a few ideas for cloud computing.
  • Increased support for offline and LAN-only operation. In the future, devices should be able to sync with peers, in case the cloud not available. Also, more powerful computers in a LAN could provide cloud services for less powerful devices.
  • Different levels of sync are needed. For example, I don’t need all of my web browser bookmarks on my cell phone.
  • Streaming your complete movie collection. Streaming movies already works if you have subscribed to, say, Netflix, or if you rent movies online. I expect that we will soon be able to buy movies and TV series and have the store keep track of what we own. Then we don’t have to store video files on our hard drives, any more, and can stream what we own, on all of our devices.
  • Universal servers and protocols. Currently, every application has to provide its own storage and syncing. The best available universal solution is Dropbox. But its data has file granularity and that is not enough for many applications. For example, if you wrote a bookmark manager, the granularity of your data is the bookmark, but you don’t want to store each bookmark in a separate file. Furthermore, one needs mechanisms for handling editing conflicts. If there is only a single person working with a file then editing conflicts are rarely an issue. If however, several people edit it at the same time then conflicts will occur.
  • Protecting privacy. This could be done via client-side encryption. See [3], below, for more on privacy issues.
Related reading:
  1. What is the best way to combine a cell phone and a laptop? (An application of cloud computing.)
  2. The web as an application platform: latest developments
  3. Collaboratively editing a text document
  4. Google's ChromeOS means losing control of data, warns GNU founder Richard Stallman
  • 2010-12-15: Added the bullet point “Universal servers and protocols” to “Future developments”.
  • 2010-12-19: Added bullet point “Protecting privacy” to “Future developments”.