Daniel Egnor

139 Rinconada Ave.
Palo Alto, CA 94301
+1 212-365-4522 (cell)
Print version, Text version


Bachelor of Science in Computer Science1, California Institute of Technology, 1996.


May 2003 - ongoing: Software Engineer, Google

Tech lead of Google Local until mid-2005. I now work on web search ranking algorithms.

November 2001 - May 2003: Associate, Morgan Stanley Process Driven Trading

Developed computerized order execution strategies for domestic and international stock markets. Reduced transaction costs by studying market microstructure and developing real-time adaptive automated trading agents.

July 1999 - July 2001: Software Architect and Founder, XYZFind Corp.

XYZFind was a startup2 which sold XML software. I led the design of XYZFind's flagship "native XML" database3 and personally wrote the index engine and query processor. I saw the company through two rounds of funding, met with major customers, drove corporate strategy (poorly), attended trade shows, cleaned the refrigerator4, and represented XYZFind on the W3C Advisory Council.

XYZFind server used cross-platform C++ and Java for the client SDK, including servlets for XSLT transformations and application server integration.

XYZFind was eventually acquired by Interwoven.

June 1996 - June 1999: Software Design Engineer, Microsoft Semantic Platform Group5

The Annotated Schema Runtime (ASR) was a database and query processor6 for semi-structured graph data using shared memory7 to maintain a single coherent database image. The ASR was the core of Semantic Platform technology; I designed, implemented and maintained the ASR and its interfaces for several years.

I designed and implemented the user interface, dialogue manager, and database interface for "Insight"8, a prototype telephone interface to Microsoft's Sidewalk9 city information site using TAPI and SAPI10. Users could navigate with voice or touch tones to search movie showtimes and restaurant listings.

Semantic Platform work included several other projects: improvements11 to a Rete12-based expert system with Prolog-like goal-directed search capabilities, an interface to the Microsoft MediaView13 content indexer to spot database entities appearing as words or phrases embedded in a natural language query14, real-time visualization15 for a multimodal (speech, typed text, and GUI) user interface, and a restaurant recommendation service for Sidewalk using collaborative filtering.

June 1995 - March 1996: NASA Jet Propulsion Laboratory.

I developed software in C to translate and encode commands16 to control the Cassini spacecraft currently en route to Saturn.

June 1994 - September 1994: Summer intern, Microsoft Excel.

I modified the recalculation engine17 to operate in parallel18 on multiprocessor PCs.

June 1993 - September 1993: Summer intern, Odyssey Research Associates.

ORA develops, among other things, automated verification and formal analysis tools for Ada. I worked on the Penelope syntax-directed program proof editor19, and I applied the AdaWise analysis framework to a corpus of public domain code and examined the results to see how many of the warnings were real bugs20.

March 1993 - June 1996: Unix administrator, Caltech undergraduate CS laboratory.

In addition to normal administrative duties21, my work included the development of systems-level networking components, including software distribution systems22 and load-balanced remote login services23.

September 1994 - December 1995: Head TA for introductory CS courses at Caltech.

I developed curriculum, course materials, and support software for the Caltech CS 1, 2, and 3 courses24. I wrote easy-to-use graphics library software25 and a simulated annealing section scheduling system26. I also led section, graded papers, and managed the details of course operation.


Miscellaneous Projects

1995 - ongoing: Free Software

I wrote and maintain Gale27, an open source instant messaging system. Other free software projects of mine include Airhook, Liboop, and some XML processing tools.

2001 - ongoing: Sweetcode

I am the sole proprietor of Sweetcode, a web site that reports interesting free software. Sweetcode receives thousands of visitors daily; media reports include NTK, memepool, the Linux Weekly News, and others.

2002: Geocoder

This entry won the 2002 Google Programming Contest.

2001: GPS Pac-Man

I programmed a PDA with a GPS card to be a Pac-Man game. The player controls Pac-Man by running around a field (or parking lot or whatever); the game board (with the player's current position) is displayed on the screen.

2000 - 2002: SeattleWireless

I maintained the Node Map, a simple XML-based GIS which uses public mapping engines to display the location of community 802.11b wireless nodes in Seattle.

1996: Laser Tetris

I built a microprocessor-controlled laser projection system28 including a hardware-accelerated vector graphics processor allowing the user to play Tetris on any opaque surface (building walls, overpasses, clouds, ...).