Enabling Proprietary Audio/Video Codecs in NW.js

November 1, 2017 Jean-Philippe Côté

Due to licensing issues, NW.js cannot play files encoded with proprietary formats (such as H.264 and AAC) out of the box. However, there is a quick and easy workaround to that problem. This article will tell you what it is.

Read article

Controlling Neopixels in an NW.js App

October 13, 2017 Jean-Philippe Côté

This article will show you how to control WS2812b-based LEDs – better known as Neopixels – from an NW.js application. To do so, we will be using an Arduino Uno as the interface together with the johnny-five and node-pixel modules. It’s time to shine some light on the subject!

Read article

Tracking Color Blobs in Webcam Feed Using Tracking.js

September 25, 2017 Jean-Philippe Côté

This article will show you how you can pick a color from a live webcam feed and track its movement in real-time. To do that, we will be using the tracking.js library and a bit of custom code.

Read article

Using the new Phidget22 JavaScript API with NW.js

September 8, 2017 Jean-Philippe Côté

During the summer, Phidgets inc. performed a complete overhaul of their API. This new version of the API (22) is, unfortunately, not backwards compatible. This means that our previous article on using Phidgets with NW.js is not applicable to the new API. The time has come for an updated article. So, here it is.

Read article

Viewing Webcam Feeds and Grabbing Still Frames in a Modern Way

January 23, 2017 Jean-Philippe Côté

Listing available webcams, identifying supported resolutions, viewing live video and grabbing frames should all be pretty straightforward things, right? Well, it turns out that, even in 2017, they are a little more tricky than one might expect. This article will help you do all those things while avoiding the gotchas that pave the way to webcam control. 

Read article

Controlling AC Devices with the NJA Toolchain

October 17, 2016 Jean-Philippe Côté

Devices that you plug in a 120VAC wall outlet are not necessarily what you would expect to connect to an Arduino. Most of the beginner-level Arduino projects deal with sensors and small actuators using voltages in the 3.3-5VDC range. But what if you want to use the NJA toolchain (NW.js, Johnny-Five, Arduino) to turn on or off a fan, a smoke machine, a spotlight or anything else that plugs into a regular wall outlet? Is that even possible? Of course it is! To do that, you will simply need four things: a 120VAC device, an Arduino, a relay and this article.

Read article

NW.js & Electron Compared (2016 Edition)

March 26, 2016 Jean-Philippe Côté

If you wish to create a desktop application from web technologies, the open source world offers two main choices: NW.js (formerly node-webkit) and Electron (formerly atom-shell). Deciding which one to go with is not so obvious. In 2015, I released a first version of this comparison between the two tools. However, the release of version 0.13 of NW.js brought on so many improvements that an update became necessary. Hopefully, the chart and comments in this article will help you choose the right tool to build your next project.

Read article

NW.js, Johnny-Five & Arduino: A Wicked Trio

February 14, 2016 Jean-Philippe Côté

With the availability of version 0.13, it becomes trivially easy to use NW.js with the Johnny-Five robotics library. Combined with a microcontroller such as the Arduino, you get a very powerful end-to-end toolchain for physical computing. In this tutorial, we will show you how easy it has become to control external devices and gather data from sensors in such an environment.

Read article

The Gamepad API & Physical Computing

December 13, 2015 Jean-Philippe Côté

HTML’s Gamepad API has been created specifically with online games in mind. However, this does not mean it cannot be used in other contexts. For instance, gamepads have been hacked to assist people with physical disabilities, repurposed for artistic goals or altered for the sheer fun of it. Whatever your physical computing project, this article will show you how you can use the Gamepad API within TangibleJS’ preferred deployment platform: NW.js.

Read article

Web MIDI: Music and Show Control in the Browser

October 6, 2015 Jean-Philippe Côté

Earlier this year, Google released Chrome 43. This release marked the official introduction of an amazing new feature: MIDI in the browser! The magnitude of this news for fans of physical computing cannot be overstated. This means you can a) control external MIDI devices from JavaScript and b) use MIDI devices to control what’s happening in your web browser. I almost cried… And the best part is: it actually works!

Read article


A tiny library for image processing. It offers various effects such as: gaussian, grayscale, highpass, invert, laplacian, prewitt, rgb, roberts, saturation, sepia, sharpen, sobel, thresholding, lowpass 3×3 and lowpass 5×5.

Go to project page


Powerful library for working with neural networks in a JavaScript environment. The project has great documentation with lots of examples that will help you get you up to speed with some machine learning techniques.

Go to project page


Node-RED is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways. It provides a browser-based editor that makes it easy to wire together flows using the wide range of nodes in the palette that can be deployed to its runtime in a single-click.

Go to project page