[This document is also available as PDF,
DVI, and LATEX.]
Employment
-
- Jun. 2009–present
-
Appleseed Software Consulting,
Somerville, MA
As an offsite contract consultant, implemented web applications for
clients using the Catalyst framework in Perl, along with MySQL,
Template Toolkit, FormFu, and jQuery.
For Tufts University Digital
Collections & Archives, helped design and implement
TAPER, a web tool for
managing XML accession requests, and CIDER, a web tool for managing
hierarchical collections.
For Maine Historical
Society, helped implement various pages on their public-facing
website for displaying and managing databases of archival records.
For various other clients, helped implement web-based
applications for managing databases.
- Jul. 2010–Sep. 2010
-
Art+Culture Editions,
New York, NY
As an offsite contract consultant, helped implement an e-commerce web
application with Ruby on Rails and Spree.
- Jan. 2005–Nov. 2007
-
Gensym Corporation, Burlington, MA
Member of the G2
Core development team. Maintained and added features to a
20-year-old codebase of over one million lines of Common Lisp.
Designed and implemented client and server libraries for HTTP, SOAP,
WSDL. Helped implement the G2 Graphical Language, based on WS-BPEL.
- 1996–2003
-
Research assistant, Northeastern University, Boston, MA
Member of Dr. Karl Lieberherr’s
Demeter research
team. Designed, implemented, and maintained DemeterJ, an extension to
the Java language for adaptive programming (an early form of
aspect-oriented programming). Later, took over development of
DJ (Demeter in pure Java) and
DAJ (Demeter for AspectJ)
from MS student projects.
- 1992–1995
-
Software developer, Pure Software, Sunnyvale, CA
Member of the development team for
Purify, a
memory corruption and leak detection tool for C/C++ programs in
Solaris. Worked on the reporting back-end, GUI, and common library
code for Purify, PureLink, and PureCoverage products.
Education
-
- 1995–2005
-
Ph.D. Computer Science, Northeastern University, Boston, MA
Designed and implemented the
Socrates programming language
(embedded in PLT Scheme), which unifies and generalizes
object-oriented and aspect-oriented programming language mechanisms
for separation of concerns using predicate dispatching and open
classes.
- 1988–1992
-
B.A. Computer Science, University of California, Berkeley, CA
Member of the
eXperimental Computing Facility (XCF).
Re-implemented the
Berkeley Logo
interpreter as an
explicit-control evaluator
rather than a
meta-circular evaluator.
Other Projects
-
- 2009–2010
-
Chugchanga-L Poll
Designed and implemented an Ajax application in Python, hosted on
Google App Engine, to allow
members of Chugchanga-L (a music discussion mailing list) to vote for
their favorite music releases of the year. It uses the
MusicBrainz XML web service to
canonicalize votes by matching them to releases in the MusicBrainz
database.
-
- 2006–2010
-
Volity Games Network
Helped implement the Volity platform for multi-player online board
games. Implemented a Jabber-RPC library in Java, and helped develop
Gamut, the standalone SVG client Java application. Implemented a
server (“parlor”) for a board game of my own design,
Pylon,
in Python. Took over maintenance and development of the Volity web
client.
Last modified: Wednesday, October 12th, 2011 10:14:01am