An Interview with Henry Moll

Henry Moll

HM = Henry Moll
GAM = George Michael

GAM: Today is the 30th of April, 2008 and I am interviewing Henry Moll. Why don't you start, Henry, by telling us where you went to school, what your degree was, and when you came to the Laboratory?

HM: OK, I went to school at Berkeley, where I had a double major of Mathematics and Physics, then to the University of Oregon for a year in Mathematics. I met John Killeen there; he was recruiting for the Laboratory. I signed on, dropped out of school, and started at the Laboratory in 1959. When I showed up, my clearance preceded me so I didn't spend any time in the cooler; I came directly through the gate and to work on day one.

GAM: That's very nice. Is it safe to assume that John was your first supervisor?

HM: No, no, Tad Kishi took me in. I sat around for a couple days, waiting for them to figure out what to do with me. Larry Larson, another new hire, and I shared an office. We whiled away the time reading Camus's "Myth of Sisyphus", mentally adjusting to the right mind set needed to work with computers. Soon I was assigned to put SIMON on the LARC. The LARC hadn't arrived yet, but it was imminent. Nobody felt that SIMON would fit on the LARC and give any kind of meaningful output, because the capacity of the machine wasn't large enough. I guess that was why it was assigned to me. No one else wanted to spend time on a project that had little prospect of success. I soon came to realize that the proposed implementation was not going to result in a meaningful simulation. There was talk that re-ordering the difference equations may offer a solution because less data would need to be accessible in central memory, all at the same time, to perform a critical computation during each time-cycle. The LARC's memory was 26,000 words with 250,000 words on four or so spinning drums. The question was, would reordering the equations lead to a correct result? Without telling anyone I decided to find out and reordered the difference equations. Instead of moving all the data from time Delta T to Delta T+1, some advanced that way, the rest advanced from Delta T-1/2 to Delta T+1/2.

GAM: And then interpolated, yes...

HM: No. Interpolation was inherent in the reordering. There were some previous computations to compare the results to. A very small version of SIMON had run on an older IBM machine. When I got SIMON running on the LARC, the answers agreed with the smaller version to four or five places.

GAM: Hum, that's neat.

HM: Yes, And so it worked out that I sort of, overnight, became well known in A division. Strangers would introduce themselves to me and compliment me for a good job.

GAM: And this carried you for what, a year or two?

HM: It took about nine or ten months to put it on the LARC.

GAM: So, we're now into 1961.

HM: Yes, and I met you, for the first time, at the Hungry Truck, at three o'clock one morning. I went there with Chuck Leith and Roy Nutt from CSC (Computer Sciences Corporation). CSC was writing a Fortran compiler for the LARC. That's when I was introduced to you. I was just a new guy, I didn't know anybody or anything about computers. Working day and night in that environment, with the pros, was really great. I learned so much, so fast and made many friends. That was my best time at the lab.

GAM: All of us did. Chuck is a marvelous, marvelous, person. By the time you met him, he had his Ph.D. in Mathematics from Berkeley.

HM: I think he was just finishing it, because he wasn't there when I first got there. He came when I was about half or three quarters of the way through SIMON. He was working on his atmospheric model; he was putting it on the LARC. He needed a fast plot routine because he wanted to make a movie of the "weather"--he needed 3 plots every cycle. So, I wrote a fast plot routine that I also used for SIMON. He used that to make his ninety-second movie. Others started to use the plot routine and it became the LARC plot routine.

GAM: Yes, I worked with him on the atmospheric model. He was using a semi-global projection that would show the maps of the Northern Hemisphere. They displayed, aside from the continental outlines, the isobars of the various dynamic fields. Pressure, water vapor, wind velocity, stuff like that.

HM: That's right. It was in color. He took each "weather" picture three times. Then he would develop one in red, one in blue, one in yellow, and superimpose them.

