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

Two Weird Tricks with Redux

April 13, 2016

I have now used Redux pretty extensively in multiple projects by now, especially the Firefox Developer Tools. While I think it breaks down in a few specific scenarios, generally I think it holds up well in complex apps. Certainly nothing is perfect, and the good news is when you want to do something outside of the normal workflow, it’s not hard.

RIP Over-Engineered Blog

April 01, 2016

It’s been 6 months since my last blog rewrite, so it’s time for another one. This time, let’s subtract.

Moving Breakpoints Intelligently

February 26, 2016

In most debuggers, a breakpoint will "slide" if the clicked line doesn't have any code. This is supposed to be a helpful feature, but it becomes **infuriating** if it behaves wrongly. In Firefox 46, we made our breakpoint sliding algorithm much more robust.

On the Road to Better Sourcemaps in the Firefox Developer Tools

January 11, 2016

In this post, I explain why it has taken so long to get the Firefox console sourcemapped. It requires an unobtrusive debug mode which is really hard to do, but we got it working. The console now has access to sourcemaps, so we are only one small step away from getting it working.

Starters and Maintainers

December 29, 2015

"It’s late Friday night, my wife is already asleep, and I finally found time to go through those pull requests on that old project I put up on github last year. My daughter is getting up at 7:30 though, so I better not stay up too late. ..."


  • 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