Dubman.com/narratives

The epic of Mac Works 3.0

Jonathan Dubman circa 1991

The birth of Works

Before Microsoft Office, Microsoft Works combined a word processor, database, spreadsheet and more into one app.

Steve Jobs, eager for business software for the Macintosh, had encouraged a small team of independent developers in California to build “MouseWorks”, following on the success of AppleWorks, a groundbreaking (but non-GUI) “office suite” that ran on the Apple II.

Meanwhile, Bill Gates wanted software to sell for the Mac, and Microsoft struck a deal with this startup to publish the app as Microsoft Works for the Macintosh. It was written primarily in Motorola 68000 assembly code on the classic Mac OS, and it quickly became one of the best selling Mac apps of that era.

Building a new team

After the success of version 2.0 from the original team, Microsoft hired me as the first full-time developer for version 3.0. Even though I was a new hire straight out of college, I was already fluent in 68k assembly language, and I had already worked on a desktop publishing app in C that implemented some of what Works was still aiming to do, albeit on another 68k platform. I can see why my manager, Art, was so motivated to hire me, after interviewing about 40 others (!) for the position. Art was only part time on MacWorks. The rest of the time, he managed Flight Simulator, posters of which lined the walls. His favorite compliment was “slicker than frog snot!” We got along great.

This was the dawn of app integration. The previous year, I had been in the room (an interior office in old Building 5) when a developer demoed copy and paste working the very first time between Word and Excel on Windows. Microsoft was a much smaller company back then, based in a new office park accessed by a two-lane road through the forest in the “city” of Redmond, Washington.

Consulting with Charles Simonyi

In the summer of 1990, I camped out in Building 6 with Charles Simonyi to review the codebase of the MacWorks Word Processor, several feet high when printed out. The Motorola 68000 assembly language didn’t intimidate me at all, but very few people could even read it. We dove in without hesitation.

By the time we got to the bottom of the pile, we had come to different conclusions. Charles thought we should stick with the codebase, whereas I still had battle scars from a similar document architecture at Infinity Software. I thought this WP module appeared particularly weak and brittle, the worst of the lot.

I thought we’d be better off pulling the guts out of it, grabbing whatever made sense conceptually or code-wise from the Word team, and reconstructing the app around a rock solid, well-defined, forward-looking, unit-testable core in C.

Charles was a veteran of Xerox PARC who was the legendary inventor of the graphical word processor, who had joined Microsoft in 1981, when I was in 8th grade. Works 2.0 was already selling well with this codebase, and he thought we could integrate our desired list of 3.0 features into the old codebase incrementally in reasonable fashion without this risky rework. We went with his approach.

Fast forward

While I made the best I could of it, even geniuses make bad calls sometimes, and this approach turned out to be an engineering mistake, as another Microsoft programming legend, Doug Klunder, the lead of Excel (who had interviewed me), came to agree.

Spaghetti nightmare

The code we started with was a spaghetti nightmare, full of bugs, based on a data model too-tightly coupled to layout, almost entirely written in poorly-commented, weakly-structured assembly language that violated engineering best practices already well-established. It wasn’t even 32-bit clean; they were stashing data in the upper byte of long pointers.

The original developer was incommunicado, burned out and cashed out, sailing to Alaska. The code we inherited was so inefficient that every time users hit a key, the function to recalculate the layout for a line of text was called up to 13 times. I never met the man, but I totally understood why he was on that boat, even when I was cursing him under my breath for writing that code.

We were using beta compilers on a beta OS on a system (macOS, pre-OS X) that lacked preemptive multithreading, with primitive memory management. Computers were slow, the codebase was huge, and a full build took long enough for lunch at Thai Kitchen. The entire team was new hires and a couple members of the original team working remotely who could share the oral history of the project as we attempted to decipher inscrutable and buggy code.

Demoing at MacWorld Expo

With version 3.0 underway, I was happy to return to San Francisco to demo the shipping Microsoft Works 2.0 at MacWorld expo in January 1991. Our product manager, two doors down from me in Building 6, was Melinda French when she was not long out of school, who excelled in that role, as you would imagine.

I used all the presentation skills I had honed at the city and state science fairs and got a chance to speak directly with the industry press and with tons of existing and potential customers who shared their ideas and problems. I’d been to these big tech expos as a kid, and it was a highlight to help put on the show.

Interview loop-the-loops

These were great times, and difficult times. 60, 80 hour weeks were typical. It was hard to hire developers, even with nonstop interviewing. There just weren’t enough out there. We actually had to do three jobs: first, the tough jobs we were hired to do, plus flying all around the country to screen candidates, and then, all the work that wasn’t being done by the people we hadn’t hired yet.

