The JavaScript blog.


desktop atom articles electron isomorphic

Awesome Electron, Modernising Client-Side Code

Posted on .

Awesome Electron


Electron is the web-based desktop framework that was originally developed for GitHub's Atom editor. It seems to be catching on, so Sindre Sorhus is compiling a list of Electron applications in Awesome Electron.

The list includes Monu by Max Ogden, which is a process monitoring menu bar application for Mac OS X, and some simpler tools like a Gulp task runner.

Sindre has also made generator-electron, a Yeoman generator for Electron applications. To create your own desktop application with Yeoman, just run:

npm install --global generator-electron  
yo electron  

Modernising Client-Side Code, the Isomorphic Way

Kevin Grager from Algolia (Search API - YC14) shared an article about how they modernised a Node application: Modern JavaScript libraries: the isomorphic way:

Our JavaScript and Node.js API clients were implemented 2 years ago and were now lacking of all modern best practices ... This blog post is a summary of the three main challenges we faced while modernizing our JavaScript client.

It's pretty detailed and tells a story that you don't usually hear: the team looked at weaknesses in their project's design by writing tests. Then they rewrote parts of it using newer techniques, finally converting client-side code to be isomorphic.


hosting node modules npm desktop libraires

Free js.org Subdomains, Wallpaper

Posted on .

Free js.org Subdomains

Stefan Keim wanted to give something back to the JavaScript community, so he's started js.org -- a service that provides free subdomains for JavaScript programmers. You can host your project on GitHub, then point a js.org subdomain at it.

To claim a subdomain you need to do three things:

  1. Create your GitHub Pages-hosted site
  2. Add a CNAME file to your repository with the js.org name that you want
  3. Make a pull request to GitHub: js-org/dns that adds your CNAME to the list

Given how valuable the js.org domain is I think this is very generous of Stefan, and the GitHub-based approach is a nice idea as well.


Sindre Sorhus sent in wallpaper (GitHub: sindresorhus/wallpaper, License: MIT, npm: wallpaper), a module for changing the desktop wallpaper in Mac OS X, Linux, and Windows.

It has a command-line tool (wallpaper [file]) and a Node API:

var wallpaper = require('wallpaper');

wallpaper.set('unicorn.jpg', function(err) {  

wallpaper.get(function(err, imagePath) {  
  //=> '/Users/sindresorhus/unicorn.jpg' 

It would be great to combine this with a Node Canvas module that generates data-driven art, or maybe even using PhantomJS to render a webpage to recreate the joys of Active Desktop!


node browser modules desktop gnome bindings

Node Roundup: GNOME, fs, procjs

Posted on .

You can send in your Node projects for review through our contact form.

JavaScript and GNOME

GNOME now recommends JavaScript for authoring GNOME applications. For information on what this means for the near future of GNOME desktop development, see JavaScript in GNOME. Although it looks like they're using SpiderMonkey rather than Node, Jérémy Lal sent in an email detailing his positive experiences with node-gir (GitHub: creationix / node-gir, npm: gir) by Tim Caswell which provides bindings for GObject Introspection.

These bindings can be used to make dynamic calls to any library that has GI annotations installed -- Jérémy said he was using it to generate PDFs from HTML.

Component: fs

fs (GitHub: matthewp / fs, License: MIT, component: matthewp/fs) by Matthew Phillips is a component that brings Node's fs module to the browser. It's designed to be cross-browser, with the FileSystem API for Chrome and IndexedDB for Firefox and Internet Explorer.


procjs (GitHub: vzaccaria / procjs, License: MIT, npm: procjs) by Vittorio Zaccaria is a set of command-line utilities for getting JSON representations from the output of ps. It also comes with a REST server that provides a JSON API for the same data.

The project is built with LiveScript, and can be invoked with jsps along with several arguments.


graphics competitions webgl desktop

J3D, GL64K, node-webgl

Posted on .


J3D is a 3D library for WebGL that has a Unity3d object/scene exporter. The author
wrote a blog post about it entitled Taming

with some background on the library:

J3D is a very simple engine that can load 3D models and textures, has a scene with a hierarchy of objects and can render everything using basic lights. Somewhere on the way I added the feature to export models from Unity3d which I thought would make the job of preparing assets much easier.


GL64K is a competition to create a WebGL demo in 64k. If you're not familiar with what they're expecting, there's an
example called Glass. The first
prize is \$2000 and a copy of the OpenGL ES 2.0 Programming Guide, and
entries must use skeleton.html.
There's only 7 days left to enter the competition!


I keep asking myself, "how can I write desktop-based OpenGL with Node?"
It seems like Brian McKenna is working on a solution with
node-webgl. It looks like the project is in early stages yet, but there's a blog post with a
screenshot to prove it works: node.js

I hope to see more Node desktop integration.