There may be two or three people wondering why Captain Jake has been so scarce lately on the newsgroups and on this blog, so I thought I’d squeeze in a blog this weekend, explaining why this is the case.
I’ve been very busy lately for several reasons. Back in January, I started a contract for a firm in
While I was packing, I was listening to some tunes from years ago, from the early eighties and nineties and it made me nostalgic. I sat down and ruminated over the changes that had occurred in my life over the years…
I’ve worked in the software development field since I left teaching economics back in the very early nineties. I broke into programming by teaching myself C++ during all the ample spare time I had available as an economics instructor, and leveraging my heavy statistical training. My first programming job was using C++ to work on a DOS-based cross tabulation software package at a 4-person market research firm called Market Advantage. I made $30K a year. This was back in the days of 16-bit programming, with segments and offsets. We were using Borland C++ 3.0, which back in those days came on a whole bunch of 3.5 inch floppies. I liked C++ better than any other language, even though a lot of people were talking about how easy it was to lay out GUI’s in the latest progeny of QuickBasic that had been renamed Visual Basic and had a RAD capability. Back then, RAD was a concept that was basically unknown to most programmers (pun intended). Those of us in the C++ camp laughed at Visual Basic as not being a real language, since it lacked so many of the things that are necessary for true OO programming.
In any event, I lost that job after a year and a half when it became painfully obvious to the owner that a DOS program was not going to sell, when the whole world was using Windows, at least that was what he claimed was the reason. I think the real reason was that as the only atheist in a 4-person company of devout Calvinists that liked to talk about religion during work hours, I did not “fit in”. That was the first time in my life that I had ever been fired outright, and being totally green I let it get to me. I spent the next two months of unemployment depressed and wondering if I had made the right choice to get into programming after all. I alternated between the theory that I should have refused to discuss religion in the workplace and the theory that there really was no place for my position there given that Windows had made my product irrelevant. Now, in retrospect, it was a change that resulted in much greater happiness for me in the long run. I would not have been happy there in the long run, and did not miss being in on the ground floor of something big. I know this because a few years later I discovered that the firm had relocated to the building where I was working at the time. This was six years later, and so I was curious what had happened to the firm. I stopped in and lo and behold, the firm was exactly the same size and had exactly the same personnel as when I had left. In all those years, which seems like an eternity in computer time, they had not changed at all, except their name.
I’m very good at interviewing, as I was to discover over the next few years. Usually if I can get a face-to-face interview with a technical person, I will get an offer. So I was able to get an offer from CDW and I joined their merry band of IT professionals. They were a small firm back then, small in terms of personnel, not money, so we had to wear several hats, so to speak. I got to be quite good at recognizing the soft high-pitched whine of a hard drive about to die, and so did my co-workers.
One day I was in the server room with a coworker we will call “Bill”. I cocked my head to one side to listen, so did Bill. After a split second of listening he placed his ear next to each drive in the RAID array, then said, “Which one do you think it is? I think it is this one.”
I put my ear next to each drive and it sounded to me like the soft whine was coming from the one to which he had just pointed. “I think you are right.” I said.
“You know,” he said smiling, “these drives are supposed to be hot-swappable. Should we try it?”
“I guess so, if they really are supposed to be hot-swappable.” I replied. So Bill unlatched the drive and pulled it out. The green light turned red and then faded out. But the high-pitched whine lasted just long enough for us to realize that the drive we thought was about to die was not the one, and in that split-second of sudden terror before we could pop the drive back in, the drive’s sister drive suddenly clicked to a dead stop. We were mocked by the little red LED of doom, as we realized that we had removed the drive that was the mirror for the now-defunct drive. Of course the RAID now failed and calls quickly started coming it to the IT department complaining of unavailable sales information from the SQL Server database that had now been rendered chaotic.
But it was also at CDW that I made one of my most interesting programming fixes of my career. This was still back in the days of 16-bit Windows, which as you may know, or may not need to know, was single threaded and thus based on a non-pre-emptive model of multi-tasking, meaning that it was up to each program to yield time to other programs. If a program hung, so did the whole system. Well, our sales programs were full of synchronous calls to SQL Server which hung the whole PC while waiting for results to come back from the database. Sometimes the PC’s would be hung for several minutes if a long query was bogging down the server. During this time, the telephone operators could not make new orders in their AS400 sessions, thus costing money. We had a department meeting to discuss this problem. The programmer that had written the software said that this was simply the way that database programs worked and there was no way to speed up the server, as it already had the best hardware that was available at the time, and these synchronous calls to the server were in hundreds of places in the code. It would take days and days to replace them all if we decided to rewrite the code. That did not seem right to me, so I thought intensely about this problem for the first half of the meeting. We used dblib to access the SQL Server. What was it that we could do? Suddenly I had a
The programmer that had written the code looked at me like I had albino snakes crawling out of my head, but the rest of the department looked genuinely impressed. When we went to implement my solution, it took only a few minutes to write and it worked like a charm.
Perhaps the most fateful thing that happened to me while I was at CDW was that on February 14th, 1995, a couple of us were able to requisition a copy of Delphi from the warehouse to try out and see if it would be useful for our programming. We had been using Borland C++ 4.5 for our programming and thought we were hot-stuff, but even though we had no knowledge of Object Pascal, we were able to be more productive in Delphi that first day than we were in C++. The rest, as they say, is history. I’ve used every version of
There really was nothing else like
There are times in human history where genius seems to reach a critical mass and great and wonderful things come out of the resulting chain reaction.
Critical mass can be easily lost, indeed it seems inevitable given the churning of personnel that is an inviolable part of human existence. People move on, disperse or die and the heady mix that fueled the fires of genius is left as a dozen glowing embers spread across the landscape. Some disappear into the night. Others flare for a bit and then are heard from no more. A very select few will bright for many years. The most memorable names from
I attended my first Borland Conference in 1997, a mere two years after
But the Delphi Diaspora had already begun. The ship was not helmed by Philippe anymore but by Pizzaman, who introduced Chuck Jasdzewski (or was it Danny Thorpe? I can’t remember) with the by-line that he “doesn’t accept rides from strangers in black limousines”, a snide reference to Anders Helsjberg’s recent departure to MSFT. The Borland brand name was soon to be wasted in the Inprise renaming fiasco, the financial numbers were to continue to slide inexorably downward, and the Delphi Diaspora was to continue unabated despite a lawsuit. A disastrous
Now it is ten years after the BorCon at Opryland and
I think CodeGear is doing some good things to deal with this, by offering products that bring the Delphi RAD paradigm to other languages. I think the legacy of Delphi, as rich as it was, is not a good roadmap for the future, and CodeGear is wise to follow this new path of bringing RAD to the masses again where it was lacking. Executives will not balk at using a tool that does not lock them in. The dangerous uncertainty associated with
My personal programming is still in
So there you have it. This has been my own personal perspective on the history of