Embedded Systems... in JavaScript?!?
One day, a friend asked me how hard it was to make a standalone dot matrix mass transit ETA sign. He wanted to pull transit data from the web and display it as if he were standing in a mass transit station. Approaching the problem from an engineer's mindset, I naturally went the path of least resistance. "Do you need a real display, or can we simulate it? The real thing could take you months to finish from scratch, but if we fake it, it's a 30 minute project."
Rather than imagining the hours it would take to meticulously pore over mazes of design docs and pinout diagrams, I began to wonder if anyone ever tried coding an embedded board in JavaScript. If done right, you could take the abstraction and the countless frameworks, combine it with the ability to handle low level hardware, and make embedded systems programming quick and painless. As it turns out, such a board exists, and it's called the Tessel.
The Tessel is a pretty fantastic piece of hardware. This 2x2 inch square runs NodeJS and supports NPM right out of the box, and features several USB ports and pins for low-level IO. An SoC commonly found in internet routers does the heavy lifting, while a second processor commonly used in arduinos does real time IO. (That's something a Raspberry Pi doesn't have) To sweeten the deal, not only is the Tessel a NodeJS based webserver, it also functions as a standalone internet router. Yep-- that's right. With a little bit of imagination, you can connect to the Tessel from any device via wifi, pull a webpage, and use websockets to make a fast and easy remote control for a Tessel powered Mars rover. No extra hardware required. Well, maybe not quite.
The day my Tessel arrived, I tried to make a small Google home/Alexa clone. As it turns out, Espeak, a text to speech program, was included in one of the basic AV libraries, which also supported USB microphone and speaker. Speech to text, however, was a bigger issue. Several hours of fruitless labor consisting of incompatible dependencies, deprecated APIs, and high usage costs steered me away from speech to text. Instead, my "smart" assistant now reads me the weather forecast when I wave my hand in front of a proximity sensor... at least it smiles at me.