#!/usr/bin/perl print < Ian Hickson's Resumé

Ian Hickson, BSc



I am seeking a technical position on a software project that will improve users' experience of the Internet, on the cutting edge of the development and deployment of new Web technologies.


Summary: I am an experienced technical specification editor with a strong background in programming and quality assurance.

I have experience with the following technologies:

Programming languages
Significant experience with: Perl, Pascal, ObjectPascal; Some experience with: JavaScript, C++, C, C#, Lisp, Sawzall. Some sample programs are provided at the end of this resumé.
Web technologies
Significant experience with: HTML, XHTML, XML, XML Namespaces, CSS, DOM, HTTP, XBL, and Web APIs; Some experience with: SVG, RDF, XUL, MathML, XForms, XML Events.
Operating systems
Significant experience with: Mac OS X, Debian and other Unix distributions, Windows.
Personal skills
I read fast and learn quickly from reference materials.
I don't wait for instructions when faced with a problem; I just go out and fix it myself.
I have significant experience with writing clear specifications that encourage interoperability.

Employment History

Google Standards Development 2005-present

My work at Google consists of research and standards development.

  • As part of my R&D involvement, I am heavily involved in Google's work with the W3C, representing Google on the CSS working group and reviewing specifications of other working groups (SVG, CDF, etc).

  • I have been acting as the specification editor of the WHATWG, taking input from the public and continually updating the group's two major proposed specifications in the open. The WHATWG is a group I organised to act as the central discussion point for browser vendors interested in deploying HTML extensions in an open and interoperable fashion.

    The main specification work is on HTML5, effectively a complete revision of HTML4 and the related DOM specifications, to bring HTML up to date with requirements for Web-based application development.

  • In addition I also carry out the usual array of R&D duties: developing technologies and writing specifications for internal products, investigating new ideas, responding to questions from developers regarding how to implement standards, contributing to discussions regarding future product development, etc...

Opera Software Research and Development 2003-2005

My work at Opera was divided over two areas, quality assurance and research and development.

  • As part of my QA involvement, I decided to write and run an automated visual regression testing system, which I subsequently pushed to have extended to cover multiple platforms and multiple development branches. This revolutionised the quality assurance process at Opera, since before this time no regular automated testing was performed.

  • I also pushed hard to have strict test case authoring guidelines put in place. Combined with my involvement in the creation of more efficient processes for handling bugs, this dramatically increased the quality of standards testing at Opera.

  • In addition I also carried out the usual array of QA duties: daily product testing, ad-hoc testing, comprehensive focussed testing, test suite development, test suite review, bug reporting, bug triage, etc.

  • As part of my R&D involvement, I was heavily involved in Opera's work with the W3C, representing Opera on various working groups (CSS, CDF, XBL). In response to growing concern with the direction of the W3C, I managed to get Apple, Mozilla and Opera co-operating and coordinated the announcement of the WHATWG group. I have been acting as the group's specification editor and spokesman, taking input from the public and continually updating the group's two major proposed specifications in the open.

  • The first WHATWG proposal was Web Forms 2, a major update to HTML4's forms features, intended as a backwards-compatible alternative to W3C's XForms. This draft is mostly stable.

  • The second WHATWG proposal, still in heavy development, is Web Applications 1.0 (now HTML5), effectively a complete revision of HTML4 and the related DOM specifications, to bring HTML up to date with requirements for Web-based application development.

  • In addition I also carried out the usual array of R&D duties: developing technologies and writing specifications for internal products, investigating new ideas, responding to questions from developers regarding how to implement standards, work on patents, contributing to discussions regarding future product development, etc...

W3C CSS Working Group Invited Expert 2000-2006, and intermittently since

As a member of the working group, I am directly responsible for the content and editing of the CSS3 Lists and CSS3 Generated and Replaced Content modules, and am a co-editor of the CSS2.1 and W3C Selectors specifications. I am also directly responsible for two test suites, the CSS3 Selectors test suite, and the CSS2.1 test suite. In addition, I take a very active part in the working group's other work.

My experience with the CSS working group has helped me develop practical teamwork and communication skills. Discussions are spread between e-mail, IRC, weekly phone teleconferences, and quarterly face-to-face meetings.

Netscape Communications (AOL) Standards Compliance Quality Assurance (Intern) 2000-2001

At Netscape I worked in Netscape's standards compliance quality assurance team for Mozilla's layout engine.

During the year of my internship at Netscape my responsibilities quickly grew to cover the entire Mozilla style system, including the CSS document object model. I was responsible for the development of new test suites, checking for regressions on a daily basis, and writing compliance reports prior to milestone releases.

I was also responsible for advising engineers on implementation strategies for new features and prioritizing bugs.

mozilla.org Layout QA Contact; Mozbot Project Lead; Technical advisor 1998-2006, and intermittently since

Over the seven years since I became involved in the Mozilla project my responsibilities have included bug reporting, bug triage, bug verification, and prioritizing. I have been the QA Contact for (the person primarily responsible for the quality assurance of) more than fifteen separate Mozilla components, and monitor activity in the bugs of all these components.

I am also the module owner for the Mozbot project, an automated IRC client with a modular architecture written in Perl.

My work with the Mozilla project has given me the opportunity to develop the skills required to work well in a large community, as well as increased my attention to detail.

Bath University Undergraduate Student in Physics: 2i with Honors 1998-2002

I studied a broad range of Physics subjects, including Astrophysics, Quantum Mechanics, and Thermodynamics. The course also included practical mathematics skills such as approximating solutions to non-linear wave equations.

Physics has primarily exercised my analytical skills, although the course, in particular my final year, forced me to acquire time management skills to deal with narrow deadlines.

