Seattle-based hacker, designer and researcher. I make tools that help people debug and test their programs more effectively. PhD '15 @ UW CSE; BS '10 @ Purdue CS.
I currently work on web browsers at Apple. Since 2023, I am the lead engineer for Safari's web developer tools such as Web Inspector and WebDriver. In my role, I lead major efforts using a variety of skill sets: user research, prototyping, feature design, implementation, validation, testing, integration, maintenance, standardization, and documentation.
From 2016 to 2023, I added WebDriver support to Safari and MobileSafari. I planned and executed all aspects of the product: feature planning, development, bug fixing, testing, CI support, telemetry, bug triage/diagnostics, standards work, documentation, and partner outreach.
While working on WebDriver, I also took on other projects related to Web Inspector, including demoing at WWDC, adding telemetry and RTL support, writing unit test libraries, and representing Apple in the W3C Browser Tools & Testing Working Group.
Deterministic replay is a fundamental enabling technology for advanced developer tools. My dissertation work investigates deterministic replay in the browser: how to capture and replay web applications; affordances for navigating to relevant program states; and debugging tools that use past program states to explain behavior.Internship at Apple in 2014.
Dolos is a modern, low-overhead deterministic replay infrastructure for capturing web application behavior. Dolos is being upstreamed into the WebKit project.The original prototype is explained in our UIST 2013 paper; later prototypes have been upstreamed to WebKit.
Timelapse is the first user interface for capturing and replaying web application executions directly from the browser's developer tools.University of Washington, 2013–2014.
Probes enable a developer to add logging statements to a live or captured execution while it runs. Time-indexed outputs are a scheme for indexing and seeking playback to text outputs such as console logging.University of Washington, 2014—2015.
I am a reviewer on the WebKit project, with a focus on better tools for web developers and browser vendors. I began upstreaming Dolos and other parts of my dissertation while I was still earning my PhD.Internship at Mozilla Research in 2012.
Servo is an experimental browser written in Rust that explores new ways to parallelize, decompose, and secure a rendering engine for web content. I prototyped the current layout subsystem (block/inline/text layout), and worked on many other things.
webkit-dashboard: a redesign of the WebKit test history dashboard, with better visual encodings, search and filtering features, and better performance.Final Project, Grad Graphics course, Autumn 2014.
glsl-simulator: an experimental simulator for WebGL Shader Language. Using the simulator, browser developer tools can implement standard debugging tools such as stepping through control flow, introspecting live state and adding logging.Internship at Mozilla Research in 2011.
C3: a research infrastructure for extensible, type-safe web browsers. I wrote a rendering engine for inlines, blocks, floats, and tables in C#.
Scry: Explaining Visual Changes in Web Interfaces.
Interactive Navigation of Captured Executions via Program Output.
'War Stories' of Debugging.
Interactive record/replay for web application debugging.
C3: An extensible, reconfigurable platform for HTML-based applications.