Internet of Things

On 19 April 2017 about 1300 tech enthusiasts gathered in Utrecht for the IoT tech day. During this day I noticed two themes: on the one hand there were project demos, on the other hand there were talks about why you should use certain products and services to connect your projects. This showed me the state of IoT at this moment: it’s still early on the technology curve. This means that the tools and frameworks need to be developed further, and, more importantly, that standards still need to emerge. This in turn will lead to new ways of thinking about computing.

Part of the problem is that the term Internet of Things (IoT) is not very well defined yet. Is virtual/augmented/mixed reality part of IoT? How about cloud computing? Artificial Intelligence or Machine Learning? Mobile apps?

In my view, IoT consists of three parts: data collection using sensors, data processing using a cloud infrastructure, and presentation. In this regard, IoT is not different from any computer program. The difference is in the way the data is collected and processed, the infrastructure of IoT. In traditional computing, the data is sourced from a few sources, processed, and presented to the user. In IoT data is generated from thousands, perhaps millions of sensors. Due to the volume of data that is potentially generated, processing speed and storage becomes a challenge.

This is where the infrastructure comes in. Instead of one monolithic program, running on a giant machine, we build and connect any number of (micro-) services, running on multiple servers, located all around the world. These services aren’t written in a single language: we can choose whatever seems best for that particular step.

This is a game-changer. The role of a software engineer is not just to translate functional requirements to source-code. Maintaining changeability is also a key objective. We do this by abstracting complexity away, and organizing the code so its intention is as clear as possible. Methods should do only one thing, and they should do it well. Classes should have one responsibility, one reason to change. Now we can add services to this list, although I’m not sure what role these services will play in the abstraction and organization of code.

For now, the Internet of Things is the domain of tech-enthusiasts and big companies cashing in on infrastructure. However, this is the next revolution in computing. The personal computer, the Internet, and mobile each supplied their own challenges and solutions. Each revolution built on the previous one. IoT is the next revolution moving computing forward.