I was just chatting with the guys and gals at Toit, which is a rather interesting company that’s based in Denmark. These clever little scamps have come up with a whole new take on implementing the software portion of IoT devices. I will explain further in a moment, but first…
…I’m sorry, I’m easily distracted. I was just about to start typing the second paragraph to this soon-to-be-epic column when I glanced at my web browser to see an article titled How Pre-Prohibition Drinking Laws Led New Yorkers to Create the World’s Worst Sandwich. It would take a stronger man than me to resist a topic such as this, so I bounced over to take a look. As a result, I now know that the Raines sandwich was (a) everywhere at the turn of the 20th century and (b) it was inedible.
Now, where were we? Did I ever mention that I’m a huge fan of steampunk, which is a subgenre of science fiction that incorporates retro-futuristic technology and aesthetics inspired by 19th-century industrial steam-powered machinery? Not surprisingly, this explains why a lot of my hobby projects have a steampunk look-and-feel. One thing that really sets my teeth on edge is when I see something that purports to be steampunk but that brazenly flaunts Phillip’s drive screws. As I said in my recent Steampunk Nuts and Bolts blog:
[…] you will never find me using Phillip’s drive screws on my steampunk hobby projects because — even though they were invented by Henry F. Phillips in 1936, thereby predating Torx screws by 31 years — to me they scream “Hello there, I’m from the 20th century, what’s your name?”
I don’t know if it’s because I’m getting older — I like to think that I’m maturing like a fine cheese (or wine) — but every time I see something new on the technological front, it makes me think of how fast we’re moving and how far we’ve come in such a short period of time. For example, as I noted in my The Times They Are a-Changin’ blog, my grandparents didn’t get electricity installed in their house until the middle of WWII when my mother was around 13 years old. Since the gas mantles they had previously used to light their rooms could leak if you weren’t careful, my grandmother would cover any unused electric sockets with sticky tape “to stop the electricity leaking out.”
A few years ago, when I was visiting my dear old mom in England, I gave her an iPad Pro as a present (although she’ll be 92 this year, she wields her iPad like a ninja warrior). I also set her up with a profile on Amazon and presented her with an Amazon gift card, which we loaded into her account. Once I’d explained how Amazon worked, she asked, “What should I buy?” I immediately countered this cunning opening gambit by replying, “What do you want?”
After thinking for a few minutes, my mom said that her old electric toaster and electric kettle had seen better days, so she’d really like a matching pair of new devices. It didn’t take long for her to find what she wanted on Amazon, to click the “Purchase” button, and to have the little beauties winging her way. I remember asking her, “What would your mother have thought if she could see you now, sitting in your comfy chair, using an iPad, connecting to your Wi-Fi network, and ordering an electric kettle and electric toaster over the internet?” My mother replied, “Your grandmother wouldn’t have understood any of this. The only things she would have understood, and what would have amazed her, would have been the concepts of an electric kettle and an electric toaster!”
Do you recall my Secure Your Data at Rest, Stupid! column? In that piece I mentioned that, in the mid-1960s, the company my mother was working for at that time started to rent a room-sized mainframe computer from IBM. As part of this, they constructed a huge building in which to house the beast and they created a special subsidiary company to be in charge of everything. Thinking of this reminded me of the Google60 art project, which allows us to envisage what Google might have looked like if implemented in the 1960s using the technologies of that era.
If you haven’t already experienced this, make sure your computer’s sound is turned on, go to the Google60 page, wait a few seconds until the punched card appears, and then use your mouse to click on the typewriter buttons to specify what you want to search for (I just entered “Cool Beans”, for example). When you are ready, click the “Return” key to initiate your search and then sit back and watch the printer perform its magic. When you see the message, “WAITING FOR MANUAL CONTROL INPUT…”, select ‘1’ to perform your search.
Dang, I just did this, only to be informed that the Google web search API was shut down in May 2016. Well, that’s a shame, but all is not lost. I just entered option ‘6’ to access an archived search because who can resist something that says, “CUTE CAT”? I tell you, looking at the tape drives spinning and then listening to the printer and watching the search results appear takes me back to the summer of 1980 when I started my first job as a member of a team designing mainframe computers. In the bowels of the facility was a huge room with loads of tape drives and technicians scampering back and forth loading and unloading tapes; also, Teletype printers with their boxes of fanfold paper were everywhere.
The reason for my rambling musings is that in those far off times, I could never have conceived of things like the internet and the internet of things (IoT) and wireless connectivity and… you name it, and I wouldn’t have been able to conceive it. And, out of all the things I wouldn’t have been able to wrap my noggin around, the offerings from the folks at Toit would have been at the top of the list.
Now, you have to remember that I’m a hardware design engineer by trade, and my understanding of the software side of things is somewhat simplistic on a good day with a tail wind, so please keep this in mind while you are perusing and pondering the following.
Are you a web developer? If so, do you remember when you had to write your application in three different languages in order for it to function on mobile, desktop, and web-based platforms? The founders from Toit fixed that problem by creating the Dart language, which was the fastest-growing programming language in 2019 because of its adoption by Flutter (Google’s UI toolkit for building applications).
Based on their virtual machine and programming language successes, these heroes and heroines — along with the rest of the ever-growing Toit team — have gone on to create Toit, which is a cloud-managed container platform for the IoT. As the folks at Toit told me:
We have built a virtual machine for ESP32s — and similar micro-controllers — that allows us to augment our customers’ IoT hardware with a scalable and programmatic API. Through this API, they can service, monitor, and communicate securely with their device fleet in production. Our gRPC-based API allows them to safely upgrade firmware, install and remove individual applications (this is where our virtual machine shines), and gather invaluable telemetry and data from the field. This works even on cellularly connected, microcontroller-based systems where our robust device software layer adds the necessary sandboxing and efficient execution of a high-level, memory-safe language that we have seen really improve our users’ productivity.
I fear that this is the part where my brain becomes a little “fluffy around the edges.” My (pitifully limited) understanding is that this involves a managed operating system / runtime environment and a virtual machine that allows users to express applications that can run side-by-side without interfering with each other or with the main system in any way. In addition to handling all of the encryption, device-specific certificates, and authentication, Toit also includes a cloud-based programmable API that allows you to service fleets of devices around the world. As they say on their website:
No matter which bug slips into your code, the worst it can do is crash that one application. The system, as well as all your other applications, keeps running as if nothing had happened. This makes changing and deploying new code risk-free. Treat firmware and drivers as you treat software. Set up a continuous delivery pipeline and deploy new device code on every commit.
In addition to everything else, Toit is a modern, object-oriented, memory-safe language that was designed specifically for the IoT. Toit comes with state-of-the-art editor integration that includes syntax highlighting, goto definitions, and auto completions.
To be honest, I’m floundering out of my depth here. Things made a lot more sense when I was chatting to the chaps and chapesses at Toit. All I can say is that everything I heard sounded as though it would make IoT device creators and software developers squeal in delight. So, if you are an IoT device creator or a software developer and you are interested in learning more and/or squealing in delight, may I suggest that you bounce over to Toit’s documentation repository and feast your orbs on all you find there (and then email me to explain what it’s all about). As always, I welcome your comments, questions, and suggestions.