Projects and work experience
- Principal developer, Discount, 2007-present
- Designed and wrote a C implementation of the markdown
text-to-html formatting language. Discount is one of the fastest markdown processors available,
and is used in a few commercial products.
- Engineer Software Sys Apps IV, ADP Dealer Services, Nov 2004-May 2008, Jul 2010-Nov-2010
- Helped maintain the ADP-specific variant of RedHat Linux that
they use to run the back office machines at auto dealers.
Responsible for updating drivers when our hardware vendor
introduces new machines, and for updating the build environment
to make it run faster and more portably. Implemented a snapshot
backup system that uses the Linux lvm system, plus (trivially)
wrote new rpm packages and patched existing ones to contain
- System administrator, Love Makes a Family, Inc., Jan. 2003-2004
- Built a Windows network connecting donated Windows 98/ME workstations
to a file server running FreeBSD. Built a pop3 mail server for
the lmfamily.org domain (a virtual domain on my webserver machine).
- Contract Programmer, GPSclock., Dec. 2001-Mar. 2002
- Wrote a PicoBSD system for a NTP clock server product
running on a Soekris net 4501, with a web interface for
configuring and maintaining the thing. The web interface is
written in C and shell – the development cuts of the ntpclock
are being wedged into a 2mb flash card just to see how tightly
I can wedge existing software onto a system.
- Contract Programmer, Symantec, Inc., Mar. 2001-Sep. 2001
- Helped finish a port of Symantec’s antivirus product for Lotus
Notes on the AS/400. Finished the port of the Symantec AV
engine to the AS/400, plus built makefiles to do the building
in a sane fashion.
- Developer, BitMover, Inc., Mar. 2000-Jan. 2001
- Developer for Bitmover’s BitKeeper product, which was the
spiritual ancester of git.
I developed tools to
extract source from RedHat Linux packages and repackage them
into BitKeeper repositories so that they can be managed under
version control, and I worked on the web interface for BitKeeper.
- Contract Programmer, Tripwire Inc, Oct-Nov 1999
- Ported Tripwire to Irix, Digital Unix, Solaris, Solaris/x86,
and (trivially) RedHat Linux.
- System Adminstrator Schrödinger, Inc., Jan. 1997-2001 (half-time)
- System administration for quantum chemical software company
based in Portland, OR and Jersey City, NJ, maintaining a small
network of Linux, Unix (primarily SGI IRIX), and Windows NT
machines. Responsible for upkeep of the local area network,
backup regimes, and mail and web servers.
- I also built PCs for Schrödinger – I have built about
35 machines for workstation and home use, running Windows NT,
Linux, and various flavors of Windows.
- In 1993 or thereabouts, I ported the chemical modelling
software Jaguar (formerly known as PS-GVB) to Linux.
- Linux kernel development 1994-1999
- I developed (and maintained for a while) the memory detection code
that’s in the official Linux kernel.
- Consultant, McAfee Associates, Jan. 1996-Aug. 1997, Mar. 1998-Mar 1999
- Ported McAfee’s VirusScan product from Microsoft DOS to
SunOS, Solaris, Linux, and FreeBSD.
Designed and was principal programmer for WebShield, McAfee’s
Linux-based antiviral firewall product.
WebShield contains code written in C, C++, Perl, and a tiny
bit of Java. Aside from design and coding, I was also
technical manager of the project during the development
phase, and after the product went into release, did onsite
visits to analyse and fix various bugs.
- Database Administrator, Apple Computer, Inc, 1995
- Helped tune databases, set up databases, and helped develop a
schema for internal problem tracking software using a Sybase
database. Also wrote various programs to import and export data
from the Sybase database to other databases.
- Consultant, Itron, Inc, 1993-1994
- Brought in as a database guru, but ended up as a C++ programmer.
Built a collection of C++ classes to wrap around Sybase to make
a more-or-less database-independent toolkit for accessing and
modifying data in a database. Used these classes to write
programs to import and export data to and from handheld computers
and IBM mainframe computers. Also built databases for development
and testing, and was DBA for those databases.
- Database Consultant, Sybase SQL Solutions, Inc, 1990-1993
- Managed a large collection of duties, ranging from light system
administration to fairly heavy-duty code and query optimization.
- Software Engineer, Nixdorf Computer Corporation, 1989-1990
- Programmed back-office software for point-of-sale computer
systems. Designed and implemented HDLC interfaces for registers.
UNIX system and uucp administration of a development network
of 680x0 (Targon) and 80386 (SCO UNIX) machines. Wrote applications
to install point-of-sale applications onto customer machines.
- Independent Contractor, 1987-1989
- Developed user interface for optics lab software; UNIX system
and uucp administration of Xenix 80386 and J11 (Ultrix) machines.
- Software Engineer, CPT Corporation, 1986-1987
- Device driver development for MS-DOS, UNIX, and Intel iRMX
operating systems. Participated in porting iRMX and UNIX to
CPT 80386 workstations. Ported SCCS to MS-DOS and iRMX. Wrote
testing programs for hardware development.
- Software Engineer, NCR Comten, 1985-1986
- Supported SNA software for NCR front-end processors. Designed
and supported C development tools on UNIX and IBM VM systems.
Computer languages I’ve worked with
80386 assembly, 8086 assembly, Ada, Awk, BASIC, C, C++, Fortran, HTML,
IBM 370 assembly, Java, Modula-2, Pascal, PDP-11 assembly, Perl, PHP,
Shell, Sybase transact-SQL.
Computer systems I’ve worked on
|| Operating System(s)
||RT-11, UNIX, RSTS-11
||DOS, TSO, UNIX
||USCD Pascal & homebrew variants
|IBM PC family
||MS-DOS,Microsoft Windows(3.1,95,98,NT,2000), FlexOS, iRMX, OS/2, UNIX, Linux, FreeBSD, NetBSD, OpenBSD, Plan9, Darwin
||GEM, Minix, MiNT
||SunOS, Solaris, NetBSD
||MacOS 7, NetBSD, MacOS X
B.S., University of Wisconsin, Platteville, August 1984.
Major: Mathematics. Minor: Computer Science.
References available upon request.