GAM: Right, we merged those through the appropriate filters. The first movie he made, I actually took the black and white film down to a photo-finishing studio in Hollywood. Linwood Dunn was the guy who invented what was called the ACME printer. We got that name because it was a lath bed made by ACME. He just put cameras and projectors on the lath ways and insert filters in between them and he could get the colors he wanted. He put color film in the camera and gets the projector to skip frames so it would project the picture, then skip forward three, take another picture, skip forward three and so forth. So it was red, green and blue or something like that. Forgot the colors now but that was a fun time.

HM: The LARC had two built in movie cameras which were user programmable via software. One could either plot points or vectors. Given two points it would draw a connecting vector. A vector might have one point in the frame and one point out of the frame. The LARC required both be in the frame. In this case, one would have to compute the intersection of the frame with the vector to determine the "in-frame" point. That took too many cycles. A faster method was to compute the midpoint of the vector. The midpoint would either be inside or outside the frame. Two or three iterations would result in a "midpoint" inside the frame and close enough to it to suffice. This was an application of "thinking" binary convergence that I learned from Chuck. He also showed me how to do fast merges and sorts which he picked up from Roy Nutt.

GAM: That's delightful. So, you ended up, in a sense, working with Chuck Leith a lot?

HM: When he was doing his atmospheric model I provided the plot routine. I didn't work with him after that, but we became good friends and went backpacking several times. We had to write memory dump routines, printer routines, root routines, everything. The LARC came with just simple tape and drum drivers. I wrote a routine that would label the first page of printer output with the person's name using regular sized characters to draw a big character. The first time I tried that, there was somebody using the computer and I was just standing there, so I figured I'd wait until he printed something out and see if it worked. And so the printer started printing out and it printed Z-I-Z-Z-O, and I figured, oh man, I really screwed it up--how could I mess up something as simple as that? And then the guy who was running the computer came over to get his printout. I looked at his badge, and his name was Sam Zizzo. So, it wasn't a bug after all. But, it was a coincidence to have someone with three Zs in his name be the first user. He and I became good friends after that. He is a very pleasant person.

GAM: Did you go to any other machines at that point?

HM: No, I got SIMON working on the LARC. The CDC 6600s were coming some time in the future so, after I got SIMON running, I started converting it to run on the 6600s. I remember that I used another CDC machine (3600?) to debug most of the code for the 6600. LARC SIMON was used a lot and many little additions were added on--I was busy. I wrote a controller to run and control other codes from a input deck. I did something on the IBM 650. My first weeks at the Lab I wrote a little "homework" thing for the UNIVAC. The UNIVAC was something else. The people who built the cabinet enclosing the machine must have built submarines during WWII. One entered the UNIVAC thru a "hatch". The passage from one cabinet to the next was an oval hatch with battens! The interior was stuffed with cables and gear and was illuminated by red lights in cast iron cages. I loved it. Maybe it was blue lights: battle station lights, so you don't lose your night vision.

GAM: The CDC 6600s came in 1964.

HM: So, I guess I was working on the LARC for some time. Something that was very useful: The LARC would emit a tone whenever the P-counter was active within a fifty word section of memory. You could hear the computer computing, doing its stuff. The ear is very perceptive of sound patterns. I could hear the difference equations being solved, and this enabled me to discover bugs. An off note exposed a problem and its place in the melody revealed its location within the equations and thus within the code. I once found a bug over the telephone. I was on a month-long vacation in Canada. I had found the "last" bug before I left, and assured Alan Winslow that there would be no problems. SIMON had been running for many hours and hung up the same time I checked in by phone, as we had arranged. They had a problem--it wasn't computing correctly. There was a telephone right there on the LARC's console. I had them run a few cycles while I listened over the telephone. I told them where to look in memory and to read out what that word contained. I told them how to change and to try it. It worked, fixed. The LARC had lots of radio tubes inside its chassis. Sometimes it would malfunction and you would go behind one of the chassis where the paint had worn off and give it a kick on the worn spot, and that would shake the tubes a bit and it would start right up again. This computer still had the fear of man in it, and it responded to the appropriate abuse. I liked that computer. Computers nowadays have no fear of man. There is nothing one can do to get them to work once they set their mind against it. This doesn't bode well for the future.

