John Warnock

INTERVIEWER: What was it like at the University of Utah computer center while you were there in the mid-sixties?
WARNOCK: It was quite interesting because Dave Evans, who had been at Berkeley, got a huge ARPA research and development grant for about five million dollars a year to develop interactive design and computer graphics. He was able to attract Ivan Sutherland, Tom Stockham, and some other great professors to work with him.
The computer-science department went from mediocre to really, really good, practically overnight. At that point, I switched my studies from mathematics to computer science.
While still in the mathematics department, I had been doing some work for the computer center, a service center for the rest of the University, creating a student-registration system. One day at work, a student of Dave Evans came along and said, “Gee, I’m trying to solve this hidden-surface problem, can you give me any insight into this?” and I said, “Well, it seems to me the problem needs to be organized this way,” and I proceeded to get really interested in it and coded up the solution that I had in mind. My solution reduced by a large order of magnitude the amount of processing that had to go on. All of a sudden the computer-science department dragged me in and I became part of their group instantly, giving talks all across the country about my work on this hidden-surface problem and the coding solution I came up with.
Sutherland, who did Sketchpad in 1963, brought a lot of synergy and fresh ideas to this new group at Utah. This very talented group did an enormous amount of work in a very short amount of time. Ed Catmull, who later became head of Lucasfilm Ltd., and Jim Blinn, who does all the incredible Jupiter fly-bys, came out of Utah. Martin Newell, who later worked for Xerox PARC and is now at CAD Link, was there. Alan Kay, his mentor Bob Borton, and Patrick Boudelier, who did a lot of the research work at PARC, also came out of Utah. Bob Taylor was at Utah for a while, and Henry Fuchs. Most of those people were students of Dave Evans. In fact, it’s quite remarkable when you look back and realize that the work done by this small group of people at Utah made possible the use of computer graphics in films produced by Lucasfilm Ltd. at Digital Productions and in much of television advertising today.
INTERVIEWER: A lot of Dave Evans’ students went on to become systems designers. What do you think makes a good systems designer?
WARNOCK: There are very few really talented designers. Some people are very good at one particular thing or another, but systems design takes real balance, taking a list of options here and a list of options there, and combining them so they really work well together. A lot of people design an algorithm and then design the system around that algorithm.
Good systems design is much more of an engineering activity; it’s a set of trade-offs and balances among various systems’ components. I think the most difficult part of systems design is knowing how to make those trade-offs and balances among the various components.
INTERVIEWER: When did you come up with the original idea for the PostScript language?
WARNOCK: PostScript started in the Evans and Sutherland days when we were doing a harbor simulator for the Maritime Academy. We had to build a digital model of New York harbor, with 1,500 buildings and tank farms, and all the bridges and buoys and everything–all the landscape. The simulator was going to project the view of the harbor as seen from the bridge of the ship. We needed to write a huge, three-dimensional database and a lot of real-time software to make the simulator work the way they wanted it to.
We had a year to complete this massive undertaking. It was a full-color model with all three dimensions. We decided the most stupid thing we could do was to design this database in a form that would be used directly by the simulator. In other words, to bind it up too tightly. We decided to create a text file and then write a compiler to compile the text file into the form that the simulator would need (whenever we decided what that would be). We still didn’t know what the simulator was going to look like.
So we started building this huge database in text form. In digitizing the database and in building this big three-dimensional model, it became very obvious that rather than having a static data structure in the text file, it was much more reasonable to have a language. It needed to be a very simple, easily parsed, and extensible language. So that’s where the basic ideas of PostScript got started, in developing a language for this three-dimensional graphic database.
INTERVIEWER: After working with Evans and Sutherland, you went to Xerox PARC, correct? What was your experience like at Xerox PARC?
WARNOCK: Going to PARC was very interesting. I went there in 1978, and stayed about four years. There were several political factions within PARC. One was the Mesa group that previously had done BCPL. The Mesa group used traditional languages. And then there was the AI group, which used LISP.
I worked for Taylor’s lab, which was the Computer Sciences Laboratory. I prefer the LISP-style languages, because they’re more interactive and they’re interpreters; I like the interpretive environment. But it would have been political suicide to use LISP when I belonged to this group because my work would simply have been ignored.
Martin Newell and I decided to reimplement the E&S design system in Mesa. We called it JaM. Reimplementing the design system took about three months. It became an interpretive language that we could use as an experimental workbench to try out all kinds of new ideas.
After a couple of years, when the Imaging Sciences Laboratory broke away from the Computer Sciences Laboratory, JaM was used as a primary development tool. We started hooking in all the graphics procedures to drive the displays and printers. Then that basic language structure evolved into Interpress, which is Xerox’s printing protocol. This same language structure has again been implemented a third time as PostScript. They’re essentially all the same language. It’s really a ten- or eleven-year-old language that’s had a lot of proving and a lot of reimplementation ideas in the process.
INTERVIEWER: What made you focus on the PostScript text printing as- pect of the language structure?
WARNOCK: Well, first of all, the language property you want for printing is a straightforward syntax. PostScript is like FORTH because the syntax is so simple to parse. This means that if I want to communicate to another processor, all I have to do is send the serial stuff across the wire and it can be consumed by the processor on the other side in a straightforward way.
Another nice benefit of simple syntax is that other computer programs can generate new programs easier. The straightforward, simple syntax made this language structure a natural candidate for a printing protocol; if you want your printing protocol to be procedurally based, and to be a programming language as opposed to a static data structure.
Bob Sproull and William Newman at PARC developed a format, called Press Format, that consisted of static data structures. But they found that it wasn’t the most flexible way to handle printing. To add a feature, you had to essentially rebuild the system with more features in it.
We felt it was really important for the printing protocol to be extensible. So if you need more features, you can use the machinery of the language itself to build the features, as opposed to designing them from the beginning. You can’t predict what features you’ll want in the future.
So Interpress was a good candidate for a printing protocol. Chuck and I tried to get Xerox to do something reasonable with Interpress for two years, but it became clear that in the process of getting it out to consumers, they were going to destroy it. They were going to add some features and take away other features that would make it not only difficult to implement but difficult to maintain, and difficult to educate people about. We felt that if we were on our own, we could create a product in a much more straightforward and reasonable way.
Essentially, we took the original, clean design and extended it in a number of ways to make it a practical language; then we went after printing. We chose printing because all the computer companies were trying to do printer products at that time and were dumping a lot of money into research and development to get laser printers to work. But they weren’t having a great deal of success. Most of the products didn’t adapt easily.
We felt that we could effectively market PostScript to the computer companies because it was device-independent. It avoided dependencies to a specific machine, so the computer companies had the flexibility to take on new technology without having to change software. We believed this would be perceived as a great value and easy to sell, and it has been. Whereas in the screen business you’re competing against everybody else’s screen package and you have operating-systems considerations; this was a nice, clean, separate piece of business without a lot of the hassle.
INTERVIEWER: In what direction is the PostScript language still evolving?
WARNOCK: Well, for the printing application, it probably has slowed down to a crawl. Now I think it makes sense to go into the screen world and give work stations the model that the printer has. There we must adapt it considerably, because of the different requirements of the screen. The requirements are very high-speed activity for certain kinds of garbage-collecting operations, and the memory-management tasks aren’t necessarily part of the printer world. were writing that code and it’s evolving in that direction.
INTERVIEWER: Do you still write code?
WARNOCK: Oh, absolutely, almost every day. It has a great intellectual value; it’s fun.
INTERVIEWER: What kind of code do you write now?
WARNOCK: Mostly PostScript code; just making a more elaborate page than the last time, or some little utility function. I don’t do any of the serious system code around here.
I get involved a lot in the design aspects and things like that, and the general philosophy and direction, and how things should be done, but I don’t actually sit down and put pen to paper. We have people who are a lot better at it than I am; it’s much easier to get their brains to work together with mine.
INTERVIEWER: Is it easier for you to write good code today than it was back ten or twenty years ago?
WARNOCK: The tools are better. The programming environments are better. The languages are more expressive. Computers are much more powerful now than ten or twenty years ago. But there are more options available, which also means more options for many more mistakes.
INTERVIEWER: But doesn’t all of your experience make it a lot easier?
WARNOCK: Oh yes. It’s a trade-off–all of the experience for the vitality I had when I was younger. As I get older, perhaps I don’t take as many false steps, but I don’t have the strength to get up and run as hard as I used to.
INTERVIEWER: Do you approach writing code differently today? Do you have a different method? Do you plan everything out beforehand?
WARNOCK: I think a lot before I do anything, and once I do something, I’m not afraid to throw it away. It’s very important that a programmer be able to look at a piece of code like a bad chapter of a book and scrap it without looking back. Never get too enamored with one idea, never hang onto anything tenaciously without being able to throw it away when necessary; that should be the programmer’s attitude.
Also, never make an assumption that you know something somebody else doesn’t know. There will always be some smart guy who will come along and figure out a better algorithm, or figure out an easier way of performing some task. One of the tricks of the trade is to recognize this early, adopt it quickly, and exploit it without having a “not-invented-here” hangup about doing it your way.
INTERVIEWER: What makes for a good program?
WARNOCK: When you run a performance check on a good program, the performance looks flat. This tells you there are no bottlenecks in the code. The balance of the program makes it good. It’s not one particular clever trick.
I’ve been in the business since 1963, so I’ve been writing programs for more than twenty years. With lots of experience you collect hundreds of algorithms over the years; you remember tricks you’ve learned, you remember bugs you’ve had, and blind alleys you’ve gone down. You remember all the things you’ve done wrong and all the things that have worked out well. It’s a matter of picking and choosing from that smorgasbord to make a good menu, so to speak, to do a given task. You can have a great dish here and a great dish there, but together they may taste like dog food. Putting a meal together in a very delicate and sophisticated way is what makes a good cook. Putting the pieces of a program together in the same way is what makes a good computer programmer.
INTERVIEWER: How do you discern a good programmer from an ordinary programmer?
WARNOCK: It’s hard. The interview process normally doesn’t distinguish the good programmers from the bad ones. It’s like hiring a writer. You can’t tell how well someone writes simply from an interview. But if the person has written a number of prize-winning novels, you have a much better understanding of their talent. So we hire most of our people through the grapevine. When you’ve been in the business a long time, you get to know a lot of the people. You can pretty much find who you’re looking for by their reputation in the industry.
INTERVIEWER: There aren’t any set rules?
WARNOCK: I have never figured out any. The range of personalities and different kinds of talent in this business are just enormous. Some people are really good at certain kinds of programming and some people are good at other kinds. It’s like writing comedy versus writing a serious dramatic novel.
INTERVIEWER: When did you get interested in computers and computer programming?
WARNOCK: I had planned on becoming a college professor and teaching mathematics. In 1963, near the end of my graduate studies, I was looking for a summer job. It was late to be looking and the only summer job I could find was recapping tires for Firestone. Working there was hot, dirty, and incredibly noisy. After just three weeks, I said, “I have a master’s degree in mathematics; I don’t need this.”
I went to the local IBM office and applied for a job. They put me through all of their tests and then made me an offer for more money than I had ever heard of. IBM sent me to Seattle and Los Angeles for training to become a systems engineer. Then IBM gave me the two largest accounts in the Salt Lake district.
After a while I decided to leave IBM and go back to school at the University of Utah to get my doctorate in mathematics. Then I got married and needed a real job to support myself, so I worked at the computer center at the university. And that’s what led me into the computer-science field.
INTERVIEWER: If you had your education to do over again, would you concentrate in mathematics or computer science?
WARNOCK: Oh, I’ve always liked mathematics; problem solving has always been fun. My saving grace in life is that I was not introduced to computers at an early age.
INTERVIEWER: Why wouldn’t it help to learn about computers earlier?
WARNOCK: I went through the university, all the way to the master’s level, so I got a good, solid liberal education. I believe it’s really important to have a very solid foundation in mathematics, English, and the basic sciences. Then, when you become a graduate student, it’s okay to learn as much as you can about computers.
If you really want to be successful, being acculturated to the rest of the society and then going into computers is a much more reasonable way to approach the problem. I like computers because they let you realize things that you can only put on paper in mathematics. You get a tangible result. And debugging programs, actually getting them to work, is fascinating. You can finally give the machine a set of parameters and have it come out with the correct answers.
It’s just great fun; it’s very satisfying, sort of like mountain climbing. It’s like a lot of activities in life: When you’re successful at it and you finally get it to work right, it feels good and you get a big kick out of it.
INTERVIEWER: When you were working at PARC, did you ever think you would have a business like the one you have today?
WARNOCK: No. Starting the business was interesting. When we first thought about it, we thought about what the world could probably use and we concluded that we ought go into the service business. We could build electronic printers that personal computers could dial up to do the printing. Then we went to Hambrecht and Quist for venture capital, but they said the service business was no good. The service business is something venture capital people won’t talk to you about. It’s very specialized financially, and the only way you make money is through franchising it. That’s really hard unless you’re gifted at franchising, and we weren’t.
We decided we needed a more traditional business plan. We came up with creating a work station with document-preparation software, hooking laser printers and typesetters to that, and selling documentation systems. This is the same sort of business plan as ViewTech, Interleaf, XYVision and Texet-the whole list. It’s the same business plan that they’ve all had.
After three months of work and after talking with a couple of major computer companies, we decided it was a silly business plan. We would have to build a marketing distribution channel and a light-manufacturing facility. Essentially we would have to build the whole business. And we obviously had no particular expertise in that domain.
We did have expertise at building a specialized piece of software in demand by computer companies. So we switched our business plan and became an OEM supplier of software. We wouldn’t have to be in manufacturing, marketing, or distribution. And we could service the generalized computer community. It has turned out very well.
INTERVIEWER: In the future, do you see computers basically the same as they are today ? Or do you see radical changes?
WARNOCK: Considering the level of change over the past four or five years, I think it’s enormously difficult to predict. Technological growth has been spectacular in this period. For instance, five years ago 64K chips were about all you had. And now we’re talking about megabit chips, and CD ROMs. I don’t see anything to indicate that the growth is going to slow down. Today no one can say what the next innovation is going to be. The information age is just a giant feedback loop; every new tool you get helps you build another tool that’s much better. So if anything, the growth will probably be more explosive.
INTERVIEWER: What role do you think computers will play in society in the future?
WARNOCK: Computer literacy will have to become essential. People deal with computers every day and don’t realize it. There will have to be a corresponding improvement in user interfaces, so that people can deal more effectively with machines; those go hand in hand. Society is totally dependent upon technology today, and I don’t see any reason why that will ever change.
INTERVIEWER: What do you think is going to happen to the publishing industry?
WARNOCK: The publishing industry is adopting technological innovations much more rapidly than I expected. I thought this whole process would take years to mature, that it would come through a slow evolution into the use of electronic-publishing techniques. But it’s happening at an unbelievable rate.
The heavy-duty publishers are accepting the technology immediately. The Knight-Ridder chain has many laser printers and Macintosh computers. The Gannett newspaper chain has purchased a lot of laser printers. The Hearst paper chain has bought some, and recently we heard that the Associated Press is sending PostScript programs across the wire. That’s incredibly gratifying because it’s been just a few months since the laser printers entered the market. I thought that kind of acceptance would take many more years as opposed to a few months.
Many businesses are now doing their own newsletters on Macintosh computers and LaserWriter printers instead of going to traditional typesetters. People are seeing the benefit of the new technology. The office market, the traditional word-processing market, is going to move fairly quickly to the laser printers for better quality.
INTERVIEWER: How long do you think it will be before the quality of output from laser printers will be comparable to typesetters?
WARNOCK: It will be a while. Certain physical properties of toner particles and other problems make it difficult to get very high resolution. Typesetters are inherently precise devices that expose very clean edges, and it’s very hard to reproduce that.
Xerography has a basic toner particle-size problem to deal with. It works with little spots of charge, so it’s a matter of how small the charge units can be and still attract toner. The quality is good now, but if you compare pages done with typesetting and xerography under a magnifying glass, you can see that xerography can’t compare yet. Maybe some of the thermal technologies and ink-jet technologies will succeed before xerography.
Typesetters will get cheaper, and the quality of xerography will get better. Xerography will also get cheaper. You will see laser printers in the $2,000 range in a couple of years. I think typewriters using fixed-pitch fonts will be replaced by high-quality typefaces–at least that’s what I hope.
INTERVIEWER:What’s the secret of success in this industry?
WARNOCK: To be successful, you want to surround yourself with very talented folks whose skills blend very well. That’s the secret of success.
INTERVIEWER: What is your approach to programming?
WARNOCK: I don’t know if there’s a single set of things. I’ve touched on some. Don’t bind early; don’t ever make decisions earlier than you have to. Stay an order of magnitude more general than you think you need, because you will end up needing it in the long term. Get something working very quickly and then be able to throw it away.
Learn from small experiments rather than large ones. Don’t go into a two-year development with nothing coming out in the middle. Have something come out every two months, so you can evaluate, regroup, and restart.
Often programmers overdefine their approach from the beginning. They may start out with a central idea and begin coding on day one. Then they find that they have a concentric-ring approach where everything starts to grow because of the dependency on so many other factors. But if you keep the process fairly loose and free and move quickly at the end, you get a much better product in the long term.
INTERVIEWER: Why do you think you’re in software instead of hardware?
WARNOCK: It’s probably the mathematician in me; I prefer the abstract. I would rather play with ideas and combinations of ideas than combinations of objects. I was never very mechanical.
INTERVIEWER: What do you like about writing software?
WARNOCK: It’s always challenging. I look at software writing like authorship, like normal writing. You’re trying to combine ideas and concepts in a way that will make other people think, that will be new and exciting. The software business is like the publishing business. You’re trading ideas; that’s your commodity. I like it because I’m moderately good at it and I’ve had success in thinking of some new ideas along the line. That’s a great kick.
INTERVIEWER: What would you pinpoint as the new ideas you’ve thought of for software?
WARNOCK: The most obvious is the original hidden-line work I did at Utah. It was fairly original at the time, and a lot of programs have been built on top of it. I really get a kick out of solving something that looks hard, and making it look easy. That was Ivan Sutherland’s great claim to fame. He could dissect any problem, pull it apart, and make it look easy. He was very good at that kind of work.
I also enjoy having people use the things I create. I was very frustrated at Xerox because I’d see great products coming out in the marketplace and I knew that I could do the same thing. Now, to pick up a magazine and leaf through it and see pictures and advertisements clone on a LaserWriter is a great kick. I really enjoy seeing other people use the fruits of my labor. That’s the ultimate satisfaction.
INTERVIEWER: What’s your work routine? Do you work mostly at your office or home?
WARNOCK: I do work at home, but I also work at the office and travel a lot. I talk to customers and I speak at conferences. Right now my function is a combination of doing some inside work and a lot of outside work.
INTERVIEWER: Has owning your own business changed your life in a significant way?
WARNOCK: Yes. In the first year and a half I worked almost totally on development, getting everything to work. Now the project has gone into a marketing, public relations, and customer-support phase. Most of my daily activity is meeting people and dealing with corporations, talking to VPs within corporations and signing contracts. But it’s all fun. It’s a little different this year than it was last year, and last year was a little different from the year before. That’s what life’s all about.
INTERVIEWER: How many people were working on PostScript during the development period?
WARNOCK: PostScript probably took twenty man-years to develop. It’s a fairly substantial piece of code when you consider all the fonts. In the Laser-Writer, we blew half a megabyte of ROM, and none of it could be wrong. It’s all cast in concrete, going out with every machine. I think that’s one of the larger single pieces of code ever put into ROM. Getting the testing done was a shaky period around here.
INTERVIEWER: What was the biggest problem faced in the development of PostScript?
WARNOCK: As with most projects, the last 2 percent takes 50 percent of the time. Getting the code to completely hold together took a while. Then you have to be sure you can exercise it by all the communication protocols, that you can have all the interrupts and everything, and that it doesn’t break.
INTERVIEWER: Do you prefer any language in general?
WARNOCK: People around here are experienced enough so they don’t necessarily prefer one thing over another. We use whatever has the most reasonable environment and set of compilers; those are the considerations. Computer languages are computer languages. Once you’ve learned a half dozen, the next half dozen aren’t very hard to learn.
INTERVIEWER: Why do you think there are so few languages being used by designers today?
WARNOCK: There’s no motivation to have a great variety. Some people take certain design lines, as Mesa took a particular design line. But they felt that the problem was getting thirty or forty programmers to write a huge system together, so it was designed to aid in that process. If you believe good software is written that way, that might be a language you would design. But I believe good software is written by small teams of two, three, or four people interacting with each other at a very high, dense level. The best pieces of code come out of those kinds of effort. I would try to make the system so it would be impossible to get twenty people involved.
INTERVIEWER: Is that because there are too many different ideas? Or too many ways of approaching a design?
WARNOCK: There are too many styles and interfaces. I once heard that any programs you write reflect the organization in which you work. At PARC, the Computer Sciences Laboratory was an incredibly flat structure with Bob Taylor at the top. But they had to have a common tool for this diverse group, because there were about thirty people designing this one, huge, programming system. So Mesa and its programming environment modeled the way PARC worked.
Adobe was started as a very small company with about a half dozen people. The code was written by a half dozen people and the structure shows it. Certain parts belong to person X and certain parts belong to person Y, and they all have their own character and their own interfaces. On the other hand, IBM is a huge organization and their code is convoluted, with self feedbacks and different strategies that reflect separate divisions of the company. A fairly standard rule is that if you want to keep something simple, then the organization that develops it has to be simple.
INTERVIEWER: What happens when little companies grow up into huge corporations?
WARNOCK: The trick is to learn from the Hewlett-Packard approach: Keep it as twenty different, small companies. Keep breaking it up and never let it become a huge organization, except at some level that nobody cares about. In terms of working relationships, keep the number of people small and their focus localized, project-oriented, so they can work at their best. That would be my goal.
INTERVIEWER: Before computers, what did mathematicians do?
WARNOCK: A lot of mathematics! Actually, I really don’t know whether mathematics is as good as it was ten years ago. There probably has been a huge drain on the number of mathematicians in the world. It seems that some of the early theory, the best theoretical work on computers, was done in the fifties. The best mathematics of computation was done before the advent of computers. Mathematicians laid much of the groundwork of what could and couldn’t be done in computers. I don’t know if there is any good theoretical work in computing being done now. I guess there is, but there are none of the huge, major breakthroughs that occurred earlier.
INTERVIEWER: Do you consider computer science a science?
WARNOCK: No, not really. It’s more of an engineering discipline; a very good, fruitful engineering discipline. To me, science is postulating hypotheses and doing experiments to create models in the world. Computers have nothing to do with that. They are self-fulfilling prophecies about a model of the world. They’re great information tools; they’re great artifacts of the society for manipulating and controlling information. But I don’t know what truth computer science is trying to learn.
All Rights Reserved. Copyright 1986, 2008. Susan Lammers

[…] https://programmersatwork.wordpress.com/john-warnock/ […]
Pingback by Interview with John Warnock from 1986 - The PDF Blog — March 25, 2008 @ 1:09 am |
[…] https://programmersatwork.wordpress.com/john-warnock/ […]
Pingback by Interview with John Warnock from 1986 « The PDF Blog — March 28, 2008 @ 12:51 am |
[…] con los míticos genios de la época: desde Dan Bricklin (la hoja de cálculo VisiCalc) a John Warnock (el lenguaje PostScript) a Toru Iwatani (creador del […]
Pingback by Programadores en acción | Misiongeek — February 8, 2014 @ 11:00 am |
[…] controlled to run PostScript, and the program itself filled a ROM of half a megabyte, like itself John Warnock remembered. More printers […]
Pingback by You can never do it alone - to the death of Charles Geschke [ April, 2021 ] — April 18, 2021 @ 4:52 pm |
[…] was managed to run PostScript, and this system itself crammed a ROM of half a megabyte, like itself John Warnock remembered. Extra printers […]
Pingback by You can never do it alone - to the death of Charles Geschke - Bulletin Wave — April 18, 2021 @ 5:15 pm |