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

What’s in a Continuation

May 17, 2016

Many people have heard the word “continuation” because it has something to do with node’s callback hell. I don’t think most people understand what continuations really are, though. They aren’t just a callback function used by async functions.

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.

Projects

  • 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

Demos