GAM: It was a very exciting time, all the time.

HM: Yes, it was. We were given a lot freedom to work on interesting problems.

GAM: We called it the Golden Age.

HM: Yes, it was. These were the first big computers and the first usage of them to do real things. It was exciting. Otherwise, you couldn't get people to work all day and all night for weeks at a time.

GAM: So, go on now.

HM: OK, when I arrived there in 1959, I had never heard of computers. I didn't know anything about them, but I had taken many math classes and, especially, formal logic classes. The Predicate Calculus and things like that. Essentially, a computer is just a logic machine, so I didn't have any problem understanding how to use it. The formal logic courses I had taken at Cal along with set theory and computer experience at machine instruction level here at the Lab came together into a personal intuitive gestalt. SIMON was written in assembly language, that's all there was. If you wanted things to run fast, you wrote in assembly, you'd probably pick up a factor of four to six over Fortran. In those early days, speed was an important factor. You would develop a set of routines that you could carry from one machine to the other. Even though they were in assembly language, you simply had to make a few simple changes to use them on a new machine. When a new machine arrived it came with just a minimal operating system. We had to write our own cube root routines, square root and log routines etc. The way taking a square root is taught in school is OK, if you're using pencil and paper, but may be CPU-intensive when done on a computer. There was a fellow here at the Lab, I don't remember his name, he was versed in sixteenth-century mathematics from the Renaissance, when finding cube roots and square roots was the focus of mathematics. There were many different "old" ways of doing it. Some of these ways might have been cumbersome to do with pencil and paper, but they were efficient when done on a computer (few or no divides). He coded up some of these ancient methods of finding roots and we used them.

GAM: Somebody at the Lab?

HM: Yes. I don't know what his name was. It was sixteenth century math. Felt good using that old stuff on new problems. A feeling of continuity. Like now, for instance, I'm reading a book on the foundations of differential calculus. It was written by Leonard Euler.

GAM: OK, go on.

HM: Well, then it was time to move SIMON over to the CDC 6600, which hadn't arrived yet. But there was another machine made by the same company, the 3600, and that was up and running, so I was able to write and debug a large number of subroutines that I was going to eventually use. When the CDC 6600 came, I was well on the way to having SIMON up and running. And I'm not sure if I was the first, or the second, to get a production code running. Bill Bennett, was working on CORONET. I think he may have gotten his program there first, I'm not sure. But the CDC 6600 was a very nice machine. It had visual readout that humans could read instead of having it all in a battery of binary lights that you convert in your head into something meaningful. It displayed readable text. This was my first hint that computers could do more than crunch numbers. They could also crunch words. I remember that we had serial 1 of the CDC 6600. When I got SIMON up and running on the 6600 it wouldn't duplicate answers. Every time I ran it, I would get a different answer. There was something wrong with the machine, and I spent several weeks working on it. I finally narrowed it down to a sequence of a dozen or so instructions, I could get it to fail every single time. I would bring it over to the engineers and they would open up the door to the back panel and hook up their scopes and everything, and then I would run it and it wouldn't fail. This was quite a problem, and then one of the fellows noticed that, on the big sheet metal door, there was an iron rod that ran diagonally from one corner to the other for support and, when they closed that door, this iron rod lay parallel and on top of a 27-inch wire that was there. After the first two months, when the machine was up, this metal rod that was supporting the door became magnetized. Soon, there was enough impedance so, every now and then, it would slow down the current in this wire that was lying next to it. The longer the machine ran, the more magnetized this rod became, so this was a problem that wasn't there in the beginning, but it started to show up, and became worse and worse. They put some insulation on it, and that solved the problem.

GAM: Chuck Leith, whose atmosphere model pushed the memory very hard, found that he should run it twice. If there was agreement, OK, and if there wasn't agreement he knew exactly where the problem was going to be and they'd work on it. That technique of running stuff twice was used by all the engineers to debug the machine and run routine maintenance on it.

