Recently, I've released a minimalistic prototype of my smart home bot. The code of the prototype is only able to get the temperature information. The real deal is capable of a lot more than the released prototype, however, with the released code the missing functionality can be added in no time. So why should one care about all these new bots? What's their reason?
The way we do any kind of information technology interaction right now is done with only two major layers of abstraction:
- An API
- An application
Below the API the implementation hides. This is the direct thing dictating the devices / services what to do when. The API controls the implementation. Similarly, the application controls the API. Unfortunately, the application layer is - as the API layer - highly custom to the problem. In order to have the right application we need the right API. There is no generic application that can "speak" with any API.
Now consider the following: Instead of having an ordinary application on top we use a text interface. This is the "intelligent" bot sitting on top of it.
- An API
- An intelligent bot
At this point in time we have three layers actually, as we still need an application to use this bot layer:
- An API
- An intelligent bot
- An application
This third layer is now something that either has a speech or a direct text input. Whatever it is - it is quite generic. It is not even bound to a special kind of output or input device. It can be a mic / speaker combination. It can be Skype. It can be a robot. It could be your smartphone. It could be your smart watch - heck, it could even be your tooth brush. This is a lot more flexible than what we had previously.
Now the possibilities are getting interesting. Other intelligent bots may also be that third layer. And these bots can communicate out of the box, as now API has to be learned. They all speak a human language (e.g., english). For instance, instead of knowing the API from one specific smart home vendor I only need to know what I want. If I want to set the temperature I write "set the temperature to 21°C". I don't need to know the API specifics. Suddenly, e.g., a personal assistant, can use the smart home system without knowing the API, its vendor, or any details. Simple!
Essentially, the common layer of abstraction also implies a better connection between humans, devices, and services. Finally, all layers will speak the same language. We've reached the layer of abstraction that is already mainly used by us for communication. Therefore, connected devices and services will also have the connection to humans implied. From a high-level point of view the search for a common protocol is over.
Bots also influence advertisement. Instead of requiring large amounts of analytic services we can simply see what the users queried. A webpage can only provide information and needs to be searched for information. An input box is inviting to just ask. This was already the formula of success for Google - now everyone can get that information. Its just one magic input box away.
So what's the fuzz about? In a nutshell its another layer of abstraction that inverts the information flow (from to the user to from the user) and allows human-non-human interaction in a novel way. We don't have to come to them they come to us!