JS has matured over the last handful of years - the days of being a niche language are behind us - and whilst some developers may chuckle at some of the JS “quirks” that still exist, many won’t doubt that it is a powerful language that is used widely to deliver critical applications in a variety of scenarios. Given it’s popularity and maturity, the question is, why not use JS for other things besides web applications? We’ve seen over the last few years with the increased popularity of nodejs that there is certainly a desire to use JS in other situations and the number of non-web related use cases is growing.
One such area is in building devices for the physical world. When I started in hardware it was C or nothing. There were a few people over in the Java world but for anything you built, the expectation was you’d build it in C. The arduino team did an excellent job of creating a library to make that process easier and abstract away some of the horrible parts of C that sat between creator and creating, however C was still the required method of production. Whilst other languages such as python and ruby have tried to become languages of the physical world too they haven’t done nearly as well as JS has. The main reason for this is simply scale -
there are more JS developers in the world than in all other languages combined.
After these initial events, things have ramped up considerably. Hardware continued to get cheaper and more developers started showing interest. In 2015, International NodeBots Day attracted participants from nearly 50 cities in over 20 countries with well over a thousand developers taking part. Numerous side events are now taking place with specific focuses such as on the use of JS in IoT and how to build wearables using JS. Groups within the community are looking at ways to get JS closer to the hardware through the use of single board computers such as the Raspberry Pi and Intel Edison whilst others focus on leveraging new high powered chipsets such as the ARM Cortex that may be able to run JS natively in a VM.
I’ve seen students use a few cheap components to make interactive games that blend the notion of interface and controller between physical device and what is on screen. Then there were the 12 year old kids who convinced a parent to let them all skip school so they could come to a NodeBots workshop and build battlebots for the day. JS in the hardware world still has a long road to travel - there are still fundamental challenges needing to be fixed and so many bugs left to squash. However there is a groundswell in the web community that are starting to feel that in the world of connected hardware, maybe our talents in design, systems and human interaction are the natural custodians of these new devices we will be bringing into our lives. Certainly, a diversity of backgrounds beyond the traditional engineering skill set won’t hurt right?