Revolution in The Valley [Paperback]
Page 24
I dragged Bud over to my house to show him how I could rapidly switch between MacPaint, MacWrite, and MacDraw. He was impressed, but to my surprise he complained that the switching, which was almost instantaneous, was actually too fast.
“OK, I’ve seen enough... It’s great. Apple is going to bundle it with the Mac. Congratulations.”
“I think it might be confusing to switch from one application to another without any feedback,” he told me. “What if someone switches accidentally? Maybe you could use animation to make a smoother transition.”
That sounded like a great idea to me. We decided that one application should scroll off the screen horizontally while another was scrolling on, which gave the users a simple, concrete mental model of the applications wrapped around a kind of Lazy Susan, which they could rotate to move the desired application to the visible area. I quickly wrote some fast scrolling routines, and was blown away by how cool it looked to see the applications zip across the screen.
I started showing my proof of concept demo to my friends at Apple, as well as to a few user groups, and it was very positively received. Unfortunately, I still had to finish up the product release of Thunderscan, which I barely managed to do by the end of November as I had promised. After taking a short vacation, I got back to work on what I was now calling “Switcher” in early December, and by Christmas I had much of it implemented, including a simple UI for selecting applications, along with “Switcher Documents” for remembering sets of related applications.
In early January 1985, I got a phone call from Guy Kawasaki, one of Apple’s third-party evangelists, who told me Apple was interested in buying Switcher, and that he was assigned to make that happen. The first step was arranging a demo for Steve Jobs.
I entered Steve’s office with a bit of trepidation because I thought Switcher was worth at least a quarter of a million dollars to Apple, but I was sure Steve would never want to pay me that much. But I was also proud of Switcher and was interested in seeing how Steve would react to it.
I booted up my by-now standard demo of MacWrite, MacPaint, MacDraw, and the Finder, as well as a little maze-generating program written by Steve Capps. I configured Switcher with the scrolling animation initially turned off, so it would have more impact when I showed it later. I demoed cutting and pasting between MacWrite, MacPaint, and MacDraw, in seconds instead of minutes, and then I turned on the scrolling animation and started switching rapidly between them, in both directions.
But then he paused, and stared at me for a moment with an incredibly intense gaze, as if he was sizing me up or maybe just trying to scare me.
“OK, I’ve seen enough, “ Steve interrupted me. “It’s great. Apple is going to bundle it with the Mac. Congratulations.”
But then he paused and stared at me for a moment with an incredibly intense gaze, as if he was sizing me up or maybe just trying to scare me.
“But I don’t want you taking advantage of this situation. I’m not going to allow you to take advantage of Apple.”
“What do you mean?” I asked him, genuinely puzzled.
“There’s no way you could have written that program without confidential information you learned working at Apple. You don’t have the right to charge whatever you like for it.”
I started to get angry. “The program is only half finished, and if I don’t think you’re paying me fairly, I won’t be motivated to finish it.”
Steve gave me another intense stare as he paused for a second. Then he stated a single number, without explanation.
“One hundred thousand dollars.”
“I don’t know,” I told him. “I think it’s probably worth a lot more than that.”
“Don’t argue with me. One hundred thousand is fair, and you know it.”
I didn’t seem to have any alternative but to capitulate to Steve’s price fixing, since he was difficult to argue with and I really wanted Switcher bundled with the Mac. I eventually negotiated the final agreement with Guy Kawasaki, where, in addition to the $100,000, I managed to get a 10 percent royalty of the wholesale price if Apple sold Switcher separately, which Steve swore they would never do. Eventually the royalty delivered another $50,000.
Getting Switcher going wasn’t that hard, but it was a very difficult program to finish because it overturned some of the underlying assumptions the applications were making, yet it was committed to keeping everything working anyway. Much of the work in the latter stages involved testing it with every application I could get my hands on and debugging crashes. Usually I could concoct some kind of technique that would mitigate the problem without causing worse problems elsewhere.
Switcher’s “About” box
Predictably, the hardest part of finishing Switcher was making it work smoothly with the Microsoft applications. That was partially because Microsoft was a very early developer and took liberties with the system most developers would shy away from, but it was mostly because the instructions comprising their applications were encoded in pseudo-code to save space, in the tradition of the byte-code interpreters from Xerox, which Charles Simonyi advocated.
Unfortunately, the pseudo-code kept me from disassembling the program when it crashed, which made it more difficult to debug. I finally developed a debugging technique by single stepping through their interpreter, six instructions at a time, to get to the instructions that were doing the work, but it was pretty painful. I was determined to slog through it because of the promise I had made when I visited Microsoft.
One of the last problems I addressed before finishing the first release of Switcher in March 1985 had to do with applications hanging. If you’re running multiple applications, you don’t want one hanging application to take down all of them. I added a feature that allowed the user to kill the current application if it was hung up by monitoring for a specific key combination during the vertical blanking interrupt handler.
I knew I had to pick a very rare key combination, because you didn’t want users killing their applications accidentally. I decided on shift-command-option-period, four keys held down at once, which I figured would be pretty hard to stumble into accidentally. I was surprised, then, when I got a call from Jeff Harbers at Microsoft.
“Hey, I like that abort feature you just added, but you’re going to have to change the key combination. We’re using that one in Microsoft Word,” Jeff told me. Microsoft Word was very complex and it possessed an enormous range of keyboard shortcuts, way too many as far as I was concerned.
“Okay, suggest something else and I’ll consider it,” I told Jeff.
Jeff didn’t have anything specific in mind, so he told me he’d get back to me soon. I had to laugh when he called back the next day and withdrew his request. He told me I should go ahead and keep shift-command-option-period as the abort sequence.
“OK, that sounds good to me, “ I told him. “But why the change? Doesn’t it still conflict with Word?”
“We’ll change Word in the next release not to use it. The problem was we couldn’t find a safe sequence—I guess we’re already using every key combination!”
I officially released the finished version of Switcher in April 1985 and maintained it for a few versions after that. Eventually, I handed it off to Phil Goldman, a tremendous young programmer from Princeton who was recently hired at Apple, who went on to write MultiFinder (with Erich Ringewald), Switcher’s eventual successor, in 1987.
Handicapped
1985
The reason Steve parks in the handicapped space
Most of the anecdotes I’ve included in this book are firsthand observations, but sometimes a second- or thirdhand story is just too good to pass up. I didn’t actually witness the following encounter but a book of Mac folklore would be somehow deficient without it.
Steve Jobs was not the most considerate individual at Apple, and he demonstrated that in lots of ways. One of the most obvious was his habit of parking in the handicapped spot of the parking lot—he seemed to think the blue wheelchai
r symbol meant the spot was reserved for the chairman.
Whenever you saw a big Mercedes parked in a handicapped space, you could be sure it was Steve’s car. (Actually, it was hard to be sure otherwise because Steve had a habit of removing his license plates.) This sometimes caused him trouble, since unknown parties would occasionally retaliate by scratching the car with their keys.
Anyway, the story goes that one day Apple executive Jean-Louis Gassee, who had recently transferred to Cupertino from Paris, had just parked his car and was walking toward the entrance of the main office at Apple when Steve buzzed by him in his silver Mercedes and pulled into the handicapped space near the front of the building.
As Steve walked past him brusquely, Jean-Louis was heard to declare, to no one in particular, “Oh, I never realized those spaces were for the emotionally handicapped!”
Are You Gonna Do It?
February 1985
Burrell quits Apple, but fails to live up to his threat
No matter how much resolve you could muster, it was still difficult to quit Apple if Steve Jobs wanted you to stay. You’d have to sit down with him for a reality distortion session, which was often effective at getting people to change their minds. One day, a few of us were talking about strategies to overcome Steve’s persuasiveness.
“I’ve got it!” said Burrell. “I know the perfect way to quit that will nullify the reality distortion field.”
Of course we wanted to know how he could do that.
“I’ll just walk into Steve’s office, pull down my pants, and urinate on his desk. What could he say to that? It’s guaranteed to work.” We laughed, thinking not even Burrell would have the guts to do that.
A year and a half later, it finally was time for Burrell to quit, after months of scuffling with Bob Belleville and some of the other managers who wanted to cancel the “Turbo Mac” project, a redesigned, faster Mac based on a semi-custom chip with an internal hard drive, that Burrell was working on with Brian Howard and Bob Bailey.
Burrell told Bob Belleville (who was probably relieved, since he knew Burrell didn’t respect him) and the Human Resources department he was quitting, and then made an appointment to see Steve that afternoon. When he walked into Steve’s office, he was surprised to see Steve grinning at him.
“Are you gonna do it? Are you really gonna do it?” asked Steve. Obviously word about the urination threat had gotten back to Steve, and he was genuinely curious to see if Burrell would really go through with it.
Burrell looked Steve in the eye. “Do I have to? I’ll do it if I have to.”
Steve’s expression gave him the answer, and, with that, Burrell turned and walked out of the office, thereby ending his career at Apple.
MacBASIC
June 1985
The sad story of MacBasic
When the Apple II was first introduced in April 1977, it couldn’t do very much because there were few applications written for it. We knew it was important to include some kind of programming language so users, who were mostly hobbyists, could write their own programs. BASIC, designed by two Dartmouth professors in the 1960s for teaching introductory programming, became the language of choice for early microcomputers because it was interactive and easy to use. The Apple II included a BASIC interpreter known as Integer BASIC that Steve Wozniak wrote from scratch. It was stored in 5K bytes of ROM on the motherboard and was almost as idiosyncratically brilliant as his hardware design. It also came with Microsoft’s BASIC interpreter, dubbed Applesoft BASIC, on cassette tape. Sadly, Applesoft eventually displaced Integer BASIC in ROM in the Apple II Plus because it had the floating-point math routines Woz never got around to finishing.
Donn Denman started working at Apple around the same time I did in the summer of 1979. His job was to work with Randy Wigginton on porting Applesoft BASIC to the Apple III. They needed to rewrite parts of it to deal with the Apple III’s tricky segmented memory addressing, as well as to port it to SOS, the new operating system designed for the Apple III. It was easy for me to track Donn’s steady progress because he sat in the cubicle across from mine.
By the summer of 1981, the Macintosh project was beginning to hit its stride, and we started thinking about the applications we wanted to have at launch to show off the Mac’s unique character. Besides a word processor and a drawing program, we thought a BASIC interpreter, like the one on the Apple II, would be important to allow users to write their own programs. We decided we should write it ourselves, instead of relying on a third party, because it was important for the BASIC programs to be able to take advantage of the Macintosh UI, and we didn’t trust a third party to “get it” enough to do it right.
I still had lunch with some of my friends in the Apple II group a couple of times a week, and I started trying to convince Donn to join the Mac team to implement our BASIC. He was reluctant at first because the Mac project was still small and risky, but he was pretty much finished with Apple III BASIC and was full of ideas about how to do it better. He eventually couldn’t resist and joined the Mac team in September 1981.
A BASIC interpreter consists of a text editor for inputting your program, a parser to translate it into a series of byte codes, and an interpreter to execute the byte-coded instructions. Donn wrote the interpreter first, and then hand-coded some byte codes to test it. He implemented some graphics primitives early on as well because they were nice to demo. In a few months, he had a pretty impressive demonstration program going. It showed off the interpreter’s threading capabilities by drawing elaborate graphical trees recursively and in multiple windows simultaneously.
By the spring of 1982, it was apparent Donn needed some help if we wanted BASIC ready for the introduction, which at the time was scheduled for January 1983. We decided to hire Bryan Stearns, whom Donn knew from the Apple II team, to help him. All of 18 years old, Bryan was excited about the project. Donn thought they had worked well together on the Apple II project, so we gave him a chance.
But BASIC still had a hard time getting traction, especially because the system was evolving rapidly beneath it. After six months or so, I was surprised to hear that Bryan was quitting the project to work at a tiny start-up founded by Chuck Mauro, who I had helped with his 80-column card for the Apple II. I tried to talk him out of it, but he left anyway. By the spring of 1983, it was so obvious that BASIC wouldn’t be ready for the introduction that the software manager, Jerome Coonen, pulled Donn off it to work on other parts of the ROM and the system. Donn worked on desk accessories and wrote the Alarm Clock and Notepad, as well as the math guts of Calculator (see “Desk Ornaments” on page 56).
After the Mac shipped in January 1984, Donn went back to work on BASIC with renewed vigor, determined to get it finished. Apple brought in some freelance writers to write books about it (including Scot Kamins, who was a co-founder of the first Apple users group in the Bay Area). But Microsoft surprised us and released a BASIC for the Macintosh that they didn’t tell us they were developing. It was everything we expected and feared, since it was essentially console-based and didn’t really use the Mac user interface. Donn was making good progress and we looked to be on track to ship in early 1985; we were excited to show the world what BASIC should really look like on the Macintosh.
Unfortunately, there was another problem on the horizon. Apple’s original licensing deal with Microsoft for Applesoft BASIC had a term of eight years and was due to expire in September 1985. Apple still depended on the Apple II for the lion’s share of its revenues, and it would be difficult to replace Microsoft BASIC without fragmenting the software base. Bill Gates had Apple in a tight squeeze, and, in an early display of his ruthless business acumen, he exploited it to the hilt. He knew Donn’s BASIC was way ahead of Microsoft’s, so, as a condition for agreeing to renew Applesoft, he demanded that Apple abandon MacBASIC. He then bought it from Apple for the price of $1 and buried it. He also used the renewal of Applesoft—which would be obsolete in just a year or two as the Mac displaced the Apple II—to get a perpetu
al license to the Macintosh user interface. This probably was the single worst deal in Apple’s history, executed by John Sculley in November 1985.
Bill Gates had Apple in a tight squeeze, and, in an early display of his ruthless business acumen, he exploited it to the hilt. He knew Donn’s BASIC was way ahead of Microsoft’s, so, as a condition for agreeing to renew Applesoft, he demanded that Apple abandon MacBASIC. He then bought it from Apple for the price of $1 and buried it.
Donn was heartbroken when he found out MacBASIC had been cancelled. His manager told him “it’s been put on hold indefinitely” and instructed him to destroy the source code and all copies, but refused to answer Donn’s questions about what was going on. Later that day Donn went for a wild ride on his motorcycle and crashed it, returning home scraped up but with no real damage, except to his already battered ego.
Bill Atkinson was outraged that Apple could treat Donn and his users so callously, and let John Sculley know how he felt. But the deal was done and couldn’t be reversed.
Donn quickly filed for a leave of absence, but eventually returned to Apple to work on various projects, including AppleScript.
The Beta version of MacBASIC had been released to interested parties, including Dartmouth University, which used it in an introductory programming class. Apple tried to get back all the copies, but the Beta version was widely pirated. Two books on MacBASIC were eventually published and sold quite well for several years.
I had never programmed in BASIC but I sensed that due to books of games in BASIC, this was the right language to go with. I had never written a language, not even for a class. In fact, I’d never taken a class on interpreter or compiler writing. But back in early college days, Allen Baum did send me some Xeroxed notes from texts on such subjects and I bought books on it anyway in the colleges I’d attended. At one point I sat day after day in math classes trying to figure out how to write a FORTRAN compiler for a Data General Nova computer in assembly language. The 6502 was the “latest” microprocessor at this point in time (late 1975). I had a hunch that nobody had written a BASIC for it and I had a chance to be the first. I started by learning a little BASIC by studying HP BASIC from a manual in our (calculator division) lab. I decided to put a syntax chart right into memory and use it to scan input by the user. I started generating my syntax diagrams with full floating-point capabilities. But I had such a strong desire to be the first with a 6502 BASIC that I deleted the floating-point parts to save maybe a month. I was strong on integer operation for accuracy and speed.