Paul Haahr

4222 22nd Street
San Francisco, CA 94114
415 824 4223 (voice)
415 824 4229 (fax)

paul@paulhaahr.com


Note to recruiters: I'm working on what I consider the world's most interesting problems at the leading company in the field. Please do not contact me about other jobs.

Note to other engineers: If you're curious about joining us, read about jobs at Google.

Employment History
Google, Inc., Mountain View, CA March, 2002 - present

Senior software engineer, search quality group.

Independent consultant May, 2001 - February, 2002

Worked under contract as a software engineer to Agile Storage, Inc. (now ONStor, though named ClariStor, Inc. for a while), a storage networking startup, helping design and implement a file system.

Assisted the principals of SteelMachines, a Foundation Capital-incubated venture, in their investigations of Java-related businesses.

Xigo, Inc., San Francisco, CA February, 2000 - May, 2001

Manager of agent technology and senior software engineer. Xigo was an internet software company developing agent-based tools for investors; it could not raise funds to continue operations.

I lead development of the company's agent technology framework and, as the company grew, hired and managed a team of five engineers working on the agent system, alert generation, and backtesting. I initiated and oversaw projects creating a real-time intraday technical alert server and the Xigo Bot Language (XBL), an XML dialect for describing technical alerts.

Cashcade.com, San Francisco, CA July - December, 1999

Founder. Cashcade.com was a startup venture developing a consumer finance web service.

I developed prototypes of the service and wrote early business plans, but was unable to find the right management team to lead the venture.

Jive Technology, San Francisco, CA April, 1997 - June, 1999

Co-founder and chief technology officer. Jive Technology developed high-performance, reliable Java solutions for server-based applications. Our technology was initially developed under contract to a large systems vendor. The technology was deployed in a high-performance, high-availability network server product.

I designed the overall architecture of the company's native compiler for Java bytecodes and implemented most of the compiler front-end. In addition, I designed and implemented the company's JITcache technology, which provides persistent code caching for a ``just-in-time'' compiler.

The company's plan was to develop ``Java server appliances'' to provide a platform for running application servers and to address the needs of transaction-heavy web sites. We failed to raise financing to pursue that business.

Independent consultant September, 1996 - August, 1997

Worked as a software engineer under contract to Network Appliance, Inc., which builds file servers and data access appliances called filers. I worked on two projects:

  • The WebFiler, an HTTP server, which is one component of the company's Data ONTAP multiprotocol software suite. I picked up development work on the product just before it went into external alpha test, and was in charge of performance tuning, new feature implementation, and bug fixing for two major releases of the system. Performance improvements for this product depended on making low-level changes in the networking code, which is based on the BSD TCP/IP stack.
  • Back-to-back testing software, permitting two NetApp filers to be connected and stress test each other. This testing software is used by manufacturing in qualifying hardware before releasing it to customers.
Harlequin Ltd., Cambridge UK November, 1994 - February, 1996

Compiler engineer working on Harlequin's DylanWorks development environment, an implementation of the Dylan language for Windows platforms. Dylan is an object-oriented, dynamic language originally designed by Apple Computer.

I worked on semantic analysis phases of the compiler, including:

  • the Dylan Flow Machine, a single-assignment intermediate representation;
  • machine-independent optimizations, such as inlining, constant propagation, closure analysis, and dead-code elimination; and
  • the initial implementation of sealing -- a set of Dylan-specific optimizations of object-oriented constructs for speeding up method dispatch.

I was also an active participant in the Dylan language design process, in coordination with groups at Apple Computer and Carnegie-Mellon University.

Kaleida Labs, Inc., Mountain View, CA August, 1993 - April, 1994

Senior Engineer on the ScriptX team. I designed and implemented the font and text subsystems for the alpha and beta releases of the system. Kaleida, an Apple-IBM joint venture, was developing a multimedia scripting platform, ScriptX.

Adobe Systems Incorporated, Mountain View, CA August, 1990 - August, 1993

Computer Scientist in the font engineering group. I had primary responsibility for the platform independent parts of Adobe's Type 1 font renderer. My work included:

  • Design and implementation of major revisions of the Type 1 renderer to support overlapping hints and faster rasterization techniques.
  • Research into improvements in rendering quality at low (display) resolutions and techniques for hintless rasterization.
  • Design and implementation of support code for Adobe's Multiple Master typefaces, including font constraint matching and font substitution technology.
  • Support for other engineers integrating the font renderer into products, including PostScript Level 2 and Adobe Type Manager.

In addition, I played major development roles on the following products:

  • Led initial development of Adobe Type Manager for Microsoft Windows NT.
  • Implementation of font substitution in SuperATM (ATM for the Macintosh 3.5).
  • Development of a hinting rasterizer for Agfa-Compugraphic's Intellifont format.
Polygen Corporation, Waltham, MA February - September, 1987

System administrator and software engineer. Polygen sold molecular modeling tools and office automation software for the chemical and pharmaceutical industries. In addition to working on the company's product lines, I designed and wrote a source control and configuration management system and administered a network of workstations.

Oracle Corporation, Belmont, CA August, 1986 - February, 1987

Member of technical staff and Unix systems administrator in the database porting group. I installed and maintained a large, heterogeneous network of Unix systems, wrote and supported in-house development tools, and helped port the database system to several new platforms.

Education
Princeton University, Princeton, NJ September, 1984 - January, 1986
September, 1987 - June, 1990

Bachelor of Arts in Computer Science, Summa Cum Laude.
Elected member of Sigma Xi engineering honor society.
Won Sigma Xi book prize for outstanding independent research.
Served as a teaching assistant for CS217 (Programming Systems) and CS320 (Compiler Design), and as a staff member in the system administration group.

Published Work

Kim Barrett, Bob Cassels, Paul Haahr, David A. Moon, Keith Playford, and P. Tucker Withington, A Monotonic Superclass Linearization for Dylan, OOPSLA 1996 Conference.

Paul Haahr and Byron Rakitzis, Es: A shell with higher-order functions, Proceedings of the Winter 1993 Usenix Technical Conference.

Paul Haahr, Montage: Breaking Windows into Small Pieces, Proceedings of the Summer 1990 Usenix Technical Conference. Won best student paper prize.

Currently working on a book on high performance I/O in Java and the java.nio libraries for Morgan Kaufmann.

Technical details

Programming languages: C, C++, Java, Python, Lisp (Dylan, Scheme, Common Lisp, and CLOS), Fortran, PostScript, Unix shells.

Operating systems: Unix (many varieties, including Linux, Solaris, and BSD releases), Windows (95/98 and NT), Macintosh OS.

Current interests: information retrieval, programming language design, compiler intermediate representations, high performance I/O in high level languages, garbage collection, concurrent programming, data structures for external storage, window systems.