The Rest of the Resume
This documents what I've been doing since I left IBM in the summer of 1993.
I've stayed technical and current and found my latest passion - anything to
do with the Internet and Internet technologies.
I've also discovered I'm a lazy programmer - lazy as
describribed so well by
Looking back over my career I've come to realize there are some things
I bring to the job that have proven important for my clients and employers:
Customer orientation - At IBM Rochester there was an enormous emphasis
on the customer. Few of us had contact with customers in the normal
sense, that is, people who paid money to IBM, but each group defined its
own customer set. In my case this was always some person/group within IBM.
By defining a customer we also defined a very precise process how to deal
with that customer:
- Find out what the problem is.
- Design a solution.
- Get input from the customer on the proposed solution.
- Code and test it.
- Show the customer what's been down and get more input.
- Repeat (4) and (5) until you have something reasonable.
- Test it like mad.
- Deliver the solution.
- Stay in regular contact with the customer and maybe repeat some of this
When someone asked "Who is your customer", you better be able to answer
the next set of questions about how you followed this process. This has
became second nature to me and I apply it to every project I work on. This
process will ensure good communications, avoid solving the wrong problem
and result with a satisfied customer. I find it amazing that apparently
so few in our industry just don't get it.
Deadlines - I don't miss deadlines. Oh sure, I probably missed a
couple, but for the very very large majority of times, if I tell you I'll
deliver something on some date, you get it then. Sometimes I might have
to scramble to deliver, but I've got a long successful track record here.
Independent - I generally don't need much direction from my management.
Again, this is a long established pattern - I find something significant
to work on, start it and evolve it until it's done. It's not that don't
need help, there's always new things to learn, but I can pretty much manage
As you can see I've been involved in many differing aspects of our industry.
There are a few skills I've picked up that seem more useful than others:
- Application Programmer -
my language of choice is Perl or PHP, depending on the environment.
I've been writing applications to solve my customer's problems for a long time
and I've gotten pretty good at the process.
A look in my toolbox will
show you examples of code at SourceForge
as well as simpler Perl programs I've done.
What you will not see are all those Perl and PHP programs I've done at the
University of Michigan to manage processes with our genotype and phenotype data
or the applications to assist analysts in their work.
- Perl Dump is the name of the very short and intensive class
I've been teaching graduate students at the University of Michigan.
Perl turns out to be an especially effective language for people
dealing with genetic data.
Hashes, complex data structures, and regular expressions are just
the thing people need to create input for genetic analysis programs.
Time is precious for grad students and I offer an extremely intensive
series of seminars to get them on their way with Perl.
This has been going on for years now and has been highly successful.
Seems to me something like a Perl Dump is just
what people in industry need to pick up another language.
- MOSIX cluster - I've been
building and managing a cluster of MOSIX machines for several years now
In addition to all the things you'd expect like building kernels and
installing systems, I've gotten pretty good at shopping for
the hardware we need, including
Dell's PowerEdge servers
and RAIDs for all that genetic data (approaching 100TB of space in 2008).
- Organizing large amounts of data is something that I've had
experience with for years, beginning with those IBM mainframes.
Genetics today deals in terabytes of data and just doing the basics
of organizing the data and backing it up is a real challenge.
Databases for genetic data can easily grow to a billion rows.
Extracting that data for analysis is a continual challenge.
- Build, integration and deployment in large development projects
is something I did for most of my career at IBM.
Since then I've worked on a couple of
Driven Development projects.
Development is an incremental process and after a year or two, it's easy
to have invented a set of products that are so complex you can't figure
out what or how to deploy and maintain them.
I can help sort out the mess, or better, avoid getting there in the first place.
The most recent items here are undoubtedly out of date.
See my latest and more formal resume
for the latest scoop.
As a senior programmer analyst I provide support to a group
of analysts working on several projects including
where the goal is to find the genes responsible for diabetes.
My role is to help organize the massive amount of data in this
project and to automate the analytical processes.
Early on I set a goal of "improving productivity" by one to
two orders of magnitude. Much of this has been accomplished
by automating various processes (hardly all my effort) and
we are now working on tools for the next order of magitude.
My responsibilities include:
- Install/maintain a Web infrastructure (Apache, MySQL, PHP etc)
- Write Web applications in support of our processes
- Teach Perl to Biostat students in our group
- Design and implement software to improve the processes
used by the analysts
- Write tools to organize the data from the tens of
thousands of analyses generated annually by the group
- Set up and administer a 60+ node
- Redesign and implement our processes to cope with the ever larger
data we encounter (multi-GB files and databases
of hundreds of millions of rows)
- Figure out how to cope with over 30TB of data.
Where's the next 100TB going to go?
How to back up this much data?
As a part time instructor, I developed and currently teach a class on Perl
which is being offered once a year.
UOB launched a Java-based project to write a massively large system
to handle the lending processes for the bank. The project consisted of about
16 Java programmers and an additional 24+ others. This system was
developed using Coad methodology and used an interative development process.
It was exceedingly complex, interfacing with some 20 other bank systems.
The design and development process helped us insure both quality
and that was delivered on schedule.
I served as manager of Development Support which is a group whose
goal was to make the Java developers and testers more efficient and to insure
their talents were maximized. As such we were responsible for:
- Unix and NT installation/maintenance
- Oracle support
- Configuration management
- Weekly "builds" of the product
- Writing tools for the developers
- Design of the final production systems
- Deployment of the product using Marimba
- Project management
- Support of the intranet servers (mail, news, LDAP and Web)
Although I was a manager and had responsibilities for hiring/firing,
employee evaluations, etc., I also had the lead role in the technical
design and implementation of much of the work we did.
First Virtual Holdings, formally fv.com (1996-1997)
First Virtual provided a number of secure services for Internet Commerce.
As a member of their research and development team I spent most of my
time to help with Web-related tools for First Virtual sellers. Initially
these were CGI-based tools but later I was involved in substantially
more complex solutions dealing with Internet Commerce. A few highlights
FVPay was a complex system installed on at a seller's facility to
process transactions paid using the First Virtual VirtualPIN. This system
ran on both Unix and Windows/NT platforms and was to process
a significant portion of transactions used at First Virtual.
Direct seller contact - I had a fair amount of contact with large
First Virtual sellers which I found enormously useful in trying to design,
develop and deploy systems for our customers.
Windows/NT Experience - I worked on a project to provide VirtualPIN
processing for sellers using Windows/NT. This gave me good experience
with some of Microsoft's tools for Internet Commerce like Merchant
Server, IIS and MS SQL.
Database Experience - I had the chance to work with quite a variety
of databases on Unix and NT systems, including both commercial database
systems and the "free" ones. I learned to really appreciate the role
of the database administrator and how complex this world can get.
Apply-and-Buy - was a CGI script which significantly simplified the
interface for VirtualPIN processing for the seller. This effort turned
out to be important because of its wide positive impact on First Virtual
sellers who needed to make the payment point as simple as possible. A complete,
well defined interface like this saved the seller time in getting his pages
online and saved First Virtual time by not needing to answer so many questions.
Internet Services Provider Network (1995-1996)
ISPN was in the business of putting telephone companies into the ISP (Internet Service
Provider) business. This provided me with the chance to really get into
the Web as I served as webmeister
for as many as 20 servers on the Internet. I was responsible for the design,
development and deployment of Web servers for a dozens telephone companies.
This provided me the opportunity to work from my
home office (45Kb).
As the nature of the Web has changed, I probably would
better be called a web programmer since I did quite a lot
more programming as opposed to simply administration. A few points to be
Commercial Web site development - I developed over forty commercial
web sites using all the usual web skills, including graphics, forms, image
maps and extensive use of CGI scripts. I left ISPN with some 250 CGI scripts
and 1400 HTML documents in production.
Community Web Project - had the goal to provide a Web site for several
hundred communities in Minnesota. I spent quite a bit of time inventing
a way to automate a way to build image maps that could be used to add cities
to this list. I also had to automate the creation of each web site (even
to the point of being able to move them easily to another server). I invented
a set of processes to allow volunteers to provide the information for each
city. I thought it was a great idea, but the project faded away for lack
Sprint Sports Stop, formally www.sprintsports.com - was
quite a large site where I did most of the original development which included
extensive use of CGI scripts. One project was to provide near-real time
reporting on The Sprint International and Titleholders Championship golf
ISPN Business Processes - was a project to provide a software system
for the company itself to use. This entailed collecting information from
each the telephone companies and then providing feedback to them so they
could see exactly where we were in providing the final product to the telco.
I had quite a bit of regular contact with the telco personnel.
Software Toolsmiths (1993-1995)
In 1993 IBM made me an offer I just couldn't refuse. I was out on my own.
It did not take me very long to discover that I had a pretty good collection
of skills. So over the next years, I kept myself busy working as a consultant
under the name Software Toolsmiths. Some of the projects included:
Davis, Thomas and Associates - where I taught a number of classes
on Unix, shell programming, C and C++. At IBM I had taught classes on various
specialties, so this was right up my alley. It was enjoyable and I always
got very high ratings for my efforts.
User Interface System (AUIS, a.k.a. Andrew or ATK) - Using the
standard AUIS sources, I created pre-compiled versions of AUIS for Linux
and provided support for my users. These were made available on the Internet
and now are available on various CDROM distributions of Linux).
Feedback from the users allowed me to tailor the packages to minimize the
need for help to make the software useful.
Linux Journal - was the first
public magazine in which I was published. I wrote a series of four articles
for the August through November 1994 issues of
the Linux Journal.
Analysts International Corporation
(AiC) - provided me the chance to design and develop a system to distribute
1GB of software to various remote locations around the world. I had to
build a small isolated network of AIX machines, install the Andrew
File System (AFS), DB/2 and a host of AIX software development tools.
In addition I installed lots of GNU and other freely available software.
The task was to integrate all of this software, identify the dependencies
and design a means to distribute, install and maintain it on machines scattered
around the world.
By 1994 it was clear the Web was where it's at and a few of us formed HomePage.
I served as the systems programmer and webmaster
for HPS.COM (note the short domain name, not many of those left
anymore). I learned a lot about marketing and selling and what it takes
to run a business. My responsibilities included all things technical:
- Install and support Linux on our server
- Install and support the Apache Web Server
- Install and support various databases for Linux, my favorite being MySQL
- Design and create Web pages for our own use
- Design and implement CGI scripts for our customers
See here for details on my IBM career.