Wednesday, March 14, 2012

When Worlds Collide #4: HTML5 + Cloud = Personal Cloud

In Part 1 I wrote about the dual revolutions going on in web applications: HTML5 and Mobility on the front end, and Cloud Computing and Social Networking on the back end—how they influence each other and are together changing the design of modern web applications. In Part 2 we looked at the shared perspective of elasticity and in Part 3, location. In this fourth post we’ll discuss another aspect both worlds share, which is making the web personal.

The web has been about many things over its history, including publishing, search, applications, e-commerce, and media. Today, there are many things going on but I’m going to argue that they all revolve around people and enabling their digital lifestyles. The modern web is about people.
There are two areas in particular that are clearly making the web personal: mobility and social networking. It might seem less clear how HTML5 and cloud computing tie into making the web personal, but as we’ll see shortly they do in fact play critical roles, albeit less prominently.

There’s a new term out there, personal cloud (maybe so new we don’t have a good definition for it yet). I see this as a great term for the social / mobile / global phenomenon (and definitely easier to pronounce than SoMoGlo!). With the web’s focus shifting to people and their connections, thinking about the user and their “personal cloud” as a central design consideration makes a lot of sense.

Mobility Makes the Web Personal: It’s Always With Us
With mobile devices becoming so pervasive, we can bring the web and our favorite apps and services with uswherever we go. We’re no longer limited to using the web when we happen to be at home or at work. The web couldn’t really become an entrenched part of our lifestyles if we could only use it when we happened to be near a desktop computer: we want a 24 x 7 web we can use when we’re at restaurants, at concerts, at ballgames, when we’re taking a walk, when we’re traveling. Mobility makes that possible.

Mobility also lets us tie location into our apps, which is another dimension of making things more personal. We can use location to cue maps, find out what’s nearby, give area-specific advice, coordinate events, and many other useful things.

Social Networking Makes the Web Personal: We’re Connected
Social networking allows us to keep in touch with friends, family, organizations, and birds of a feather (people with similar interests)without regard to physical location. It has become the #1 activity on the web.

Social media is not only important to individuals, it’s also very important to businesses—especially for marketing, brand management, and client retention. In modern marketing, social media is the tool for customer retention (see Flip the Funnel by Joseph Jaffe). Getting a customer to the sale is not the end result of sales and marketing efforts, it’s the beginning of an ongoing relationship. We can learn a lot about customers from their social interactions; the older practice of using neighborhood data for demographics is primitive in comparison.

Word of mouth is nothing compared to word-of-social-network, which can lead to massive surges of interest very quickly. Of course, that cuts both ways: a social network can also destroy a business if it gets a bad reputation. This seems to be a self-governing system where social participation is a must for businesses today but customer service is a vital ingredient in achieving success.

HTML5 Makes the Web Personal: Web Apps that Work on Any Convenient Device
If making the web personal includes being able to use it anytime and anywhere, it follows that users won’t always be using a single device. A phone might be most appropriate when outdoors, a tablet when relaxing on the couch, and a desktop computer or laptop when in your home office or at work. This means it isn’t realistic to assume just one platform or browser for a user. The best bet is to support a wide variety of modern browsers and devices. But that can be expensive, unless you use HTML5.

With mobile applications you can choose to leverage native applications or you can write a single HTML5 web application that runs across modern browsers, tablets, and phones. Techniques like responsive web design and progressive enhancement allow you to provide a first-rate experience across the board with adaptive layout and equally strong support for mouse, keyboard, and touch. I’m not going to claim one approach or the other is right for everyone: there certainly are times when you need a native app for a certain level of experience, or to integrate with device hardware and the operating system, or to be in the app store. But make no mistake, HTML5 apps are giving native apps a run for their money. There’s an obvious economic advantage to writing something once that runs everywhere, as opposed to separate development projects in separate languages for each mobile platform. It is in fact possible to combine these two approaches, where you create native apps for your priority mobile platform(s) and use HTML5 to cover the rest of the world. Again, the important thing here is to make your apps available and acccessible to users as many ways as possible.

Cloud Computing Makes the Web Personal: The Dynamic Platform Social + Mobile Require
The nature of social and mobile use of the web is potential large scale, and sudden surges of activity without warning. This out-of-the-blue increase in load and equally sudden drops in load simply doesn’t fit the traditional way of doing IT. It no longer works to get out our crystal balls and forecast some steady level of load for the next few years, then hope to buy the right amount of hardware to cover it. Our modern constituencies ebb and flow like ocean waves. Clouds are absolutely essential for handling the scale changes, and doing it rapidly. Being social and mobile isn’t good enough: we must be social, mobile, and global (SoMoGlo).