GAM: You were working with SIMON then?

HM: Yes, I was working on SIMON with Alan Winslow, Wes Nelson, and George Bundy. SIMON was pretty well established by that time, and I had plenty of free time--things that required my time were beginning to taper off. At this point in time, the TMDS was starting to show itself and was becoming workable. And we had a machine (the 6600) with enough memory so people could keep their code on the machine as opposed to keeping it in card decks or on tape. I was assigned to A-Division at this time. Pete Multhrup, who was head of A-Division, came and said "We have this new thing called TMDS and I'm going to get you one--see what you can do with it." He had Alex Cecil come over to talk with me, to give me some ideas about what he thought we could do with it. Alex gave me some literature, I think it was about some other languages, some macro-languages, and he felt that a macro-language might be a pretty useful thing. And I took it from there. I wanted to write a language that was like an algebra for characters as opposed to an Algebra for numbers. And since I had studied group theory and formal logic I had a fuzzy idea of what I wanted to do. Sid had told me I could work on whatever I wanted to. I now think he meant I could work on any "on-going project", not on "anything" I wanted. I was thinking of something like what in mathematics is called a group. The objects of the group would be the letters of the alphabet along with numbers and punctuation etc., either as single characters or strings of characters. The group operations would be concatenation and substring. The result of these operations on any member of the group is also a member of the group. A null character, null string, and null file were added to eliminate special cases and simplify the logic. A string of computer instructions (code), operating on a string of characters (data), is itself a string of characters. Code and data are distinguishable only by context. One fills the computer's memory with code and data and points to the location of the first instruction. The next sequential instruction is pointed to by the preceding one. Thus data may become code and code data. This fuzzy thinking led to a form of recursion similar to the Lambda Calculus. Recursion is very powerful. I wanted to be able to use it interactively. A glass display like the TMDS opened a new output mode for a computer. A computer became something like a chemist's lab where experiments could be performed and results studied immediately. Change this compound or that quantity and do the experiment again and compare this result with the previous one. This is the way most personal computers are used today. I spent about nine months creating and writing TRIX. Alex Cecil, the first user, helped by testing the language and making many useful suggestions. His support and enthusiasm were material to the eventual success of TRIX. Alex used this language to write the TRIX AC text editor. Within a few weeks of its being available, everyone was using it.

GAM: It revolutionized what we were doing at the lab.

HM: Yes, it just changed everything. It was remarkable; it was very satisfying. Alex deserves most of the credit because he wrote the AC editor. He and I would work together, he would say, "I need to do this more efficiently" and I would add an argument to some command that would achieve it. We worked very well together.

GAM: It's an interesting piece of statistics. When TRIX AC was running, the time transition would count who was starting and stopping and stuff like that. Turned out that there were over fourteen hundred logins on TRIX a day, the rest of the problem solving stuff was maybe three hundred or four hundred, depending on what they were trying to do. So, the vast majority of the people found the environment good and the response excellent. They used TRIX like it was their staple--they learned how to run everything from TRIX.

HM: I wrote TRIX and Alex wrote TRIX AC. By the way, I chose that name because it's short. In those days we had these Western Union Teletypewriters, which were very slow, what you typed in you wanted to be short, two or three letters and TRIX is just four letters and one syllable. I think Sid felt I chose the word TRIX because I was using "tricks" to get the thing to run fast and, in the process, degrading the system. Actually, it was from Billy Holliday's "Trix Ain't Walking No More". It was short and one syllable which is also positive from a marketing point of view. When I was at the University of Oregon, I was teaching mathematics and I really enjoyed teaching. I was teaching mostly freshman.

GAM: Where?

