If you have ever launched a web page on a Raspberry Pi or Arduino, you know that it feels a bit like magic. How is it possible that a device the size of a credit card can be a web server? Its awe inspiring to be sure. For me, it leads to one of the key questions I have about the Internet of Things and how it will affect our world. How are we going to organize and search for all of these billions of devices?
When the web began, there were millions of web pages that were not properly organized or connected. I remember before google existed using AltaVista for images, Go.com for sports, and AOL for news. The next iteration was the hierarchical taxonomy that Yahoo introduced, were you could browse through categories to find what you wanted by getting more and more specific. And then Google arrived and it quickly became clear that free-form text search was going to be the way forward.
How will this process evolve for the Internet of Things? I recently listened to an episode on my favorite podcast Software Engineering Daily with the inventor of TCP/IP – the legendary Vint Cerf. One of his key ideas around IoT was the need for filtering out meaningful data sources. I suppose this isn’t very different from pagerank algorithms that originally helped decide what would show up on your Google search. But how do you conduct pagerank for objects? On the web, websites connect to each other because they are part of a topic or feature set – sports news connects to team pages which connect to fan pages. In IoT, objects will be connected based on proximity regardless of their common features. That might not be very helpful when counting the number of inbound and outbound connections to an object. A pagerank algo might tell you that the most important device in your search is the one that is closest to the highest number of other devices. This would be a sort of centroid device – in the machine learning/clustering sense of the word. But finding the centroid might not be very helpful when you are looking for one device in the middle of nowhere.
Imagine its 10 years in the future and you go on your IoT search engine. You need to find a temperature sensor in Antartica that will give you the current reading. So you type in the words “sensor + Antartica”.
What happens next? Well, if every sensor in the world is running its own web server and that web server is connected to the internet and there are other pages linking to and from it, you might find it using traditional search algorithms. But that seems unlikely.
After all, why would you want to use the precious resources of a micro sensor to run a web server? Wouldn’t you rather delete Node.JS and add some additional computational capability or store more temperature readings on its limited memory? So lets assume no web browser on your temperature sensor. Now what? How in the world do you find it?
Well here’s an idea, create a new IP naming convention that can include geographical features such as latitude and longitude. And add a feature that explains the type of device you are encoding. If you type in -77.375894, 0.069533 in Google Maps you will find yourself in the middle of Antartica. What if the IoT IP address for your temperature sensor was (-77.375894, 0.069533, TEMP)? I suppose you would have to change it if it moved – but then again we are constantly changing IP addresses in our current state of the world. And of course the MAC address would still identify the hardware you are looking for. I’m sure that I’m not the first one to think of a taxonomy for IoT that includes location. In fact, I wouldn’t be surprised if there are hundreds of proposed hierarchical naming structures already out there.
What I do know, is we are going to need something that doesn’t depend on IoT devices being on the web. And whatever that naming convention is, will have to be pretty flexible and have a whole lot of digits.