25 years of professional experience in developing UNIX and Windows software and contributing to free software projects.
C, C++, FORTRAN, BLISS, BASIC, Pascal, LISP, Guile, Emacs Lisp, Scheme, Prolog, Perl, AWK, m4, Lua, Python, TCL, Bourne shell, C shell, DOS shell, SQL, TeX, LaTeX, HTML, JavaScript, Java, PHP, SGML, XML, HTTP, DNS, SMTP, Texinfo, troff, pod, HPPA assembly, x86 assembly, PowerPC assembly, ARM assembly, VAX MACRO, DCL, TPU, Yacc, Lex, ESC/P2, Postscript, RTF
Windows, DOS, Cygwin, Palm OS, VMS, Macintosh OS/X, HP-UX, Linux, IRIX, SCO UNIX, UnixWare, Tru64, Solaris, SunOS, AIX, FreeBSD, AT&T UNIX, CLIX, Pyramid OSx, ULTRIX
July 2003 - Present
Chief software developer. Design and implement RealEd, an integrated management system and LMS targeted at professional schools and providing student registration, class scheduling and management, credit card authorization, bubble sheet test scanning, report generation and customization, template-based document generation, bookstore tracking, fine-grained group-based security, online course delivery, and an API for school web sites to offer student self-registration and payment. Prototype and demonstrate a replacement for Hewlett-Packard's worldwide customer marketing database.
December 2005 - September 2007
Linux consultant. Maintain and improve various components of a Linux-based digital signage platform on a small form factor computer.
August 2005 - September 2005
GDB consultant. Enhance a read-only GDB stub in a real-time ARM embedded device to support breakpoints, single stepping, writes to memory and registers, thread debugging, pageable memory, and interleaved serial output.
January 2002 - July 2003
System administration and programming consultant. Migrate handhelds.org web, ftp, CVS, and DNS services from California to Massachusetts. Apply various security enhancements, including a transparent iptables-based firewall controlling access to all handhelds.org systems. Convert handhelds.org web pages to a unified PHP format that simplifies authoring and guarantees consistency across pages. Implement and deploy adminproj, a system for administering all handhelds.org users, projects, and hosts with a public web-based interface, Kerberos authentication, and an LDAP back end. Construct and maintain a public cluster of 8 iPAQs running Linux. Implement an autobuild system for building multiple Linux distributions for multiple architectures, including two ARM distributions built on the iPAQ cluster. Implement mailsentry, an anti-spam whitelist/blacklist system, and use it to eliminate spam on handhelds.org mailing lists.
October 2001 - December 2001
VMS-to-UNIX migration consultant. Continued development of Vbackup, a binary-compatible emulation of VMS BACKUP: implemented 64-bit file support in Linux port, added ACL support, worked on Windows port. Added features to Vmail, an emulation of VMS MAIL.
September 2001
VMS-to-UNIX migration consultant. Wrote utility to parse COBOL code specifying data formats, convert several hundred megabytes of data from VMS indexed and sequential files to Windows comma-delimited format, and generate reports of data layouts and errors detected/corrected.
February 2001 - August 2001
GDB (GNU debugger) consultant. Implemented shared library support in Tru64 5.x GDB, fixed GDB and GCC problems in Tru64 5.x tool chain. Implemented bigtoc support in AIX GDB. Constructed test suite for Sun Chorus GDB hosted on Solaris and Windows NT with PowerPC, SPARC, and x86 targets. Analyzed and fixed bugs in GDB's PowerPC, i960, m68k, COFF, and Insight support. Worked on GDB and SID support for new Harvard architecture with math coprocessor hosted on Cygwin, Solaris, and Linux. Provided assistance with documentation.
February 2000 - February 2001
GDB (GNU debugger) developer. Ported GDB with full C/C++ support to a new Harvard architecture hosted on Cygwin, Solaris, and Linux. Ported GDB with assembly-only support to a new math coprocessor. Designed and implemented a new register definition interface and Harvard address space handler for GDB. Implemented GDB thread support for UnixWare and AIX. Analyzed and fixed bugs in GDB, Insight, Cygwin, BFD, and SID.
December 1999 - April 2000
UNIX-to-Windows migration consultant. Provided advice and assistance in migrating a customer database from UNIX to Windows. Implemented a utility to decode the raw UNIX database into multiple flat text files suitable for importing into Windows databases.
June 1991 - February 2000
Senior software developer. Implemented Vbackup, a binary-compatible emulation of VMS BACKUP, for UNIX and Windows. Enhanced and maintained Vmail, an emulation of VMS MAIL. Implemented Vconvert, a utility to convert VMS MAIL files to UNIX format. Implemented an emulation of VMS DIFF. Enhanced and maintained the license manager and installation programs distributed with all products. Provided technical support for all products.
Designed and implemented a typesetting language for generating HTML, Postscript, RTF, and plain text. Used that language to write the Vbackup user manual and the installation and troubleshooting guide for all products. Wrote software to automatically generate invoices, packing lists, and media labels from the customer database. Implemented an Epson ESC/P2 processor to help generate on-the-fly CD-ROM labels. Wrote an HP line printer device driver for Ghostscript to help generate shipping labels.
Enhanced and fixed bugs in various free software packages, including Perl, DOSEMU, GCC, Emacs, Ghostscript, and the Linux kernel. Provided migration consulting services to third parties. Assisted in administering a network of UNIX, Windows, and VMS systems.
October 1995 - March 1996, October 1998
VMS-to-UNIX migration consultant. Provided advice and assistance in porting a securities tracking system from VMS to Digital UNIX and HP-UX. Implemented UNIX replacements for VMS shared memory, inter-process queueing, and inter-process signaling routines.
May 1991
Bachelor of Arts in Computer Science, Summa Cum Laude, Phi Beta Kappa. Secondary focus in physics and chemistry.