Tuesday, October 20, 2009

Crowning achievements as a programmer

I guess "crowning achievements" is a bit extreme, but there are several applications or bugs I've worked on that I was pleased with. I'll just list some of them out and provide a brief explanation as to what the were and why I was pleased with them.

1) My first program used on-the-job ever. I was working as a material handler and going to school for CS at night. I wrote a program to create receipt documents for items that were not expected or properly shipped to our site (at DEC).

2) ARS (Action Reporting System). This was probably my first MAJOR application. It was basically a "call desk" application that allowed users from several facilities to log requests to various operations groups. It could be for IT or Facilities and others. It was flexible, and well laid out, but it took me several months longer than I had estimated it would take.

3) Automated backups. Not really a programming task, altho' it did involved making changes to some of our software that helped manage our tape library. Not only did I automate backups for 3 sites, but also met with the operations managers of several other sites and we created a rotating schedule with one another to store our tapes off-site; this saved DEC about $250,000 per year (Or was that per quarter? I cannot remember now) in off-site storage fees and also in personnel.

4) My first "money making" application. It was a silly application that ran on Windows or Mac OS (7 or 8). It's purpose was for tracking software on company-owned computers and adding the lists to our asset tracking software that the companies also used to manage their physical inventory.

5) Another application used in conjunction with our inventory software. It tracked (and kept an ongoing history of) a company's parts inventory in a manufacturing site. It was also smart enough to predict (based on past usage) when you would need to reorder. The fun part was devising a file layout that acted as not only a file of current inventory, but mapped the actual history of the transactions.

6) Mortgage application. It was huge. It was powerful. And we had a chance to make good money on it by selling it to a competitor but we did not and they squashed us anyway (since they dominated the market). A LOT of dynamic data mapping and interesting structures and logic managing it all.

7) Data mapper. Heh. What? Mapping data? Big deal! Well this one was. It had to map LOC and BA data from one bank to another (back in the day of large bank takeovers). Both banks used completely different tracking and management systems. It was a challenge but it was great fun! It had to be dynamic, determining how it should map raw data on the fly, not in any specific format.

7a) DES. I had to implement a DES encryption library in DEC BASIC, and some basic methods to do stuff like encrypt/decrypt/generate PINs, MACs, etc.

8) Bug #1. I was working in OpenVMS for DEC and THE Andrew Goldstein logged a bug report and it was assigned to me. I looked at it and pretty much figured out the issue within a week but I spent over a month looking at it simply because it was logged by Mr. VMS and I did not want to blow it. Turned out it was NOT a bug, but a POTENTIAL bug if we ever completed an unused section of our backup code (a framework was in place but never activated, the bug was in that code). I documented the heck out of it and closed the bug.

9) Bug #2. I worked in the security section of the VMS group. I got to see some cool bugs. This problem was in memory management. A few lines of assembly language were out of place and an object was being cleared when it should not have (under very special circumstances). It was my first big kernel issue.

10) Bug #3. This one was daunting. But, like the bug before it, it simply came down to code being executed in a certain order that caused an issue. I can't actually go into detail with this one. I can say it was obscure.

11) Finally, in my current job, I wrote a little servlet that conformed to certain library specifications that would indicate to the caller whether or not items were available for use based on certain criteria. It was designed to be simple and very quick because it was called on the fly from someone else's website that interlinked their library services with our permission services. It was a lot of fun to write and my first solo project after moving.

And that's the short list of the things I had the most fun with. I have written many other applications (including disk scanners that were used by other people in their own products) and graphical queue management software, graphical system management software, data gathering software (for QA), data generators, data sifters, etc., but those stand out in my memory.

No comments: