I was fiddling around in my homelab this weekend and finally decided to write this down as the thoughts have been kicking around for a while.
Years ago, when the term “Internet of Things” came to be, I thought it was pretty stupid … and let’s face it, in hindsight, it is a pretty stupid term. The internet is the internet, and while the objects connecting to it are “things” in the strictest sense of the word, it’s computers all the way down. Raspberry Pi? Adafruit Feather? ESP8266? All computers. Everything. It doesn’t have to have a Xeon or a Ryzen to be a computer, its RAM can measure in the megabytes. Let’s just lay that groundwork right now so we can go on to the next paragraph.
“Physical computing” is a bit silly as well, but to an extent it makes a little more sense. We’re grabbing data from the physical world by taking measurements of it. Temperature, humidity, proximity, brightness, presence or absence of a magnetic field, voltage, current, vibration, orientation … we’re taking all of that, putting the numbers somewhere, applying some operations to them, and putting them on a screen so we can make sense of it all. We’re gathering the data and visualizing it in a way that makes more sense to us than numbers on a spreadsheet. Maybe I’m misunderstanding, but that’s how I’ve interpreted this whole “internet of things” … thing. I’ve built some systems to do stuff with it, and based on what I’ve been reading about recently it’s become apparent that the entire economy that’s built up around it is a gateway to what folks typically call “enterprise technology.”
Now, I work with some enterprise technologies, but this isn’t a post about work. That said, there’s a pretty extensive overlap between the monitoring and reporting we use for those technologies, and what I was describing above. The stuff at the “bottom” of the ladder — lightweight stuff that’s designed to run on single-board computers, for example — implements concepts that translate really, really well to the high end. At some point the only difference becomes syntax, which may take a little practice, but nowhere near as much effort as learning something from scratch. It was the same back in college when we used different programming language for every other course. The only one that really threw me off was LISP.
Before containerization we’d spin up VMs or, before that, entire servers to handle some of these things. Right now, a tiny VM running a lightweight Linux distro, Docker, and a smattering of containers is enough for a homelab or a small to medium business environment. Given a docker-compose file, you can even class it up with a lightweight Kubernetes deployment using something like MicroK8s, K3s, or RKE2. Let’s Encrypt makes it almost trivially easy to get your hands on a certificate to secure everything properly. A really basic deployment doesn’t require too much in the way of configuration changes, but if your goal is to learn this stuff, editing some text files is going to come with the territory.
So … long story short: learning IoT, regardless of my opinions on the term, is a good way to get your hands dirty with some pretty powerful technologies. Good stuff if you’re looking for an in at some tech shops.