Articles

Enabling Proprietary Audio/Video Codecs in NW.js

2017-11-01 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.

Controlling Neopixels in an NW.js App

2017-10-13 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 [crayon-65f928a789cbf817443357-i/] and [crayon-65f928a789cc7393293086-i/] modules. It’s time to shine some light on the subject!

Using the new Phidget22 JavaScript API with NW.js

2017-09-08 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.

Viewing Webcam Feeds and Grabbing Still Frames in a Modern Way

2017-01-23 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. 

Controlling AC Devices with the NJA Toolchain

2016-10-17 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 [...]

NW.js & Electron Compared (2016 Edition)

2016-03-26 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 [...]

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

2016-02-14 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.

The Gamepad API & Physical Computing

2015-12-13 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.

Web MIDI: Music and Show Control in the Browser

2015-10-06 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!