Cisco thinks that as many as 50 billion devices will be connected to the Internet by 2020.
To put that in perspective, that’s nine devices for every one of the eight billion people expected to be on the planet. Your phone, the fitness device on your wrist, your doorbell, the thermostat in your hallway, the smart TV in your living room, the car in the driveway, the Amazon package at your doorstep, and even your family pet — all connected to the world and beaming data home.
So what does this mean for developers? How will it impact how we develop software and applications? What kinds of things will developers need to consider when building things for the Internet of things?
Let’s have a look.
Knowing Device Platforms
The Internet of things will involve billions of devices, many of them tiny. So developer knowledge of device platforms as well as an awareness of how to build applications on those platforms will be critical.
There are already numerous operating systems to choose from for devices. Google recently launched KitKat — a slimmed down Android — which is designed to run on a broad range of entry-level devices that have as little as 512MB RAM. With Android now accounting for 81 percent of the smartphone market, it will probably play a big role as a device operating system.
Open source will play a big role in these platforms too, from open source hardware specifications to open source software running on devices. A team at Spark recently built an open source version of the Nest in under a day. It wasn’t as beautiful, but it worked.
Discovery and Integration
With 50 billion devices out there, vendors will have a tough time anticipating how those devices need to be integrated with others.
This will need to go way beyond just machine-machine communications (M2M). Rather than just being able to communicate with other devices of the same type, we’ll see devices connecting almost organically with all kinds of other devices nearby. These devices will need to be self aware of their environment and able to connect with other devices.
This is one reason API languages like RAML, which enable discovery and can describe how an API behaves, are so important. If a device can broadcast what it can do and how it can be interacted with using a common machine language, then devices can integrate together by themselves at runtime, to communicate, share data, and even control each other. Imagine if that thermostat in your hallway was able to tell the lights in your living room to dim down when it gets too warm in the house.
APIs are going to be highly disruptive, as I recently detailed, so it’s critical that companies put API strategies in place now to reshape their platforms and products to be API-friendly.
Knowledge of protocols will also be important, especially those that can support devices running on low power with tiny capacity and latency issues. Many protocols already exist today such as MQTT, CoAP, STOMP and AMQP. I think it’s likely that HTTP-based protocols will win out due to their pervasiveness and the ability to easily integrate with the web-oriented applications that companies are already building today.
These billions of devices will be self-learning and will adapt to your needs and preferences. The Nest is the hottest thermostat on the market today – it knows what temperature you like at home, how to turn the heating off when you leave home, and that it should adapt heating and cooling based on energy price spikes. Intel CEO Brian Krzanich recently described how Intel wants to “make everything smart,” including ear buds, watches, coffee cups, and even diapers that signal parents when it’s time to change the baby. Imagine what it could be like by 2020.
As we write software for these devices, we’ll need to make learning algorithms, recommendation systems, and machine learning part of their software makeup in order to improve the user experience over time.
50 billion devices will need to react to events and to each other in real time.
The automatic changing of your home thermostat setting based on what it knows about you could provide a signal to other devices in your home that you are too hot or cold, and they should react appropriately. Maybe your utility company should know ahead of time what your thermostat is about to do so it can prepare for the increase in energy demand.
The wearable devices on your body might want to provide a personalized experience too. FitStar can already pair with your FitBit wearable activity tracker to personalize your workout based on how you’re progressing. Each move and repetition is constantly adjusted based on what you did just a second ago.
Reactive programming and event-driven applications that are driven primarily from events outside of their environment will play a part in how we develop for these devices. Languages and frameworks that are designed to scale and handle real-time events efficiently like Java, Scala, Akka, and Node will be used to build highly reactive devices that can scale to high numbers of concurrent events occurring out there in the world.
All of these events will need to be handled and processed too, which means we’ll need to understand how to build systems for pipelining, processing, and analyzing large amounts of data using technologies like Hadoop and Storm.
We’ll also need to prepare for “smart dust” — tiny devices so small they are invisible to the eye but have enough RAM and wireless capabilities and can run tiny operating systems. Imagine trillions of these tiny smart devices the size of dust particles floating around the planet, perfectly capable of gathering data and sending it back to a base station.
A story from ReadWrite a few months ago described a fictional scene where soldiers in the future use smart dust to check all corners and alleyways of a city for hidden militia and explosives. The dust can “track movement, biometric indicators, temperature change and chemical composition of everything in [the] city.” The scene in the article is fictional, but the concept of smart dust is not. It could also be used in other ways like monitoring global temperature and pollution, innovation in the medical field, or even planetary exploration.
It may take longer than 2020 to see the smart dust concept realized. In the meantime, developers can be sure they will be challenged like never before in building the applications and platforms to support those 50 billion things.