HM: At Eugene. We didn't have to sell it. There was such a response--everybody wanted to learn how to use it. Everybody started using it right away and so I said I would give classes on the TRIX interpreter and I would give as many classes as they wanted, but I wanted to limit the class size to six or seven people and it most likely would be the six or seven people in the same hallway that were doing the same kind of work, so they would have the same sort of problems and the same kind of questions and they would know each other so they wouldn't be inhibited from asking dumb questions, for example. And, so, I set up a sequence of fifteen or so classes. I would go around from one building to another. I didn't have to prepare for these classes because they would be driven by the questions that this small group of people had. And since the group was small, it was more or less like a conversation I was having with these guys. They were asking questions as they came to mind perhaps from the previous question. That is a very effective way of teaching. The classes lasted as long as the guys had an interest, like a week or so.

GAM: Somewhere I heard, maybe it was from you, that the program TRIX had drawn some of its inspiration from SNOBOL, some from the thing that Moore wrote, and LISP.

HM: Yes, SNOBOL and Moore's TRAC, but not LISP. LISP came later.

GAM: There is no question about that really being good, but beyond that, it was a seamless usage on the machine. You know, you made the TMDS and the teletypes really sing. People didn't have to pause and think about do this or do that, they just naturally came out the right way.

HM: Well, when I devised that language, I wanted it to be ambiguous, as opposed to concise, because I felt that with an ambiguous language, you could write poetry, for example. You could do many more things that would be of interest to human beings if the language was ambiguous. It had about fifty rules and five hundred special cases. Two people might be doing the same thing with TRIX, but each of them might solve it a different way. One didn't understand why the other guy's stuff worked. This fellow's intuition led him this way and the other guy's intuition led him to the same results, although by a different path. I was pleased with that, that it was ambiguous. Since I wrote TRIX, I've come to understood more about the Lambda Calculus, and how useful it is. Basically, it's recursion. I read some work by Alan Turing. The idea I think he had in mind was that there is no difference between code and the data. Tell the machine where to begin interpreting what it finds there as code. Each piece of code points to the next piece (the default being the right adjacent piece). Code and data can change during run time. Data can be interpreted as code and code can become data. It is very subtle, it's very powerful and impossible to debug. Another reason that AC was successful, aside from the fact that it was a very uesful piece of code, was that Alex was very responsive to people's suggestions. As a matter of fact, many of the commands were suggested by users. It was easy to incorporate new things because TRIX was an extensible macro language, very much like EMACS. It was very satisfying work. We were working directly with the users at all levels, from secretaries down to physicists.

GAM: In the later years, TRIX AC was rewritten for every machine we had.

HM: TRIX had to be rewritten for the CRAY-1. I didn't want to use FORTRAN. One reason was that FORTRAN couldn't open binary files. TRIX could open up any kind of a file. And lots of times, people would get a file that they couldn't open and they wanted to find out why. TRIX could do that. Once an Air Force General came to Harry Nelson, who was my supervisor at the time. Harry asked me go to the cooler where there was an Air Force Colonel with a computer tape that they said had secret information on it, about nuclear weapons and where they were stored, and for some reason they couldn't read it. So, I escorted the Colonel inside so he could hang the tape on one of the machines and use TRIX to open it up and look at it. That was the advantages of TRIX being written in assembly language; at that level, it could open up any kind of a file, even if it was gibberish. It would display as gibberish, but if the person knew what the gibberish meant, he could make sense out of it. But, to get back to your question about rewriting it each time, that's true. Going from the CDC 6600 to CDC 7600 wasn't any problem, because the instruction sets were almost the same. When the STARs came out, I didn't want to put TRIX on the STARs, because I didn't think the STARs were going to succeed. Instead, I concentrated on the CRAY-1. The CRAYs came a little bit after the STARs but, at that point, I felt that what I needed to do was to write an intermediate, let's say, a machine-independent assembly as a P-code. And that way, I could write TRIX in the P-code and then bring up the P-code on whatever machine it was going to run on. The P-code could be very simple and straight forward and would be easy to implement. I actually got that up and working on the Cray-1. It wouldn't have been a good long-term solution because even the though the P-code was very good for doing the basic CPU work, the I/O problems with each different operating system, on each different computer, were going to be too much to overcome. For example, at Los Alamos, they had an operating system running their CDC 6600 that treated the disks as logical tape units. So, you had to rewind the disks, space them forward and backwards and all that sort of stuff. It was just ridiculous. No random access.