Bill Gates was on a number of my interview loops. Some of the names I knew, because they were quasi-famous. My favorite response to a technical interview question about the Macintosh file system started with, “Actually, I wrote that…” This was Randy Wigginton, Apple employee number 6, personally hired by Steve Jobs, sitting 1:1 with me in my office, whose source code I had studied to learn 6502 assembly. He had worked with Woz on the Apple II itself and co-authored the disk drivers with Woz in the hotel room the night before a demo. He had written the language I used at my own startup. He had created MacWrite, which helped inspire the word processor we were working on. In the end, Microsoft was unable to sell him on a tech lead position for our group, which felt to me like a bad omen.

I also remember the interview loop with Ray Tobey, the brilliant creator of a game called Skyfox that had blown me away by its performance 10 years earlier. I saw his resume and I couldn’t wait to ask him how he did it. He had unrolled all the assembly language loops for animations and scrolling to eliminate wasted clock cycles. Apparently Woz himself had also been blown away and hooked him up with Electronic Arts, upon which Skyfox became a groundbreaking hit and helped put EA on the map.

In many cases such as these, I recommended strong hire, but then, nothing. What happened, did some ridiculous pop quiz on a whiteboard trip them up? A lot of folks clearly had the right stuff, but somehow didn’t pass the filter. There were more like this. Positions remained unfilled for months, and the work had to get done regardless. It was a running joke, who was going to take this week’s tasks formally assigned to “Mr. X1” and “Mr. X2” (Note the implicit gender bias, pervasive in the early 90s.)

Surviving the death march

I remember winning some absurd contest for too much free coffee by fixing 72 bugs in a single day, while thinking, the real problem is, those bugs shouldn’t have been there to begin with.

One week I worked 118 hours, while my father was in the hospital, in order to complete the C port of cut, copy and paste. I have bicycled 118 miles in a single day, and I felt about the same afterwards. I slept every other night under my desk. I discovered that you can actually see a trace of the sun from the top of Clyde Hill on a clear night at 3 AM on the summer solstice. It’s amazing that Microsoft let me do this, because any rational adult human being with some life perspective could see that is not a good sign, but Microsoft so prided itself on being “hardcore” that it was scrawled in pink graffiti on the recruiting poster. We were sleep-deprived, under constant duress, and given infinite access to free sugary caffeinated drinks, like the Army used to hand out cigarettes to soldiers like my dad, who now had cancer.

Looking back at the calendar while writing this, I was astonished to realize that we completely re-engineered the clipboard code across the entire product suite three weeks before Bill Gates would show it on a public stage with the CEO of Apple. No wonder I was stressed. Good thing it worked!

Microsoft Works 3.0

Ship it!

Making more money than I could count did nothing to stop this lifestyle from taking a toll on my own health at the age of 24. Others on the team had health issues that took them out of commission for some time.

As were were working on version 3.0, the market started filling the gap we left open with our unfinished app. Apple issued a competing product through its subsidiary, Claris, that started stealing the spotlight. A tiny outfit I knew from the early days called Beagle Brothers made BeagleWorks, licensed to WordPerfect, that just seemed to drive home the point that we were late, late, late to market.

I stepped up and led the effort to get the word processor over the finish line, eventually garnering a well-deserved promotion. I’d become a tech lead for a group that included my official manager. The entire team was heroic, and we got our product out the door in the fall of 1992.

Apple and Microsoft, together on stage

Bill Gates announced Works for the Macintosh version 3.0 on stage with Apple CEO John Sculley on July 15, 1992. At this public launch event, Microsoft critically demonstrated its commitment for the new “PowerPC” CPU architecture (a performance upgrade from the Motorola 68k CPU series, many years before the switch to Intel.) This was half a decade before Steve Jobs returned to Apple, during a time when Microsoft’s continued support was a vital signal for the continued viability of the Macintosh, and, though it seems almost absurd to say it today, the continued viability of Apple as a whole.

Mac apps were important for Microsoft as well, as Bill Gates explained. At that time, when Windows was just on the knee of its growth curve, the Mac app market was a much bigger portion of Microsoft’s total revenue than it was a few years later.

In the product group, we saw the business unit sales data product by product, channel by channel, month by month, as it came in, in Melinda’s reports. Microsoft Works for the Macintosh was then among the top 5 Mac apps in all-time sales volume, was a highly functional app, came pre-installed on some new Macs, and sold well at retail. Once the new version was out, our app stayed on the charts month after month, like a hit album. My small team delivered an excellent ROI for Microsoft.

After the product shipped, I took a month off and went back to reconnect with my family. I felt like I could sleep for a year.