Bio

I am a software engineer at Mozilla in Mountain View, California, where I work on the JavaScript JIT compiler (SpiderMonkey) in Firefox. Previously, I worked on compilers, static and dynamic analysis as part of my PhD and postdoc at Carnegie Mellon University in Pittsburgh, Pennsylvania. I've also worked full-time as a software engineer at Google in Mountain View and as a core architect at Intel in the beautiful Portland, Oregon area, which is my hometown.

I can sometimes be seen cycling, brewing beer, or getting lost in a forest. These days, though, I mostly spend my time staring at glowing rectangles and pushing buttons.

Timeline

Aug 2019 — Senior software enginer at Mozilla in Mountain View, California, working on Firefox's JavaScript JIT compiler (SpiderMonkey).
Mar 2019 — Jun 2019 Postdoc in CS at Carnegie Mellon University in Pittsburgh, Pennsylvania, working with Profs. Todd Mowry and Phil Gibbons.
Jun 2015 — Feb 2019 Ph.D. in ECE at Carnegie Mellon University in Pittsburgh, Pennsylvania, working with Profs. Todd Mowry and Phil Gibbons.
Apr 2014 — May 2015 software engineer at Google in Mountain View, California, working on protocol buffers.
Aug 2013 — Apr 2014 CPU architect at Intel in the Portland, Oregon area.
Aug 2009 — Jul 2013 Ph.D. student in ECE at CMU, working with Prof. Onur Mutlu on computer architecture topics, including energy-efficient core microarchitecture, memory systems, and on-chip interconnects. Left with Masters to work in industry (and subsequently returned).
Aug 2006 — May 2009 Undergraduate at Notre Dame in Computer Engineering.

Research & Academics

(List of publications, CV: industry / academic version)

I'm interested in all things related to compilers, static and dynamic analysis, programming language design, and tooling that enables humans to write better, faster, more correct software. (Basically, I think about software that thinks about software.)

While at CMU, I worked with Prof. Todd Mowry and Prof. Phil Gibbons on static and dynamic program analysis with a focus on auto-parallelization and other macro-scale program transforms. I was affiliated with PDL (Parallel Data Lab) and CALCM (Computer Architecture Lab at Carnegie Mellon). Previously, in another research group, I worked on core microarchitecture (energy-efficiency and heterogeneity) and on-chip interconnect networks and memory systems.

I defended my PhD thesis in February 2019, titled Finding and Exploiting Parallelism with Data-Structure-Aware Static and Dynamic Analysis.

I was fortunate to be supported by an NSF Graduate Research Fellowship from 2010 to 2013 and an SRC Graduate Fellowship in 2009—2010. I was head graduate TA for 18-447, Intro to Computer Architecture, in Spring 2012 and 18-742, Parallel Computer Architecture, in Spring 2010.

Miscellaneous

odes and limericks to amuse and please (and some computer architecture-specific limericks and (new!) compiler-specific limericks).
paper title generator for computer architecture research. Looking for your next research topic?
other projects: various side-projects, mostly software.