SummaryAn Internet of Things--social products and services--will have as profound an effect on our lives as the changes of the preceding 15 years. I believe that personalized event-driven programming models are a key part of the architecture that makes them real. Events make active participants of formerly passive APIs and make social products a reality.
The Internet of Things keeps coming up in conversations. I think when Marc Benioff talks about social products and services, for example, he's talking about the Internet of Things. Because of the particular arc that the development of the Internet has followed, using "social" to describe connected products and services makes marketing sense.
This talk by Wim Elfrink is also talking about the Internet of Things. Wim does an excellent job of painting a picture of what a completely connected world looks like.
(BTW, if you'd rather listen to Wim's talk, IT Conversations has Wim's talk as well.)
The Internet of Things is close. Your car has had processors in it for a long time. Many cars--thanks to teathering with a mobile phone--are online. The same goes for a host of other products. My Tivo, for example, is online and I control it with a little app on my iPhone. More products could be online if someone knew what value that would provide.
The chief obstacle to getting more things online is that no one is quite sure how to get them to interact with each other, although we've got some ideas. Certainly APIs will play a role. Beyond that it gets fuzzy. Consequently what we see are connected products--like my Tivo--that have an app and not much else. For my Tivo, remote programmabilty is enough added value that an app makes sense. But do you want an app for your refrigerator? Or your toilet? Today's connected products look like the picture below:
In this drawing, the Toyota car and the TomTom GPS are both online and they each have an app that you can install on your phone. But beyond that, it's kind of boring. How do the GPS and the car interact with each other? They don't. They're online, but they're not "networked." They're not really "social" because they're not cooperating or communicating with each other.
What's more, even if we conceive of each having an API, we're missing some of the most important interactions if they have to be queried before they take part in a conversation. I don't want to have to initiate all of the interactions between my products. I want them to speak up when something important happens.
Social products need to be networked if they're to cooperate. The following picture shows the same online products, but now they're connected to an event network.
The event network allows the car and the GPS to raise events when something of interest happens. What's more, this event network is personal, meaning that my things raise events that other things that belong to me see. Your things raise events in your event network. The apps installed on this personal event network represent my intentions and interests, choreographing the interactions among the products and services I own.
The apps from the car manufacturer and the GPS manufacturer are still available, but so are other apps that third party developers have created, like a "travel app." This app, for example, sees me researching routes on the GPS for a trip I'm going to take and reminds me to plug my electric car in because it needs juice. Note that I'm not using the app to plan the trip, I'm using the product--the GPS--but the app sees the events from the GPS and the car and links them together. This is an important distinction because the product, naturally, is the locus of my activity. Rather than forcing the user to interact through a phone interface in a video game-like virtual world, I merely use products as they were intended. The UX is the natural interactions I have with things in my life.
An Internet of Things will happen if there's sufficient value. In this model, there's value for customers and sellers. The customer sees more value in products that cooperate than in products that are merely online. On the product side, the seller now has a product that is a platform on which other developers can build applications. Most products are not interesting enough in themselves to represent a viable platform that can attract significant developer interest. Consequently they miss out on the benefits of having others create valuable add-ons. But products in an network of other cooperating products represent a rich ecosystem that will excite developer imaginations.
An Internet of Things--social products and services--will have as profound an effect on our lives as the changes of the preceding 15 years. I believe that personalized event-driven programming models are a key part of the architecture that makes them real. Events make active participants of formerly passive APIs and make social products a reality.