David Gelphman's Blog

1 Comment

On the Debug Podcast

Recently I made an appearance on the Debug podcast, hosted by Guy English and Rene Ritchie. It was terrific fun talking with them and we’ve gotten a lot of positive feedback from listeners. We had so much to talk about that they broke it up into two parts.

In Part 1 we talk about how I got into computing, working with FORTH at Stanford Linear Accelerator Center, my days at Adobe Systems in the late 1980s, working at General Magic, and then RBI Software Systems. Part 1 ends just as we are talking about RBI moving to Apple to work in the Graphics and Imaging Group in June, 2000.

Part 2 begins as I arrive at Apple and begin working on Printing and Graphics just as Mac OS X was ramping up for a beta release in the fall of 2000 and the 10.0 release in the Spring of 2001. It was a fantastic time to start at Apple and be a part of its evolution. And yes, we also talk about bagels.

If you haven’t already, I hope you listen in.


AWK! That Can’t Be Right!?

Predicting when software will be ready to ship is hard. Especially when the software involved is:

  • a complete rewrite from scratch of already existing software.
  • being written by a completely different team (and company) than the one that wrote the original code.
  • a system software component that interacts with virtually every 3rd party app on the platform.
  • required to be fully compatible with the existing software, plus new software and hardware in development.

But that was exactly the scenario I was in, along with Rich Blanchard and the rest of the development team, when I was at Adobe Systems circa 1991 writing a replacement for Apple’s LaserWriter printer driver. And the software we were writing was a critical part of Adobe’s strategic plan for preserving its largest income source at the time, PostScript licensing revenue. No surprise that there was a lot of scrutiny about the project and when it was going to be completed.

Years later, the website MacJournals.com did a write up about the project, including quite a bit about what role the LaserWriter driver software played in the printing system on Mac OS at the time. I have my minor quibbles with some of the details of that write up but one thing was true: that software project really burned me to the ground and was a major factor in my deciding to leave Adobe for greener pastures in 1993.

The Definition of Bad Management

There are a lot of stories about the project I could tell that would raise the hair of every software engineer on the planet, but one clearly defines the term “bad management”.

Part way into the project, Adobe hired “Stoy Aho” to manage the project and the engineering team. As far as I could tell, Stoy had no experience managing a software project or software engineers and there was no evidence that he knew how to write software beyond simple UNIX shell scripts. And even that ability became suspect.

As the completion date for the software kept being pushed out (see the bulleted list above for why), upper level management at Adobe started having meetings every day at 8am to discuss the status of the project. Stoy went to these daily meetings to report how things were going. In order to satisfy his need for something new to report, each team member was required to write a status report each day.

But we were converging on completing the software and some of the tension the engineering team members were feeling began to dissipate; things were looking good. So it was a complete surprise when Stoy came to me and told me how worried Adobe management was about the project. It turned out that he was showing them information he had calculated from our bug tracking database. By using the rate we were fixing bugs and observing the rate that new bugs came in, he had potentially useful information about predicting when the software would be ready to ship.

And that is why he was alarmed. Despite our sense that things were going much better, his analysis of the data indicated that they were getting progressively worse. I asked how he computed the results that he obtained and Stoy said he’d written an AWK script to process the raw bug count data. I immediately demanded that he show me the script.

I didn’t know the AWK programming language but it didn’t take me long to find the problem. At a critical point in his computations, Stoy had inverted the numerator and denominator in one of the calculations, causing his script to produce results that were the exact inverse of the truth! His program showed that the faster we fixed bugs, the longer it would take to ship.

Repeat after me: Stoy’s AWK script showed that the faster we fixed bugs, the longer it would take for the software to be ready.

This occurred over 20 years ago so I don’t remember exactly what I said at the time, but I’m pretty sure my response at the time was something besides AWK.


A Fortune Cookie Determined My Future

After working at Adobe Systems for five years and with an extremely stressful software project behind me, I took a much needed 6 week “sabbatical” at the end of 1992. When I returned to work afterwards I was somewhat refreshed but also pondering what to do next.

A few months after my extended break I got a call from a job recruiter named Sondra Card. In the past I had ignored such calls but this one caught me at a time when I was wondering about my future with Adobe. And this wasn’t a call about just any company either. The company Sondra was recruiting for was General Magic, a company co-founded by Bill Atkinson and Andy Hertzfeld, two superstars from the original Macintosh development team.

I didn’t know much about the company beyond that, but I soon found out a lot more. General Magic was creating amazing software to power a new kind of handheld computer. Called Magic Cap, the software and the devices it would enable were almost certainly going to take the world by storm. As if that wasn’t bold enough, the company was also inventing a new programming language, called Telescript, that allowed creation of a program that would travel the internet on behalf of a user to do his or her bidding. To top it all off, they had the coolest company name and logo on the planet. 

General magic logo 1

After finding out a bit about the company, I definitely had to pursue the job opportunity further. Because of my strong background in 3rd party developer support at Adobe, they were considering adding me to their existing 2-person developer support group. My responsibility would be to support the first 3rd party developer building a product on top of Telescript.

As part of the interview process I met the senior people on the Telescript team and found them all to be fantastic people who were both extremely smart and quite amicable. I also found out that in addition to Andy and Bill there was a huge roster of superstar programmers, many of whom were formerly from Apple. I apparently did well enough in the interview to merit a demo of Magic Cap by none other than Andy Hertzfeld. The software was still unfinished but it was clearly something special. The use of the word Magic in the product and company name was well deserved.

With my head spinning, I was taken to lunch by one of the General Magic employees I already knew well. Paul Gustafson and I had worked together at Adobe for a number of years and no doubt it was Paul who had suggested that General Magic recruit me. Paul took me to Hunan Homes, a good Chinese restaurant just across from the General Magic office.

Paul was there to tell me how great it was to work at General Magic and find out my thoughts about working there. I don’t remember much from the lunch because my head was in a cloud. But what I do remember is that at the end of the meal when we got our fortune cookies I got the best one ever. It read: “A starship ride has been promised to you by the galactic wizzard (sic)”.

Starship Ride

Paul and I just stared at each other. We were both dumbfounded. 

A few days later I was offered the job by General Magic and I left Adobe to take it. I’ve got to say that the fortune I got at that lunch probably influenced me more than I’d care to admit. When you are promised a starship ride by the galactic wizard you just have to take it.