I have a business degree from the University of Michigan. The business school there was pretty astute in their thinking about making their graduates have some fairly significant knowledge about computers. As such, computer classes were required. I found that I had a knack for software and took most of my electives in "Comp. Sci." (I did take some music classes ... but that's the subject for another time). Actually, one of my favorite Comp. Sci. classes had us writing code that would bootstrap some primitive hardware (creating our own operation system) and print a message on a Bell TTY (for some of you readers ... that's an old mechanical device that resembled a typewriter and using hammers and a ribbon, would print on a roll of paper). But, I digress ...
My first job out of University was for a company in San Francisco that had some financial software written in a language called PL/1 (which I'd studied) that they wanted to migrate to a new computer released by Hewlett-Packard Company called the HP3000. Marvelous box, that one. It was brought to market in the 1970s and to this day, still runs software that was original compiled way back then. In any event, the software was a portfolio managers system that was going to be adapted to modeling the municipal bond market - something not done before then. Because of my combination of business and computer background, I got the job.
I quickly became the "go to" guy on the project and ended up being offered the title "Manager, R&D". Today, I think that would be more a Director level position. We had some pretty big challenges to overcome with the new HP3000 computer in those days. As a result, I ended up having to roll up my sleeves and dig into the internals of the database and operating system to make things work. This furthered my skills on the software side of things.
In my next job, I used some of that internals knowledge to design a database transaction logging and transaction roll-back "add-on" which was sold to customers that included the Oakland A's Baseball Club. I've got another story to tell sometime about the A's, the Yankees and a Memorial Day Series with the A's fighting for first place. But ... another time for that as well. Suffice it to say, a crises happened that weekend and I was called in to solve it, which I did. That started my on a course of being a crisis manager and led me to open DIS and start consulting.
From there, HP employed DIS to help in their database lab to develop some of the tools much like what was being done for the A's. That gave me more exposure to systems internals. What started as a six month contract ultimately ran for 6 years. During my relationship with HP, there was a point where an HP manager said I couldn't do something I wanted to do because "no C++ compiler existed" on the platform. So, that prompted me to head of and learn a bit about compiler technology and I ended up porting the GNU Compiler Suite to the MPE/iX Operating System on that platform. With that in hand, I got another series of contracts from HP, including one that had me participating on the team that ported the Java JVM to MPE. I was responsible for some of the more complicated code in the HotSpot Just-In-Time compiler. Mind you ... I've got a Bus. degree, not a technical degree.
With all the internals knowledge I obtained during those series of contracts, I became a commodity that was in demand. One such project had me working for a Berlin based company that wanted to develop a Zero Down Time backup product. That company initially approached me to do some consulting on the database aspect of the problem. In fairly short order, it was decided I was indispensable and was offered the position of VP, Technology was I was to build the R&D department that would complete the product, bring it and complementary products to market, and to lead the design of the architecture. I spent 10 years with that company.
As things died down in the HP3000 marketplace, I left that company and resumed my consulting business. I did end up doing some significant consulting for the backup business, but as that started to wane, I went in search of new opportunities. An unfortunate circumstance led me to my next relationship. A close friend of mine from the HP3000 community named Bruce Toback suddenly passed away. Bruce was a driving force in both the HP3000 and Real Estate communities. He serviced an MLS in Southern California that was using the Real Estate Transaction Standard and a three tier architecture that included HP3000s in the back office, Linux at tier 1, and Macintosh XServers using WebObjects in the middle tier. Because of my reputation of being a "hired gun" that got the job done quickly in the HP3000 Community (and because of my availability), I got the job. Yep, up went the sleeves again and I learned RETS. In this process, we ended up using the libRETS RETS client software. There happened to be some bugs in it that I fixed and in turn, submitted back to NAR as patches. Anyway, we got the MLS through the crises and a migration onto a larger aggregator's systems when I moved on to the next project.
By then, I was a member of a successful "startup" and was approached by another local company as an Angel to help get their development on track. This company was trying to offer a Software as a Service model using .NET and various other Microsoft technologies. Up went the sleeves again and I dug into it pretty quickly. Unfortunately, as with most startups, that company did not succeed and I lost a year of time, received no compensation, and even lost my entire investment. I decided to go back to the Real Estate marketplace again and called on of my contacts at NAR to whom I'd submitted my patches. I asked him if he could recommend places or companies to call where I might find work as a RETS developer. He said that coincidently he had a need for such a developer and offered me the job only based on the past work he'd seen of mine. Of the two products assigned to me, one was the libRETS software, and the other was an Apache Tomcat based web server called Variman that provided RETS server side services. Once again, I jumped into the depths of software I'd not seen before and was able to quickly get up to speed for enhancing and supporting it.
After my engagement with NAR finished, I obtained a contract with TVWorks, a Comcast subsidiary. At the time, TVWorks had just closed its London, Ontario office and merged those operations into the Mill Valley office. The Mill Valley office was responsible for the applications side of the eTV services provided, whereas the Ontario office was responsible for the platform/server side. The server code was in C/C++ and TVWorks needed a C guy to step in … that was me. For the next year, I put out fires and stabilized the software. At one point, TVWorks put together a list of phone contacts for after hours support and as a non-employee, my name was not on the list. One of the managers noticed that and asked why and was told I was a contractor. He said "convert him".
For the next year or so, Comcast chased me before they made me an offer I decided to take. As a result, I am now a Comcast employee and have shuttered DIS. I will continue to support some of the open source software I've created/participated in over the years, but that will end up being and evenings/weekends adventure while I focus on my Comcast responsibilities.