Skip to content
Chris Williams edited this page Jan 7, 2014 · 1 revision
Nodebots is not about making robots, rather it is about making accessible the making of robots.
- Chris Williams

The concept of Nodebots first came about from discussions about modeling real world objects and actions in a more natural, chainable, and reactionary manner. I, Chris Williams, had just finished the first version of node-serialport and was using it to obtain and process environmental sensor information. In this system, the code felt more like a typical event handler in the web browser; I would register a functional callback to execute under a defined future conditional set for all occurrences of that conditional set. The system shouldn't block waiting for the conditional set to yield truth, but rather wait for state change events and then, if appropriate, evaluate the conditional callback. The jQuery library had, by this point, popularized the similar concept of event binding for the majority of web developers within DOM programming. Given its general understanding by most developers, I put forth a new idea on how hardware programming should operate in a simple and accessible manner, as exemplified below:

$("livingroom").bind("motion", function() {
    $(this).find("lights").brightness("75%").dimAfter("120s");
});

In this concise example, we can envision some querying method against a scene (in this case for the scene labelled "livingroom") and then binding some function definition that will be triggered on the "motion" event (likely initiated by an IR sensor). Once the event is triggered, the function definition is triggered which then uses a combination of querying and chaining to set the state of the lights in the living room. To your average web developer, this should read almost naturally as "For every motion event in the living room, set the brightness of the lights to 75% and dim them after 120 seconds" or as is more commonly known - an automatic light switch. The beauty, appeal, and magic of Nodebots isn't the JavaScript, it isn't the hardware, it is the abstraction that affords the two to happily coexist. While many of the authors henceforth will provide a different perspective of what is a Nodebot, they all point to the power of abstracting low-level hardware constructs to create far more accessible components for all to use.

I refer to this trend as the 'democratization of hardware' and it is only a small part of a broader story that extends well before node.js and well beyond node.js the language and into other similar high level languages. The original and still core target platform for Nodebots is the open source hardware known as the Arduino. The Arduino platform revolutionized prototyping and educational hardware by providing a fully open and extensible core platform is still growing to this day. The Arduino has become the base for a larger movement within technology to not just produce digital output, but physical creations that connect with the digital world. That movement is commonly referred to as the "Maker Movement" or "Maker Culture" and encompasses a breadth of concepts from automated machining of materials (CNC machines) to futuristic additive devices (3D printers) to the much loved robots and drones.

As a developer this new trend can be very scary at first glance as we have been taught, trained, and constantly pushed to create the "next big thing" and produce "web scale" while learning ever more complex constructs and ideas. Most developers have had to specialize in a specific domain in order to hope to keep up with the continual acceleration of technology and taking the leap to another specialization has become almost too much to even attempt. This is where Nodebots shines brightly; it allows a developer to utilize all of their exisitng skillset will supplementing it with, at first, abstracted hardware instead of having to dive head first into a whole new discpline.

That is the what of Nodebots, the why of Nodebots becomes immediately apparent with even the simplest of examples - the blinking LED. The thrill and excitement of causing change in the physical world through a combination of code and wiring rejuvenates a developers spirit. With all of the individuals I have instructed and witnessed, the visible glee and joy of creation is always present. So it is on this note, I encourage you to go forth, dabble, play, and most importantly, Nodebot Onward!