GAM: I remember those stories.

HM: Eventually, the big machines adopted UNIX as their operating system. The Lab had some very nice workstations that ran UNIX. I wrote AC (not TRIX) in EMACS LISP which is in the public domain and comes bundled with most UNIX systems. EMACS is an excellent editor written in EMACS LISP. With the LISP version of AC, lab users making the switch to UNIX had a familar editor to use. AC ran in the right half of the EMACS editor's window, EMACS in the left half. AC was, in essence, an extension of EMACS, thus AC and EMACS could both be working on the same file without any conflicts. Users could switch between the EMACS and the AC windows, using which-ever editor was best suited for the job. My last day at work, I found and fixed the "last" bug in the AC LISP code. The "last" bug because it was my last day at the Lab and thus the last bug I was going to find.

GAM: When was this?

HM: 1991. Because AC was implemented in EMACS, and EMACS is in the public domain, and it has its own copyrights, anything written in EMACS is in the public domain. AC is on my MAC at home, and I still use a few of the AC commands because they are still better than anything else.

GAM: Well, back to the evolution of TRIX. How big was it? And can you quote a measure of speed?

HM: Speed was a difficult thing to determine because it depended on the load on the machine. When they first came up, the machines were not being utilized much during the daytime. So, during the day time, it response was instantaneous. You would say, "display all occurrences of pattern P" and it they would immediately come up on the TMDS. It was similar to what we have now with our personal computers. It was that fast. When a user opened a file to edit, TRIX would convert the file into equal length line segments, that is, into a rectangular array of characters where the nth line of the array contains the nth line of the file suitably padded out with space characters. Thus the location of line n could be computed as opposed to searched for which is slower. The array format made it very easy and fast to extract columnar data found in the data dumps of the simulation codes. After the initial overhead of unpacking the file, search and replacement was very fast.

GAM: Isn't there a difficulty getting it back into the original form?

HM: No, that just required truncating the space characters off the ends of the lines and adding "end-of-line" characters.

GAM: OK. Cralle and I were doing incredibly smart things with TRIX. Using it, and operating on the dictionary we had, learning very funny things about words. Bob was good at making TRIX do strange things that were very clever and wouldn't naturally occur to somebody.

HM: Yes. When TRIX was first up and running people were still using the teletype. There was a blind fellow, I think he name was Jim Slagel, and he told Alex that certain non-printing characters would jiggle the teletypewriter in a way that he could distinguish, and so he wanted to use these non-printing characters so they could give him cues as to where he was. Normally, TRIX would filter these out. Alex put some of these non-printing characters into certain edit commands. Most people wouldn't notice they were there, but Slagel heard them and knew how to interpret them. Harry Nelson discovered a new, large Prime number, four or five hundred digits. He wanted to include the Prime in a paper he was writing, He didn't want to format it in by hand. TRIX RED formatted that number as though it were just a very large word.

GAM: That says to me that TRIX RED was around longer than I imagined initially. I thought it was something that came up rather late.

HM: No, it was there with the CDC 6600. Bob Kuhn went to Israel to give a paper and he wanted to write it in Hebrew. He did something to get the Hebrew alphabet on the machine so he could print it out. Then he needed the text to run from right to left instead of left to right. It was very easy to change the direction of the scan to do this because nothing was dependent on the scan direction.

GAM: I remember now, Calvin Moore's program was TRAC.

HM: Yes, TRAC. I got some ideas for TRIX from TRAC.

GAM: Well, I think TRIX went much further than TRAC, more than COBOL and any of those others. It was a very, very powerful thing. And I don't see any modern stuff coming along like that. Let's go back and fill in.

