About me

I am a software engineer from Melbourne, Australia.

I work for Mozilla. I have a blog. Many of the links below are to posts from that blog.

I like making code faster and more memory-efficient. Examples: the Rust compiler, pdf.js (1, 2), JavaScript parsing, Clownshoes allocations.

I like writing profilers. Examples: DHAT, ad hoc profiling, Firefox’s about:memory (one, two, three, four), Firefox’s memory reporting (one, two), DMD (one, two).

I like overhauling ugly code to make it simpler, more reliable, maintainable, and performant. Examples: Firefox static atoms, Firefox prefs parser, Firefox startup, Gecko Profiler, Firefox BMP decoder, Firefox fatal compiler warnings, Nanojit.

I have run some projects and teams. Examples: MemShrink (1, 2, 3), Project Uptime, Project Candle, Mozilla’s Low-Level Tools team.

I like explaining things. Examples: Power profiling docs, Browser memory measurements, Memory consumption, Firefox memory improvements, Buffer growth, 64-bit Firefox, N-ary trees in C, Jury duty.

I sometimes do things that don’t fit neatly into the above categories. Examples: Firefox stack fixing, OS X Activity Monitor deep-dive, Power estimates, SegmentedVector, Tracking protection experiments, Bio-poem.

I have a PhD in Valgrind and other publications. I co-won the Most Influential PLDI Paper Award for a paper about Valgrind.