Memorial for Leonard N. Zubkoff

by Richard P. Gabriel

(read at his memorial March 29, 2003)

Leonard was a modular man—and given his relationship with computers there should be nothing surprising about this. He kept pieces of himself in separate modules, separate compartments each different in some ways from the others, all of them sharing some common parts, and each one fully inhabited by the man we know as Leonard Zubkoff. In this way he enacted his different selves: Very few people who knew him as one persona knew him as another, and by doing this Leonard could make himself into the person he needed to be when he needed to.

I met him in Pittsburgh, Pennsylvania, in 1983 when I was working with some faculty members at Carnegie-Mellon University on a supercomputer project. Like many major computer science schools back then, the department’s large timesharing system could be accessed via dial-up, but at that time 9600 baud was high-speed, whereas today a fast dial-up connection is 48,000 baud, and it is not unusual for a home to have a 1.5 million baud connection.

At 9600 baud even text transmitted slowly, and at the remote end of the connection only a moderately stupid terminal was available—not today’s ubiquitous PCs. Leonard had created a system in which the timeshared computer analyzed the text it was about to send for commonalities and patterns that could be used to send less computer data to create the same human-readable text at the other end. Today we call techniques like this "compression," but at that time compression was used only for reducing long-term storage for large files. Most computer scientists then were sure that using an expensive timesharing system to compress text on the fly for transmission over a slow dialup was a waste of money and resources. Leonard, somehow, knew better, and he constructed a system that used fewer resources because the effort expended finding patterns was more than compensated by the less work the system software had to do to send less data. In the end, not only was it possible to work comfortably from home, but there was less stress on the timesharing system while doing so.

That was my first glimpse of Leonard’s most prominent self—the intellectual computer expert to whom the workings of our most advanced technologies were as transparent as a hike up a low mountain is to the rest of us. But this wasn’t my only introduction to Leonard. I don’t know what I expected the first time I saw him. I had seen plenty of computer wizards but they were all long-haired and seemed dark to me—they worked late at night and almost till dawn each day, they had pasty skin and poor hygiene, they wore long pants and were serious in a despondent way, as if the rigors of battle against the inflexible computer were too much—for you see, though each of these other computer programmers was successful, each success was at the end of a long exchange with the computer in which the computer declared victory after victory over the programmer’s bug-infused programs.

Leonard walked into my office at CMU laughing over some joke or remark he made or heard in the hallway. He had short hair and a difficult beard. He wore a shortsleeved shirt with thin stripes running around him like barrel hoops. He wore light blue shorts, black stockings, and what looked to be Hush Puppies. He said something like, "well, you must be the famous Dick Gabriel. I’m Leonard Zubkoff." Later we went with some folks to a hamburger joint—perhaps the Oakland Original—where I started to learn the ways of Leonard Zubkoff.

He spoke precisely, with an intelligence born both of the confidence he had in his intellect and the deep pools of knowledge he had accumulated in broad swatches. I don’t know what he ordered—though I’m certain it wasn’t pork—but he ordered it prepared according to exact directions, and when it arrived, he placed his cutlery and china precisely in relation to each other and to himself. As he prepared to address his meal he noticed me wielding a bottle of luscious red Heinz ketchup. I had been whapping its bottom like a doctor jump-starting a newborn, shaking it upside down like a cartoon character trying to shake loose the last of someone’s loose change, and was likely about to start swinging it like Barry Bonds aiming for McCovey Cove over the right-field wall when Leonard said, "here, allow me."

"You need to hold the bottle at a shallow angle to allow air to flow in behind the ketchup as it flows out. Then you tap the bottle lightly on the side to loosen it." Ketchup flowed out smoothly onto the mass of fries I had ordered and he said, "here, why don’t you try?"

That evening we went to his place where I met his wife Jan. It was a typical grad student house overfilled with grad student stuff, but at one end of the living room were two 8-foot tall flat panel speakers with speaker wires about the size of my thumbs winding their way to a bank of electronics. "Electro-static speakers—very linear," was what Leonard said. As I left he pointed out his Alfa Romeo with its precise handling—though it wasn’t that fast, he told me.

This was my introduction to Leonard Zubkoff’s many modules of interest and expertise. He loved people and rarely found harsher faults with them except for their acting "suboptimally" at times; he loved women perhaps for the strangeness of their ways and mannerisms but certainly for the warmth of their companionship and the way their needs could be answered by his gifts. He shared easily and helped often even when the help was needed to rescue someone from their own ineptness.

