I’m Old, Part XLVI: Acrobat 2.0

Acrobat 1.0 was an astounding achievement. The team, engineering, QA, marketing, documentation, and management put together a nice solid product that did what it said on the box. Upon release, Adobe took out a two page spread in the Wall Street Journal expressing how Acrobat would change the world. It was awesome to be a part of that and not long after we released, Adobe’s stock value doubled.

After the 1.0  release, people (finally) took vacations. Some people moved on. New people came on board. Management started to forge plans for version 2.0 and how it would shape the future.

Acrobat 1.0 cut a lot of corners in order to meet spec and ship on time. There was shared core code, but everything that the users saw was implemented uniquely on each platform. This was the most expedient way to build the product, but certainly not a long-term solution. In addition, there were so many things that we wanted to implement, but didn’t have the time to do without a huge effect on the overall product and its stability.

As we planned 2.0, Bill McCoy, a senior PostScript engineer, joined the team. He spent a lot of the time with pages and pages of source code in front of him shaking his head at the short cuts we took and the overall design.

Carl Orthlieb and I had put together a simple API that met our needs in terms of hooking a search engine into Acrobat and allowing us to present dialog boxes, create menus, automatically navigate to pages, highlight words, and go to particular views. It was compact and met our needs. We had hacked it into the existing framework and had prototypes up and running. At one point, Carl and I did a presentation to the 2.0 planning team. While Carl and I covered what we needed and how we got there, Bill was half listening and half going over pages of source code, trying to get all of Acrobat 1.0 into his head.

The meeting felt like we were being told, “oh, that’s so cute what you put together and thanks for your time, but we’re going to do something different.” It was demoralizing and delivered in a way that was ego-crushing, but so be it.

The problem was that what they had planned was way in the future and in the meantime, Carl and I had to build our product with a shifting, unstable platform. The big plan was a plug-in architecture that would make every feature within Acrobat accessible from plug-ins as well as allowing new features to be exposed to the product and other plug-ins. This was part of a design done by Bennett Leeds for Acrobat. Around that time, there was something like 4 or 5 different plug-in architectures being using in products in Adobe and nobody was willing to share. There were some issues in making the Acrobat work because of calling convention differences on each platform (and each compiler!).  At one point, when they were stuck on a problem of getting Pascal and C calling conventions to line up, I came up with a really nifty thunking mechanism that managed that problem. I liked it so much, I sent it off to one of my old college professors who was impressed that I had created a rarefied closure in portable C.

Eventually, the entire architecture was put into place. In addition to the plug-in model, it included a much more solid implementation of platform specific and platform neutral code, building on a decent MVC design with an OS abstraction layer that made sure that all the screwy things like file systems, menus, window handling, and so on were pushed way out into the fringe code. Even though it caused a great deal of pain an re-implementation of existing features, it was ultimately the right thing to do.

The process wasn’t without internal friction, but that’s a story for another day.

I’m Old, Part XLV: Caffeine Machine

In several ways, I do not conform to the typical programmer stereotype. One notable example is coffee: I can’t stand the stuff. It’s weird. I love the smell of coffee. I love the smell of fresh grounds. I adore coffee ice cream. I like beer with coffee overtones (in fact, as I write this I’m sipping a beer that I made which has just that flavor). For a while, I assumed that coffee was an acquired taste and that with enough repetition, I could acquire it. This had worked with other things like olives, broccoli, and cauliflower: I forced myself to each them again and again and eventually I learned to like the flavor.

 I tried this with coffee. Eventually, it got to the point where I started challenging people to supply me with the best tasting coffee. All of it tasty awful to me. One exception was a coffee made for me by a barrista at Cafe Borrone in Menlo Park. It was sweet and thickened with copious amounts of fresh whipped cream extruded from a piping bag. As I drank it, I realized that this was no different than melted coffee ice cream, so not really coffee then.
When I was working at Newfire, most of the other employees were coffee junkies. At one point, I think someone did the cost-benefit analysis of bringing in a coffee service and the numbers added up. One of my peers, Andy Hess, had a great deal of chemistry and could probably sketch out the caffeine molecule above at a moment’s notice. Heck, at one point, I asked him to draw out 1-1-1-3-3-3-hexafluoropropane diol and he could do that. But I digress.

The coffee service showed up at our office, installed an inline water filter, a bulk coffee maker and three bins of beans (maybe a fourth of decaf, but what’s point?) with integrated burr grinders. You shoved in the filter holder and it ground a bunch of beans into the filter. You pulled it out and put it in the maker and it filled the carafe with black glory. My peers went through coffee by the gallon. When my girlfriend came by, she would hit the coffee too.

Now, let me interject here that I’m the youngest of three boys. My brothers routinely beat on me and being the youngest, fighting back really didn’t do much good. So one of my survival skills was figuring out how to verbally stab at my brothers in a way that resulted in maximum irritation with minimum repercussion (or alternately such that even if I had repercussions from them, my brothers’ repercussions from my parents would be worse). This has stuck with me. For example, at one point, my oldest brother had gotten a Cooper Mini convertible. I teased him that it was a clown car, which I could tell was getting his goat. At one point, I taught my daughter (who was non-verbal at that point) how to sign CLOWN-CAR in ASL – and trust me, it’s really obvious. So he pulled up and she pointed at the car and signed it perfectly. Mike turned red and and blurted, “IT’S NOT A CLOWN CAR!” See what I mean?

When I observed my peers stumbling to the coffee maker at various points in the day, I knew that I could get an easy, friendly jab at my friends. Each coffee dispenser had a sticker on the front displaying the type of bean – you know “Columbian Marching Powder” or “Kama Sumatra” or something like that. So I put more accurate labels on them: “Bilge Water”, “Sludge”, “Watery Mud”. I figured that they would appreciate the accuracy of the labels.

I will say that I’m not immune to caffeine. For a while, I had a diet soda habit, but a couple years ago I did some reading on aspertame and other artificial sweeteners to the effect that they are pretty much just as bad as sugar. I gave up diet soda a couple years ago cold turkey. This turned out to be no big deal, which I also understand is also unusual. Many people experience very bad headaches after giving up caffeine. Me? Nothing. Once in a while, if I’m cold, I have some hot green tea to warm up.

I likely inherited all this from my mom. She also had no taste for coffee. My dad is a coffee junkie. In fact, when my mom was in labor, my dad decided that he was an old hand at the whole birth thing, went off to get some coffee. The coffee maker was a broken mess repaired with medical tape. My dad, an electrical engineer, went about repairing it and making coffee and ended up missing my birth. Not so much the other father-to-be in the waiting room whose last name was Holle and was apparently as used to his name being mispronounces as ours, so when I was about ready to be born, the nurse called in Mr. Hawley and he went in instead, much to the shock of my mom who was, well, on display.

But coffee for me? No thanks.