I am working on distributed data processing frameworks.
Curriculum Vitae
Education
2005–2009: PhD, University of Edinburgh (defended Sep 2009, graduated June 2010).
Thesis: Programming Language Features for the Web.
1996–2000: BA, Dartmouth College, Computer Science, High Honors.
Work Experience
Jan 2015–present:
Member of Technical Staff, Qumulo, Inc.
In true startup fashion, I've worked on many aspects of the company's flagship distributed filesystem, which holds petabytes of data across the globe, including the atomic snapshot and replication systems. Most recently, I've led a project to overhaul the telemetry system that collects data from installed systems and make it queryable by the support engineers who have earned the company its consistent NPS scores of around 90.
Sep 2011–Dec 2014:
Software Engineer. Google, Inc.
Worked on Dremel, a massive column-store database with SQL-like interface for analyzing almost any data in the company's purview, and 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++.
Publications
“The RPC Calculus.”
Ezra Cooper and Philip Wadler.
In Principles and Practice of Declarative Programming, 2009.
“The essence of form abstraction.”
Ezra Cooper, Sam Lindley, Philip Wadler, Jeremy Yallop.
In Proceedings of the Sixth Asian Symposium on Programming Languages and Systems, 2008.
“Links: Web Programming without tiers.”
Ezra Cooper, Sam Lindley, Phil Wadler, Jeremy Yallop.
In Formal Methods for Components and Objects, 2006.
Skills & Other Experience
Proficient in C, C++, Perl, SML, OCaml, Scheme, Haskell, Java.
Familiar with deployment and operation of services using Ansible and Terraform.
Competent with the Coq theorem prover.
Experience with the Coq theorem prover.
Participated in IETF atompub working group to standardize weblog syndication and posting as an XML web services standard.