In 1985 when I was founding my company, Lucid, I immediately thought of Leonard as one of my main technical guys and his wife Jan as my office manager. I flew to Pittsburgh to talk to them and they agreed, though Leonard wanted to finish his PhD. He said all he had to do was write up what he had and he should be out within a month or two. Jan came out early. Leonard had trouble finishing, and we decided he would come out and finish while working at Lucid.

He never did finish, and I’ve often wondered why. He certainly worked hard enough, and was smart enough. Perhaps the messiness of writing a dissertation was not suited to his neat mind. Perhaps his faculty advisors weren’t able to see the brilliance in the anti-tradeoff he had discovered—maybe to them it was just a neat hack, but it defied not only the common sense but the deep mastery of the day, and nowadays, the approach he invented is used in every corner of the Internet.

But I didn’t care because I had him. He joined what I still think was the most elite software development team Silicon Valley has ever witnessed, and he and just one or two others were its cream. We created what everyone said could not be created—a compiler-based software-only implementation of a programming language widely known to require special hardware to run reasonably, and our implementation was portable with almost the push of a button to nearly any hardware and operating system platform.

Leonard was at the center of many of the innovations Lucid created. He was a manager’s dream: He told you exactly what it would take to get the job done, and on the day promised it would be delivered. He wanted the best, and he thought of himself as the best. His only complaint to me was to make sure his compensation was what it deserved to be in the company—he never talked about the higher salaries available elsewhere nor did he ever threaten to quit. He wasn’t a founder, but soon he had as many stock options as anyone in the company and I often told him he’d be the one to turn off the lights if things went bad.

Leonard’s spirit was generous, Unlike many technical wizards, Leonard didn’t use the extremes of his intelligence to belittle or humiliate others. Though he never said it to me, I came to understand that he let people be who they were, and he recognized that a person could do only what he or she could do.

In every picture of him I’ve ever seen, he’s smiling. His best look: amusement.

During the first year of Lucid’s life, I was trying to be both its president and a technical person. I even volunteered to do part of the implementation—the memory manager. I had written one before, and I thought it would be easy. But I was also mindful of the fact that the implementation had to be easily portable to many different operating systems with different memory management policies. I had just finished a project where the motto seemed to be "why use lead when gold will do," and so I created a science-fiction-type design and embarked on the implementation. At the same time, I was negotiating OEM deals, running a brand-new company, meeting with reporters and analysts, trying to keep the venture capitalists happy, and maintaining a high profile outside the company, which was part of our allure.

I really could only get work done late at night, starting around 10pm after a business day that started at 8am and went until 6 or 7pm. I made a mess of the implementation. It was in a hopeless state in which it sort of worked and sort of didn’t. We had promised our Board a demonstration of the system to take place in two weeks, and I was hosed. Leonard walked into my "office area" and asked if I’d like some help.

He looked at the design and said it was clever and could work, but it would likely take too long to figure out what my implementation was doing wrong. He suggested a quick and dirty approach suitable for a Unix-style memory manager and that we postpone the real thing until we needed it for a more sophisticated operating system.

We sketched a new design on a whiteboard and wrote down some invariants and started to code. At least, I’d like to think we sketched the design—I think he came up with it, but he lead me through it in such a way that I thought I was contributing. Even with his simple design, it took both of us each working 180 hours over those two weeks to get it working well enough for the demo.

That was 1985. That Lisp system is still in use, having won some awards along the way, and that same memory manager is still the one it uses, though a clever ephemeral collector was grafted onto it. We were saved by the fact that a more sophisticated operating system than Unix never became popular.

That and endurance. Leonard loved endurance, and endurance came from quality. Not quality to show off, but quality for the purpose of excellence. The two 8-foot tall electro-static speakers have been replaced by two one-foot-tall ones sitting like munchkins on 3-foot pedestals in Crystal Bay, Nevada.

Leonard’s technical work was his Apollonian side—serene, rational, and self-disciplined.

Apollo was the god of light, order, and sanity; Dionysius was the god of darkness, chaos, and insanity. While Apollo behaved himself and expected everyone to do so as well, Dionysius was the ribald deity who devoted himself to music and revelry.

Most people learn to strike a balance between their Apollonian and Dionysian sides, often by integrating them into a mellow whole. Leonard fought to understand these aspects of himself and temporarily solved the problem by creating modules—little boxes for each of his interests where he could dial in how much like Apollo, how much like Dionysius he could be. Each box encompassed a mostly separate set of friends. Leonard was a technologist and scientist, but he also was into music, good food, fast cars, helicopters, science fiction, Filk, clear-voiced female singers, hearty physical relationships, hiking, kayaking, witchcraft, spirituality, the future, Linux, and long, long life. He was an optimist, a lover of life, he smiled all the time except when he was concentrating on hard work, alone at the keyboard, struggling to be again the best at what he was best at.

