Software

I've been fortunate enough to make a career of writing software. Here's a short list of some of the projects I've worked on commercially, as well as some minor programs that I've written for one purpose or another.

Version Control

These are the Version Control applications I've developed or contributed to in my employment.
  • Teamprise is a cross-platform suite of clients for Microsoft Team Foundation Server, including a standalone client, a plug-in for the Eclipse IDE and a command line client.
  • Vault is a version control tool which was designed to be a compelling replacement for Visual SourceSafe. Vault provides advanced version control operations including atomic transactions and rename support while retaining a light footprint and tight support to Microsoft VisualStudio.
  • SOS Collab is a remote access front-end for Visual SourceSafe with integrated bug tracking and team collaboration tools. The collaborative features have since been moved to a separate product, Dragnet, which integrates with both SourceOffSite and Vault.

Scientific Computing

These are applications I've worked on in my past life in the scientific computing sector.
  • My then-coworker, Dan Brumleve, came up with the idea of a web-based front-end to Mathematica, and wrote the initial version of The Integrator. I rewrote it to become the second generation. It still lives, but fortunately using webMathematica instead of any code I wrote.
  • NCSA CSD was a front-end for searching the Cambridge Structural Database of organic compounds and making pretty pictures as a result. NCSA Waltz is a front-end to NCSA DISCO, which itself was an application for computing electron density of molecules back when you needed supercomputers to run Schroedinger's equation. Amusingly, NCSA DISCO doesn't exist anymore; this is all done by PC-GAMESS on a puny Linux box.

Play

These are trivial programs that I created to fill a need. Little of this is "complete", but there may be useful code.
  • A simple SWT widget for plotting a graph. This can fill or stroke the resultant curve, scale to fit the size of the widget, and provide multiple graphs in a single x/y plane (mixed up in standard style, or via stacking a la MRTG.)
  • A Ruby-on-Rails application for managing ISP or web-hosting data. I moved my web hosting to a database-backed configuration -- this is the front-end to the database.
  • Plays blackjack hands using automated rules such as the standard blackjack strategy or a simple card-counting strategy, or (less interestingly) plays interactively on the console. This was created mostly as a code sample.
  • GPF
    "Generic Packet Forwarder" acts as a generic TCP proxy. Given a local address and port, it will forward all TCP connections to another address and port. This was created mostly to handle subnet renumberings while waiting for DNS propogation.
  • Uses libpcap to count bytes to/from specific IP addresses and provide a tally of bandwidth used. This was created to count bytes for colocation customers, and was run on our Linux-based edge router.
Edward Thomson is a Software Engineer at Teamprise, where he develops cross-platform client solutions for Microsoft Team Foundation Server, with an emphasis on Macintosh compatibility and IDE integration.