One of the fun things I find about ARM technology is the way it scales up as well as down. Take for example ARM moving into the Server market space. There is a lot excitement around building new low power, cost effective server farms based around ARM technology. But what does it really take to build an ARM server today and what can you do with it when you've built one?
A typical web server is (unsurprisingly) going to consist of a Linux system and some kind of web server software stack that runs on it. node.js is an exciting new server platform that allows you to code your server side applications in JavaScript, the language that has typically only been used for programming the client side of web apps in your browser. JavaScript is an event driven language and the node architecture is designed from the ground up to be event driven and non-blocking making it highly performant and very scalable (up or down).
node.js is powered by Google's V8 JavaScript Engine that ARM has been actively contributing to over the past 3+ years and today runs extremely well on all of the ARM Cortex-A series of processors. V8 is well known as the JavaScript engine in Google's Chrome browser but it can easily be built as a standalone engine that can run from the command line. In fact the whole node.js stack benefits from the interactivity of JavaScript enabling rapid interactive development of server side applications.
A few years ago Texas Instruments launched the Beagle Board a low cost ARM Cortex-A8 based development board that ran Ubuntu Linux out-of-the-box. At the time this was extremely exciting because it brought full Linux to developers on a fan-less embedded board, at a price point that was really attractive. Wind the clock forward and there is now a complete not-for-profit foundation (beagleboard.org) behind Beagle based products with a mission to drive education in the design of open source software and hardware in embedded computing. The Beagle board now has its own cost-reduced embedded variant called the Beagle Bone Black and for just $45 you can get this board and start developing node.js applications out of the box that can run on 4x Lithium AA batteries.
This is where things start to get interesting. Up until last year most people thought of the Internet of Things (IoT) in terms of large numbers of very low cost, Internet addressable, fairly simple sensors that contributed data to a collective in the Cloud, and that server technology up there would aggregate and farm that data into knowledge. But what happens when you cut out the Cloud and put the server in the actual device? Suddenly you have an immensely powerful embedded software platform that mashes controlling hardware with serving modern web technologies over multiple connections and that supports true interactive software development from inside your web browser.
This kind of platform truly does take web servers where no web server has gone before- not yet into outer space but currently into inner space. The OpenROV Project is the brainchild of: David Lang and Eric Stackpole who have created an open source design for a micro-submarine (about the size of a shoebox) that can be used for underwater exploration where it can be hazardous to humans or were additional vantage points during a dive can be useful.
The whole micro-sub design is available as an open, free design on the web, and kits can be purchased costing around $899. But OpenROV is much more than just a kit; it is a thriving DIY community dedicated to enabling ordinary interested citizens to be marine biologists and explorers. [This is where I get excited about the possibilities of scaling down technologies that until recently were expensive and tethered in the workplace. The ability to scale software technologies down, as the performance of ARM Processors moves up, enables the thriving Maker Movement to build on these platforms and create the most amazing things.]
At the heart of the OpenROV is node.js running on a Beagle Bone board (the predecessor to the Beagle Bone Black) with an Arduino managing part of the embedded sensing and control of the sub. The webserver serves up telemetry and live video streams from the sub allowing the pilot to control the sub from their web browser back on dry land.
Scaling down further: I just recently contributed to a crowdfund for Tessel, a little board running an ARM Cortex-M3 that can be programmed in JavaScript. This board will ship early next year with several add-on boards for sensors and motor/servo control.
Also nodebots.io are a thriving community dedicated to building robots powered by node.js. Until recently the robots themselves were relatively simple and Arduino-based, with the actual intelligence (node.js applications) being in a gateway aka your PC, that the robots communicated with. However I think this is about to change with low cost, high performance computer boards like the Beagle Bone Black and the Raspberry Pi. Now JavaScript and node can run in the actual robot, potentially making it be truly autonomous.
I think this is just the beginning of a new generation of intelligent drone and robotic devices that will be made in the garages and workshops of the Maker Movement and beyond that they may become common place tools for exploration, education; extending reach of anyone interested in the world around us.
Thanks for the simple and clear explanation of what a web server is and can do. Marine projects - exciting new project. It'll be fun to see what other types of projects get launched.
Texas Instruments
There was a recent interview with David Lang in the BBC Future Magazine about OpenROV which I found inspiring.
Also if you are interested in nodebots you might want to check out Scott Hanselman's audio interview with Raquel Vélez of nodebots.io