My favorite Leonard story has to do with his Apollonian and Dionysian sides battling on a technological battlefield.

Lucid had been granted an important contract by IBM to port our software onto a secret computer system they were about to announce. Through the complexity of contract negotiations, we had a nearly impossible schedule to meet. And IBM being IBM, they decided to withhold from us a crucial piece of software—the symbolic debugger. I won’t explain what it is in detail, but it is a medium-sized program whose proper operation depends on its implementor having a detailed understanding of the innermost aspects of a computer. Normally it takes a team of 2 programmers 3–6 months to write a commercial quality debugger. As its name suggests, it helps other programmers find the errors—or bugs—in their programs.

IBM didn’t supply one because then we would know the name of the company that created it. We needed one pronto.

I was sitting out on Lucid’s second-floor porch with Jan when Leonard came out as I had requested. He wore a shortsleeved shirt with thin stripes running around him like barrel hoops. He wore light blue shorts, black stockings, and what looked to be Hush Puppies. He had been given control of the project. It was mid-afternoon on a Friday in early Spring, as I recall, and already the project had had some fits and starts. I had asked Leonard how long it would take him to implement a good-enough symbolic debugger and this is when he would tell me. How Lucid fared depended on his answer, because I knew he was always dead-on with estimates.

Two weeks.

Apollo had spoken. Where were the chaos-bringers, the sweeteners of sense, the light-bearers, the disturbers of good order?

I turned to Jan. Jan, do you remember Jeff Rubin? We can hire him as a consultant to do this. Leonard, Rubin was on the S1 project back in 1978. He is a code-writing savant. I watched him write an emulator for the S1 computer in 4 days. The S1 was a complex instruction set, 16-processor machine with over 4000 instructions including matrix multiply and FFT, 32 non-regular registers, and dozens of addressing modes. He wrote the 60,000 line program in PDP-10 assembly language in 4 days. He debugged it for half a day and 30 people used it every day for 6 years and never found a bug. He wrote the optimizing assembler for it immediately after—40,000 lines in 3 days, a few hours of debugging and no bugs found in 6 years.

[This is writing code as fast as a person can type it in.]

Let’s hire Rubin.

So let’s see, he doesn’t know the RT PC at all, so an hour to learn the machine, instruction set, and Unix operating system. He doesn’t know the programming language C, so 15 minutes for that. Two hours to type in the code, an hour to debug it. Let’s round that up to a day, double it for safety. What do you think, $2000 a day?

Jan wrote down the details. The day was cloudless and perfect. A warm breeze blew over the freshly mowed lawn and up to the porch. I squinted my eyes to look toward the ridge where the sun was going down—behind it a mound of white fog was humping up.

Leonard said, "hmmm, let’s talk on Monday."

Monday he told me, "here is your debugger."

Dionysius, the risk taker. The ecstatic in Leonard could not deny the challenge. His inner critic could not stand up to the challenge Jeff Rubin’s story provided. Jeff Rubin is real, and so is his story. I’m here to tell you, so is Leonard Zubkoff.

Last Fall Jan and I drove up to Crystal Bay so she could run some errands at Leonard’s house there. Since Lucid collapsed about 10 years ago, I had seen Leonard only sporadically, and I thought I could find some trace of him there. We walked into his third-floor entryway—common for homes built on the sides of hills. While Jan fussed with her errands, I wandered the upper floor. Glass sculptures with several layers of glass, multiple gathers, layers of color frit and overlays, wraps, and pick ups of dichromatic glass. Hand-crafted Purpleheart and madrone dining room table, chairs, and buffet. A gourmet kitchen including the de rigueur Viking stovetop and SubZero refrigerator, separate wine coolers for red and white, an ice-maker, and several ovens. And along one whole wall, floor-to-ceiling windows looking through a sparse stand of firs onto Crystal Bay, Lake Tahoe. Tahoe, like Santa Fe and Asheville, North Carolina, is one of the most spiritual places for American Indians. I ran my fingers across his boxed collection of C.S. Lewis. I flipped through his book of Black blues masters.

In the garage, unopened boxes of Calphalon cookware and Henckels knives were stacked. His king-sized bed dwelled in the middle of the master suite. All the Farscape DVDs were neatly lined up in the walk-in closet. The Adobe Font Folio sat on the bottom shelf of a Steelcase cabinet. The walls of his office were lined with outlets. The sauna was colder inside than the adjacent guest quarters.

Leonard was a man of modules, each one separate, each equally inhabited by Leonard as he moved from one to the other just as I walked from room to room, trying to find him through his tastes.

Walking from room to room.

Trying to find him.

Let’s follow the laughter.