These days we talk a lot about “modern applications.” What do we mean by that?
Let me begin by telling you a story from my past. My first job in the industry, decades ago, was programming a large UNIVAC mainframe at the National Aeronautics and Space Administration (NASA); this room-filling giant tracked, among other things, NASA’s Space Shuttle.
Recently, researching a talk, I looked up that hoary old computer’s specs; it had 1 megabyte of RAM, two 33-MHz processors (so even then we had to think about semaphores), 250 megabytes of (removable) hard disk (remember the big multi-platter “disk packs”?), users programmed it on about a dozen 9600-bps line-oriented terminals.
Compare that to a modern smartphone. I’ll use the Nokia Lumia 928 as our example. It boasts two 1.5 gigahertz processors; one gigabyte of memory; 32 gigabytes of solid state storage; and can talk at up to 100 MBps over LTE to the internet.
In just about every dimension, the smartphone is about one thousand times more powerful than that mainframe I used back at NASA all those years ago. (Except for the size; the phone is maybe 100,000 times smaller than the mainframe!)
On the other side of the link, of course, is the cloud, and there we find a computing infrastructure providing effectively unlimited CPU and storage. Modern games – games – now reserve hundreds or thousands of cores in Azure to support multiplayer game play, just as an example of the level of scale we commonly see in cloud applications.
So the paradigm is shifting. We carry mainframes in our shirt pockets which can connect to vast computing ecosystems in the cloud. What does that mean for the sorts of applications we create? What new capabilities can we offer our users and customers?
Here’s one of my favorite examples to illustrate the architecture of the future. Today when you search, a series of HTTP or HTTPS calls go back and forth between your device or PC and the cloud service. That’s a fine approach, but it doesn’t take advantage of the power your phone possesses. Moreover, what if your Wi-fi connection is slow or unreliable, or your battery’s low?
Microsoft Research created an application called “Search-on-the-go” to address these points. SONGO, as it’s called (not to be confused with a similarly named file-sharing site) downloads Bing indexes to your mobile device based on your location and based on popular searches for that location. So, if you’re walking in Bellevue, Washington, and type the letter “I” into Bing on your phone, up comes, among other things, Italian restaurants in walking distance. Because the index is cached locally on the phone, there was no battery-consuming network traffic.
That’s an example of using the power of the device. The cached index? It’s around a megabyte so hardly a burden on the device’s resources. Of course, behind the scenes, the phone uses cloud services to determine its location, and it opportunistically downloads the cache.
Of course this is still a research project, to be clear, but it underscores the idea that we are moving to a model of powerful, intelligent devices connected to location-aware, device-aware, highly scalable, personalized cloud services.