Seth Gordon
Java, Perl, Unix, and Plain English
16 Waldo Terrace, Brighton, MA 02135
phone 617.779.7369; fax 617.258.6900; email sethg@ropine.com
Summary
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 write.
Computer Languages
Java (J2SE, J2EE, servlets, JSP, EJB, JUnit), Perl, Python, XML, XSL, SQL, UML, Oracle PL/SQL, bash, ksh, C++, C, Scheme
Computer Platforms
Linux (Red Hat, Debian, Ubuntu, Mandrake), OpenBSD, Windows, MacOS, Solaris
Computer Applications
WebLogic, Apache, CVS, PostgreSQL, MySQL, Oracle, SQLite, InstallShield, ColdFusion, Documentum, FrameMaker, Quadralay WebWorks
Relevant Work Experience
April 2005–
present
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.
Sep. 2003–
April 2005
Software Engineer for Jenzabar.
  • 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 information.
  • 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.
 
May 2003–
Sep. 2003
Programmer on the object design team for the WIND Web site development group.
  • 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.
 
May 2001–
Nov. 2002
Programmer/Analyst for the Whitehead 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 this system and monitoring their progress. Made code production-ready before hardware.
  • 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 version.
  • 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.
 
June 1998–
May 2001
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 documentation 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 Tree::DAG_Node 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.
 
                         
Education