Software Engineer. Google, Inc.
Working on Flume, an embedded language for writing distributed data-processing programs, allowing users to easily harness Google-scale clusters.
Nov 2009–Aug 2011:
Principal Software Engineer. Endeca Technologies, Inc.
Researched and implemented relational-algebra optimizations to achieve high data scale and increase query expressiveness, in search applications.
Feb 2009–Apr 2009:
Senior Engineer. ITI TechMedia. (Part-time)
Created experimental software for static analysis of C++ code for the purpose of detecting concurrency flaws.
Dec 2007–May 2008:
Independent Contractor. Get Satisfaction Ltd. (Part-time)
Implemented a PHP application and library to act as a client to the Get Satisfaction Web API. Helped Get Satisfaction engineers to find and repair bugs in the API.
Sep 2006–Dec 2006, Sep 2007–Dec 2007:
Teaching Assistant, Functional Programming. University of Edinburgh
Helped create and revise assignments for first-year undergraduates to teach programming through the fundamental concepts of data types and recursion. Held undergraduate tutorial sections and marked completed assignments.
Dec 2003–Aug 2005:
Movable Type Lead Developer. Six Apart, Ltd.
Took over primary development of the weblogging application Movable Type, leading releases 3.0 through 3.2. Organized beta tests. Invented TypeKey, a protocol for secure, centralized authentication on the web.
May 2002–Nov 2003:
Independent Software and Website Development
Created custom web applications for clients, including a wiki application and e-commerce sites, using Perl. Worked independently, handling my own project management, promotion, and system administration. Quit due to falling revenues.
Aug 2000–May 2002:
Software Development Engineer. Amazon.com, Inc.
Built and deployed features for the Amazon website, including Free Music Downloads and Amazon Chat, a chat application including a client Java Applet and a replicated fault-tolerant server in C++.