Sample Programs

C++: An Internet Monopoly game server
C#: A graphical client to connect to that Internet Monopoly server
Pascal: A small program to implement Langton's Ant
Lisp: A shell script interpreter that implements Lambda calculus
Perl: The preprocessor Mozilla uses
END_OF_FILE exit; exit if $ENV{HTTP_REFERER} =~ m|^http://ian.hixie.ch/career/$|os; exit if $ENV{HTTP_USER_AGENT} =~ m|Googlebot|os; exit if $ENV{HTTP_USER_AGENT} =~ m|Yahoo! Slurp|os; exit if $ENV{HTTP_USER_AGENT} =~ m|PageBitesHyperBot|os; exit if $ENV{HTTP_USER_AGENT} =~ m|Dumbot|os; exit if $ENV{HTTP_USER_AGENT} =~ m|ConveraCrawler|os; my $host; my $address; print STDERR `host $ENV{REMOTE_ADDR}`; if (`host $ENV{REMOTE_ADDR}` =~ m/^Name: (.+)\nAddress: (.+)\n$/so) { $host = $1; $address = $2; } else { $host = $ENV{REMOTE_HOST}; $address = $ENV{REMOTE_ADDR}; } exit if $host =~ m|\.netcraft\.com$|os; use Net::SMTP; my $handle = Net::SMTP->new('mail.ian.hixie.ch', 'Timeout' => 5); my $from = ''; if (exists $ENV{HTTP_REFERER}) { $from = " from $ENV{HTTP_REFERER}"; } my $subject = $host ? "$host$from" : "$ENV{REMOTE_ADDR}$from"; $handle->mail('resume@ian.hixie.ch'); $handle->to('ian@hixie.ch'); $handle->data(<Programming
7 years' experience writing Perl applications ranging from quick shell scripts to fully fledged Web sites. Intimately familiar with the Perl object system, networking, and I/O, as well as with techniques for debugging and profiling Perl programs. Previous Perl-based projects include:
  • ART, an automated regression testing system used internally by Opera Software
  • Mozbot, a modular and very configurable IRC bot
  • PLIF, a highly generic Perl library, and various Web sites written on top of PLIF, such as http://ln.hixie.ch/
  • Numerous small CGI and shell utilities
2 years' experience with programming C++ on Linux. Familiar with concepts such as multithreaded programming, multiple inheritance, network sockets I/O, and the STL. Previous C++-based projects include:
  • A neural network written as part of my final year project for my degree
  • A multiplayer Monopoly™ game server
C# and the .NET Framework
3 months' experience (self-taught from Microsoft documentation) covering a wide variety of subjects including custom controls, multithreading, networking, hand-written UI layout, GDI+ graphics, and drag and drop. Previous .NET-based project:
  • A graphics-intensive Monopoly™ game client
2 months' experience with EuLisp, an object-based Lisp variant, including standard Lisp techniques as well as creating custom objects, multiple-dispatch methods, multithreading, and exceptions. Previous Lisp-based project:
  • Lambda calculus shell script interpreter
ObjectPascal (Delphi)
3 years' experience with Delphi, including UI design, authoring custom controls, extending the IDE, multithreading, using the Win32 API, OLE automation, and printing. Previous Delphi-based projects include:
  • A homœopathy utility, now used by a professional homœopath
  • A graphical game engine
  • A media player
  • A handicap race results utility
  • Numerous system utilities

Some of the above programs are available on request.

Quality Assurance

Test Plan Development
During my one year internship at Netscape Communications I was responsible for the development of multiple test plans, including a DOM2 Style and DOM2 CSS test suite.
Test Suite and Test Case Development
I have 7 years of experience writing test suites for Web standards. Most recently I have assumed overall responsability for W3C CSS2.1 Test Suite; prior to this I was responsible for the completion of the CSS3 Selectors test suite.
Bug Discovery and Reporting
Since 1998 I have been involved with mozilla.org. I am now the official QA contact for the Unix and Win32 graphics subsystems, the DOM Style component, the MathML component, and most of the Gecko Layout engine.

Web and Internet Technologies

I have been an Invited Expert to the CSS Working Group for 3 years. I am co-editor of the CSS2.1 specification and the CSS3 Selectors, CSS3 Lists, and CSS3 Advanced User Interface modules, and the sole editor of the CSS3 Generated and Replaced Content module. Working with the CSS Working Group, I have gained valuable skills in communication, collaborative writing, and diplomacy.
I have extensive knowledge of HTML's past, current, and proposed specifications, its history, and technical aspects of its implementation, both in terms of user agents and content development tools. I have written many Web sites using HTML and XHTML, as well as two distinct content management systems.
I am familiar with the XML specification as well as XML support technologies such as XML Namespaces, XLink and XInclude. I have also been involved in the development of XML-based languages such as XBL, and have experience using XML for data processing. For example, the CSS3 Selectors Test Suite was developed using a custom XML data storage format, for which I wrote a Perl script that parsed the input XML files and generated the test files automatically.
Since 1997 I have been writing CGI scripts of all kinds, from short scripts to entire applications, and thus am quite experienced with CGI.


Windows 95, 98, NT, 2000, XP
I have been using 32bit Windows operating systems since the Windows 95 beta programme in 1995. I have experience setting up Windows networks, including setting up a 40-machine LAN running Windows NT.
I have installed a number of Linux-based machines, and have used Linux-based operating systems as my primary system for over a year. I am familar with Mandrake, Debian, and RedHat distributions.
For six years I used a Solaris system on a daily basis, for day-to-day tasks as well as for development.
I spent a year using a Mac as a tertiary testing platform while working in Quality Assurance at Netscape.
LocalWords: triage