I'm currently (since March 2021) a software engineer at Google working on rendering in Blink.
I was a software engineer at Mozilla from 2003-2020, working on the Gecko layout engine, with a focus on implementing new CSS and layout features, making architectural changes to improve speed and memory use, building tools to debug memory use and memory leaks, analyzing automated crash report submissions, general debugging and bug fixing, driving projects to successful completion, and mentoring of both junior and senior engineers in many of these areas.
I've also been a longtime participant in work on Web standards: this includes participation in the W3C's CSS Working Group, being an elected member of the W3C's Technical Architecture Group, longtime involvement at a technical and standards policy level in both the W3C and WHATWG, and helping others at Mozilla interact with these standards bodies and with other companies participating in them.
The code I host in this github account (not counting forks of other repositories) falls into a few categories:
Proposals for Web standards:
- container-queries-implementability - Proposal for container queries designed to be implementable in web browsers (in progress)
- css-line-spacing - Specification of features for even spacing of lines in CSS. (in progress, though not active)
- css-supports-functions - Proposal for new functions for css @supports rules (now part of spec draft)
- css-intrinsic-isize-props - Proposed additions to css-sizing for properties to override CSS intrinsic sizes
- css-intrinsic-sizing-one-axis - A proposal to avoid having CSS intrinsic sizes start depending on layout
Tools used within the W3C:
- wgmeeting-github-ircbot - IRC bot to make github comments with relevant sections of Working Group Meeting IRC minutes
- gather-doc-email - Python script to gather email for a W3C disposition of comments
Documentation about CSS:
- inlines-and-floats - Document describing interaction of inline layout and wrapping around floats
Code related to timezones:
- tz.js - A library for working with timezones in JavaScript
- tzmap.js - A library for working with the geography of timezones in JavaScript
- timezone-map - A Web-based map of timezones as they are at a point in time, using both
tz.js
andtzmap.js
. - meeting-scheduler - Web application for figuring out what time a meeting is in multiple timezones. (A demonstration of
tz.js
use.)
Some mapping-related code I've written:
- osm-satellite-scripts - Scripts for processing satellite images for use in mapbox studio for tracing with OpenStreetMap iD editor
- osm-area-diff - Diff OpenStreetMap changes in a time period to help understand and revert vandalism
- walk-maps - A leaflet-based map of GPX traces of walks I've taken (without the private data)
- backpacking-maps - A leaflet-based map of GPX traces of backpacking trips I've taken
- rail-network-quizzes - code to use OpenStreetMap data to build rail network quizzes for JetPunk
Some other simple Web applications I've written:
- sf-elections-rcv - Web application to analyze the Ranked Choice Voting (RCV) of 2008-2019 San Francisco elections
- ssa-names-data - Web application to analyze some aspects of the Social Security Administration's baby name data
- president-ages - Web-based graph of the age of US presidents over time, plus 2020 candidates
Some Mozilla extensions I've written:
- char-identifier - Character Identifier is a Web Extension (runs in multiple browsers) that adds a browser context menu item for selected text that provides more information (from the Unicode database) about the characters selected.
- leak-monitor - Leak Monitor extension for all Toolkit apps (Firefox, Thunderbird, SeaMonkey, etc.) to detect some classes of leaks in the Javascript code in which the browser and other apps were written.
- about-accessibilityenabled - about:accessibilityenabled extension
A Mercurial extension I wrote:
- qfixdrift - Mercurial extension to clean up patch drift in an mq patch queue
My Gecko patch development from 2007 to 2018 lives in these Mercurial Queue repositories:
My Gecko patch development from 2019-2020 lives on branches in my fork of gecko.
I also have a Mercurial Queue repository of patches to the CSS Working Group's specs:
Other Mozilla-related repositories:
- nightly-topcrash-generator - code used to generate Firefox nightly build crashes, by build, which is a set of links to Firefox crashes in nightly builds, separated by build
- mozconfigs - mozconfig files I use for building Mozilla apps in different configurations
Other code I've written:
- sort-vcalendar - Sort a vCalendar file by the UID of the events
Most of the code I've written is not hosted in this GitHub account; it lives elsewhere. This includes contributions to:
- the Gecko layout engine used in Firefox (1998-2003, 2003-2011, 2008-2020)
- code contributions and code reviews in the Chromium project, the open source project behind the Google Chrome browser
- CSS working group specifications hosted in csswg-drafts and also a little bit in fxtf-drafts and css-houdini-drafts
- contributions to the W3C TAG Web Platform Design Principles, Design Reviews, and other repositories
- contributions to Mozilla's Specification Positions
- contributions to Web Platform Tests