My name is James, and I work on the Firefox Developer Tools. I like to create things and write about technology.

Immutable Data Structures and JavaScript

October 01, 2015

A little while ago I briefly talked about my latest blog rewrite and promised to go more in-depth on specific things I learned. Today I'm going to discuss various ways to use immutable data structures in JavaScript.

The Seasonal Blog Redux

September 17, 2015

It's that time of year again! The weeds are growing, the air is thick and stagnant, and I just deployed another refactoring of my blog. "Why does he keep working on his blog," you're thinking, "when I could do all of that with a static-site generator like Jekyll?"

Why React Native is Different

May 06, 2015

I gave a talk at a local JavaScript meetup in Richmond, VA about React Native. Here are my slides and a recording of the talk. Check this out if you want to see why React Native is so cool!

Stop Trying to Catch Me

April 07, 2015

I'm probably going to regret this, but this post is about promises. There are a few details that I'd like to spell out so I can point people to this post instead of repeating myself. Here are a few reasons why I don't like promises.

Live Editing JavaScript with Webpack (Part III)

April 02, 2015

Part I and Part II of this series lay the groundwork for building not only the frontend code of your app, but also the backend. So far, while the system has a nice consistency, it offers little to the casual observer. Today, in this final post, we are going to look at how to live update a running JavaScript system using webpack's hot module replacement.


  • LLJS fork of LLJS that compiles to asm.js
  • nunjucks powerful templating system for javascript
  • outlet simple Lisp languange that compiles to javascript
  • dcpu-lisp static Lisp that compiles to DCPU-16 assembly code
  • shade terrible WebGL graphics engine
  • octoshot multiplayer WebGL 3d first person shooter
  • css-animations.js easily use CSS3 keyframe animations from javascript
  • dom3d 3d objects with purely 2d CSS transforms