HM: OK, remember that you invited me to come to the Department of Applied Science and give a talk on memory allocations in TRIX? John Fletcher came and sat in the front row. I explained that, an interpretive language like TRIX, generates many symbols (names of things) that have to be stored someplace in memory, available for subsequent use. You need to have a very efficient look-up routine to access these symbols and the data associated with them. There is no limit to the number of symbols and therefore you need a robust memory allocation routine. I skimmed some books by Donald Knuth and implemented something based on things I read there. My allocation routine consisted of 256 linked lists. A hash of the symbol selected one of the linked lists. A linear search of the list leads to the symbol.

GAM: What was it for?

HM: For looking up items in a ordered list. You have a very large list of random numbers in numeric order and you want to locate number N or determine that it is not in the list. One way would be to begin at the beginning of the list and sequentially check each number and compare it to N. This method would, on average, require L/2 comparisons, where L is the length of the list. With the binary search, you'd look at the entry in the middle of the list. Because the list is ordered, you can determine in which half N is in. Then you compare N to the entry in the middle of that half of the list. Repeat as often as necessary for the process to converge to to single entry: N or not N. Each time you reduce the size of the list by a half. So, your search converges by one over two to the n. You hadn't heard about that?

GAM: I think so. At my age now, I'm not sure what I knew and when I knew it. I'm 82 now and I don't like it!

HM: You have to deal with it anyway, but you're lucky because your mind is still sharp, you know.

GAM: To some extent, my body doesn't like it either. But, continue on now.

HM: OK, I remember when TRIX was pretty stable. At the beginning, it was pretty hectic, everybody was using it. I was inundated with people phoning up asking questions, making suggestions. I was busy trying to keep up with things. After a while, things settled down, and I felt that it was time to use TRIX to do word processing. That term didn't exist then. I had written the document for TRIX, how to use it. This document existed as a deck of cards, so I could put it on the machine and print it out, but I wanted to format it in a nice format. And I wanted to be able to add to it, I needed a tool so that I could format the document that described the TRIX language. So, I started working on a word processor in TRIX and this became known as RED (Report Editor).


HM: RED PP was the "Post Processor. I believe it formatted the document for various printers.

GAM: Yes, was that John Beatty's contribution?

HM: No, that was Joe Rinde from Carnegie Mellon. He was here for a summer. John wrote a parser in TRIX. I'm not sure about the difference between RED and other PPs, but I wrote RED. There was a lot of work there. First, it would format one column per page. Then I upgraded it so it could format two columns on the page. You could embed diagrams, pictures, illustrations or equations and the text would flow around them. So, it started out simple, and it ended up being able to generate indices and tables of contents. When a page reference moved because of inserted text, pointers to it would follow so the reference would always be correct. The people in the documentation department eventually transferred their documentation work to TRIX RED.

GAM: What is the status now. Is TRIX running anywhere?

HM: I don't think so. The last thing I did at the Lab was implement TRIX AC with EMACS Lisp on UNIX. AC is running on my MAC.

GAM: The new architectures for these so-called supercomputers don't lend themselves at all to what TRIX needs to do.

HM: Well, EMACS will do just about everything you do with TRIX. You can write little macros and then you can build on these macros, so you can do all kinds of things.

GAM: Are you active programming now?

HM: I program just about every day.

GAM: For whom?

HM: For myself. I'm trying to make money in the stock market. I have big databases, and I have to have ways of searching these databases. I have to have ways to document, I want to be able to look at the plots, to look at the data and identify changes in trend. And, then, I have to manage the money that I do have. So, I have quite an extensive set of routines that I have written over the years.

GAM: Great, that occupies you most of the day?

HM: No, no. The market closes at 1:00 p.m. our time. So, from 12:00 a.m. to 1:00 p.m., I might be active buying and selling things. And if I'm making a lot of money, I'm motivated to program. If I'm losing money, then I read books.

GAM: That works pretty well!

HM: Yes, Keeps my brain from slacking off.

GAM: Well, is there any other stuff you want to cover at the moment?

HM: No, I can't think of anything right now.

GAM: OK, well, we'll stop right here with the agreement that if stuff comes up we will resume.