Java, Perl, Unix, and Plain English
My strengths as a professional programmer include: disentangling
spaghetti code; parsing and manipulating everything from XML to
undocumented file formats; designing object models appropriate to
the problems they are meant to solve; and documenting everything I
Java (J2SE, J2EE, servlets, JSP, EJB, JUnit), Perl, Python,
XML, XSL, SQL, UML,
Oracle PL/SQL, bash, ksh, C++, C, Scheme
Linux (Red Hat, Debian, Ubuntu, Mandrake), OpenBSD, Windows, MacOS, Solaris
WebLogic, Apache, CVS, PostgreSQL, MySQL, Oracle, SQLite, InstallShield,
ColdFusion, Documentum, FrameMaker, Quadralay WebWorks
Relevant Work Experience
|Data Librarian for MetaCarta.
- Maintained the code and data repository for building a gazetteer of over
eight million locations, which is incorporated into MetaCarta's
geographic search engine.
- Evaluated new sources of geographic data and wrote code to incorporate
that new data into the gazetteer.
|Software Engineer for
- Refactored and improved a Perl script to parse Informix Perform
Screen scripts and translate them into an XML-based
database-independent form description language. The revised
script could translate hundreds of files from one language to the
other without requiring any manual post-processing, so that our
customers would no longer depend on Informix, and so that current
users could migrate their customized forms to the new system.
- Wrote a tool, using XSL and the Java DOM, to read XML files
describing a process and
represent the same information as javadoc-style HTML and as SVG diagrams. Wrote
complete javadoc and UML class diagrams for the tool. The tool made
the process files effectively self-documenting, and provided hooks so
that future developers could define additional ways to represent the
- Designed, implemented, and documented a simple XML template language,
using SAX for high speed. The
implementation was ready within two weeks of receiving the spec; some
remarks on a technique I used in the implementation are here.
The language allows Web-page authors to create templates to be
populated by information from EJBs, without having to write code to
extract the information.
|Programmer on the object design team for the WIND Web site
- Participated in group discussions of the object design for a
database-backed Web site (using Java servlets and JSPs) for storing
information about WIND members, searching for members with given
attributes, and tracking a member's status from joining the
organization through finding a job.
- Developed UML class and sequence diagrams, based on use cases, to
clarify the dependencies among classes in the object design.
|Programmer/Analyst for the
Institute / MIT Center for Genome Research (now the Broad Institute).
- Participated in the design of a system for using RTS/Thurnall
(an automated freezer system) to manage and track sample plates.
Wrote an application in Java and PL/SQL for ordering certain jobs with
and monitoring their progress. Made code production-ready before
- Analyzed the code in the above application for opportunities to
refactor (improving cohesion and parallelism) and for better error
handling. Wrote a specification, test plan, and schedule for the next
- Installed the RT
request-tracking system. Configured and administered RT for the
benefit of various
groups within the center. Migrated an RT database from PostgreSQL to
MySQL. Wrote a users' guide to the RT system. This was the first
formal bug-tracking system the group used.
- Wrote a Perl script to convert genome-assembly information from the old
ACE file format to the new, based in part on inspection of C source
code for a program that used both formats, allowing an internal tool
that could only read the new format to work with a version of phrap
that could only read the old format.
- Wrote and debugged Java servlets that communicated with an Oracle
database, allowing biologists to order experiments, track their
progress, and query their results. The new and revised servlets
expanded the variety of experiments that could be tracked and the
range of information that could be queried about them, and made
coordination between scientists and laboratory workers more efficient.
|Technical writer and toolsmith for Kenan
Systems Corporation (purchased by Lucent in 1999; now
part of CSG Systems).
- Wrote a guide to a product's C++ class libraries for third-party
developers, based in part on studying C++ header files and
interviewing the product's development staff, so that third-party
developers could write extensions to the product.
- Designed an encryption algorithm for generating and checking
license-key numbers, and implemented it in Perl and InstallScript.
With this algorithm, one CD could contain documentation for
several products, but the installer would only unpack the
documentation for products that a customer had licensed.
- Wrote Perl module, building on Parse::RecDescent and
modules, that parses MIF files, making it feasible to write scripts
that revise many FrameMaker templates simultaneously and postprocess
the output of legacy tools to match the new documentation style.
- Maintained legacy Perl scripts that generate a class library
reference manual directly from C++ header and source files, keeping
this document in sync with changes to the class library code without
the need for human line-by-line editing.