Cloud computing is needed to power the social networks, but they’re also needed to power your sites and applications. If you’re going to leverage social networks, you’ll either be driving traffic to your sites or integrating with social networks directly in your web and mobile applications. Either way, that means software of your own that has to be able to match dynamically changing load and surges.

With the ability to elastically scale up or down, and to do so rapidly, the characteristics of cloud computing exactly matches the nature of social and mobile networks. Mobile, social, and cloud computing were made for each other.
Moreover, cloud computing allows us to have a global presence—even at small levels of scale. Since our modern web applications need to serve people wherever they go, and since social networks connect people even in different parts of the world, being able to provide global presence is very necessary today. Cloud computing helps with this through worldwide data centers and supporting services. On the Windows Azure platform, we have worldwide infrastructure: 6 Windows Azure data centers (two in the US, two in Europe, and two in Asia) and a 24-node edge cache distribution network. We have services that help with content delivery, traffic management and data synchronization. It’s now easy to be available worldwide, and it doesn’t have to be expensive.

Personal Cloud
Now let’s put it all together. Mobility and social networks, strongly supported by HTML5 and cloud computing, are bringing us toward a planet-wide nervous system—not just the web, but people out and about interacting with the web through their mobile devices and sharing collective thoughts over social networks. News, ideas, reputations, and trends ripple around the world in real-time, sometimes bursting to mammoth levels or ebbing as quickly. But this is not The Borg from Star Trek: We join the communities of our choosing and connect with the parties we wish to. The portion of this mobile, social, global phenomenon we carve out for ourselves is our personal cloud.

Your personal cloud, then, is your digital world--your apps, your data, your social networks, your memberships, your licensed content, and your published digital content--not bound to any one machine and available to you wherever you are on whatever device is convenient. For me, my personal cloud includes social memberships (Twitter, Facebook, LinkedIn), movie content I've licensed on vudu and Netflix, music content licensed on iTunes and Zune, my Kindle digital books, games I've bought on XBox Live, my blog, my public code contributions, my email, my documents, and my pictures and videos. Some of my personal cloud is public and can be viewed by anyone; and some it is accessible only to me or my family. My personal cloud is at its best when I can get at it from anywhere on any device. My iTunes, vudu, and Kindle memberships are like that: while they don't allow an unlimited number of machines, they let me enlist a reasonable number of personal devices so I can get at my content and apps in multiple ways.

"Personal cloud" isn't really any kind of new idea or technical breakthrough; rather, it's simply recognizing that people want their digital world to be extremely portable and constantly available. This is not exactly a new dream (recall the Network Computer?), but the combined effects of mobility, social networking, and cloud computing have finally put it in reach. We're used to having online content already, but we don't have a very good combined experience for the individual yet in managing their digital world. It will be interesting to see what develops on that front.

Personal cloud implies a style and vision that should inform how we design things. What does a ‘personal cloud’ view mean for the modern web applications we create? I can think of some very good consequences of making this a central design consideration:

• Design user experiences that reflect the modern digital lifestyle. Stay relevant to your users before someone else does.

• Use social/web identity, so users don’t have to create and remember yet another username and password. You can use the Windows Azure Access Control Service for this.

• Learn about users by inspecting their social activity. Use that data to serve the user in a better and more targeted way.

• Integrate with social content – search, view, post, aggregate, monitor, manage.

• Support a broad set of browsers and devices well. Do this with HTML5 and embrace techniques like responsive web design, mobile-first, and progressive enhancement.

• Ensure a user can easily move between different devices and maintain application and data continuity. Think through how you want state and data and caching to work, there are more choices than ever.

• Consider how you can keep your apps running even when disconnected and whether you need to provide synchronization.

• Take advantage of location. Use device location to personalize the services you deliver. Use location to route to the nearest cloud deployment.

• Track levels of activity on your applications and services and have a scaling process in place.

• Extend to regional or a worldwide presence to match where your users are.

• Proactively manage your brand and your relationship with your users through social media.
• Be able to react in near real-time. React to shifts in the market, ideas that are gaining ground, and changes in the level or nature of activity.
What are your thoughts on the concept of personal cloud? I’d love to hear from you.

No comments: