Wednesday 12 June 2013

Internet of Things

Ever since I started to play with Node.js many years go, I wondered if maybe there would be a nice clean way to solve this "Internet of Things" shizzle.

Node was really the first time we saw JavaScript make it to the server-side in a good way. We did it at Netscape with LiveScript but Javascript wasn't yet a standard at that point, and the features were limited. This was pre-ECMA days. With Node, what we saw was the "web programming language" move underneath the application, rather than just being out on the edge as the Web UI language of choice. Then some guy writes a whole operating system in JavaScript, and suddenly we see the "web language" move underneath the whole OS.

At this point I started to wonder if maybe one day this inherent web enablement would just make it's way even lower in the stack, and we end up with a standard (and extensible) "WIOS" (for lack of a better name). Basically a Web-enabled BIOS that could run everywhere. That way no matter what you did on top of the device in the firmware or app layer, it was inherently Web enabled. The new stack might then end up being WIOS -> JavaScript -> OS -> App. Now that has turned the tables a bit from the traditional BIOS -> OS -> App -> Web layering we are currently used to. 

The WIOS would need to be extensible so that each individual device type could extend it to allow for whatever native I/O capabilities is has (from sensors to lightbulbs to washing machines to whole cars). Now the Internet of Things seems so much simpler to achieve. If everything on the planet was WIOS enabled, then (secure) WebSockets would be the de-facto communication choice, and you could then use MQTT over the top of the WebSocket to do the M2M messaging piece.

Sure, you could just do the same with a regular TCP/IP based layer at the bottom and nothing else, but you would then need to deal with arbitrary ports over the Internet, probably some secure tunnelling, firewall issues, etc etc. Instead, having all these devices communicate *any* protocol over the Web solves a lot of these issues, requires no changes to Firewalls, is a known deployment and scale up/out model and is instantly intra-inter-cross-Cloud ready. 

I've bought some Ninja Blocks and plan to WIOS enable them next time I get bored.

Bit whacky, but til I see the Internet of Things brought together in a common, consistent manner, anything and everything is up for grabs. :)

No comments:

Post a Comment