I started my programming career as a mining engineer in Arizona; the open pit copper mine I was working in needed better software. I had a Mac SE at home and an enlighted boss at work, and pretty soon I was writing mining CAD software in Wiki:ObjectPascal and Greg Dow's Wiki:ThinkClassLibrary on a Mac II with a whopping 5MB (!) of RAM. I also developed systems for long range mine planning and planned component replacement (equipment maintenance) in Excel; I've found Excel very helpful for lots of things throughout my career. I also got to use Wiki:HyperCard for things as diverse as digitizing map coordinates and uploading electronically recorded survey data. Fun times.
We had some database needs at the mine and used http://www.4d.com/products/4thdimension.html to fill them. 4D had a Pascal-like syntax, so it was a pretty painless transition. I attended the monthly 4D SIG meetings in Phoenix. When the mine management decided to go with ahem outhouse software (and Windows PCs?) instead of in-house software, I quit and went to work for the fine folks who hosted the SIG, http://www.desertsky.com/ as a 4D programmer.
A few years later, as a seasoned 4D veteran, I had an opportunity to come back to San Diego and work for http://www.biotechcareercenter.com/Sequana.html to support the lab's positional cloning effort.
My previous 4D experience had involved using it as both front-end and database; at Sequana it was just the front end to a Sybase database. I had been afraid of Wiki:StructuredQueryLanguage before and was surprised to learn how simple and clean it really is. Ours was a "trigger-happy" database - lots of triggers and stored procedures - the model was one of business logic embodied as much as possible in the database, with reasonably light front ends in a variety of languages and platforms.
Probably my most significant contribution to Sequana was my observation that cross-platform wasn't appropriate for our needs. Everyone there had a Mac (although the Statgen people used unix for everything possible), and the user bases for most of our software were (generally) all on just one platform. But we had a mandate from on high for cross-platform development, which led us to all kinds of ugly, crippled, development systems like Perl generating web pages, Java, and http://c2.com/cgi/wiki?VisualWorksSmalltalk . In a management lull, I set out to write better applications; this is when I learned Wiki:CeePlusPlus , which I had always feared previously (it looks a good deal different from Wiki:ObjectPascal ). I used Metrowerks' Wiki:CodeWarrior and the Wiki:PowerPlant application framework; like the framework I had used at the mine, this was written by Greg Dow; this made for a pretty smooth learning curve. [I say "smooth" here because "steep," which is accurate, leaves people with the impression of "difficult." It wasn't.]
At Sequana I wrote:
and a number of other programs. It was a grand experience, but the company failed - whether because of bad management, insufficient funds, bad luck, or bad science I'll leave it up to others to say. I learned a lot and felt like I did a lot of good.
After Sequana (then Axys) came tumbling down, I was out of work for many months; this gave me a chance to write, still in Wiki:CeePlusPlus, Data Loom http://groups.yahoo.com/group/dataloom/ , a freeware program for multivariate data visualization.
My next job was at http://www.ski.org/EESutter_lab/ working on software supporting a nifty device for mapping electrical activity in the retina. It would have gone better if Erich and I had gotten along better, but we didn't and I left after a year.
After another period of unemployment, I went to Germany to work for a friend from Sequana at http://www.mucosa.de While there, I experimented a bit with Wiki:TestDrivenDevelopment, in Wiki:CeePlusPlus ( http://groups.yahoo.com/group/testdrivendevelopment/files/ClusterLog ), Wiki:PerlLanguage , and Wiki:VbClassic . Even, now that I think about it, TDD in Excel. I also did a little Wiki:PairProgramming in the course of mentoring some great junior programmers.
At Mucosa I wrote:
and a bunch of other programs. I repurposed some of the controls from InSNP to create a nice little code visualization:
Working with Perl got me thinking more about languages, which led to http://onlysyntax.blogspot.com
My German contract was up about four months before the 2004 US elections, so I moved to a critical county in a swing state (Stark County, OH) and volunteered for http://www.jeffseemannforcongress.com/ and http://www.johnkerry.com . We lost.
Now I'm back in San Diego. Last year I used Wiki:CsharpLanguage to explore
, and I'm now working for ActivX Biosciences on Torrey Mesa. It's not an XP shop, but I'm having fun. Learning Java (OK, but nothing special) and delighted to be using Eclipse. And Subversion. More programming in support of science.
Lately it's mostly struggling with web development - more different from regular application development, and harder, than I would have imagined. I hope it's just a matter of a steep learning curve.
I'm trying to re-develop my sequencing spreadsheet
(originally written in C#) in Java as part of the open source http://www.bioclipse.net/ bioclipse project. But I don't find myself with a lot of left over programming energy lately.