A selection from APL Quotations and Anecdotes of items involving Roger Moore.
Talk about starting at the top. Working for and with Ken Iverson was my first job out of college. Roger [Moore] and I were introduced to Iverson Notation at the same SRI chalk talk. I didn’t do anything with it at the time, but a while later an IBM maverick technical guy and rhyming philosopher, Michael Montalbano, started hanging around Stanford’s brand-new computer science department. He was writing linear programming algorithms in the Notation, then hand-translating them into FORTRAN for his business-school students. He gave some informal lectures on the Notation; Phil Abrams and I attended enthusiastically.
IBM announced the IBM System/360 on April 7, 1964. Shortly after, Mike handed me a new IBM Systems Journal that had articles by the System/360 architects — and holy cow, one by Ken Iverson, Adin Falkoff, and Ed Sussenguth that precisely defined the whole 360 line in 18 pages of Notation, plus commentary: “A Formal Description of System/360.”
Phil and I devoured it. Once past the steepest part of the learning curve, we gave a series of seminars to other students. I found a few typos, which I mailed to Ken.
Then Ken came to visit, touring several institutions to talk about the Formal Description and his notation. I listened, argued once or twice, and handed over my latest errata. Ken thanked me, and said, “Larry, these are pretty minor. Why don’t you find something seriously wrong?”
Nothing could have fired me up like that challenge. I scoured the article. Late at night I sat in bed, with the fold-out pages resting over my recent bride’s nose (a nuisance) and eyes (appreciated). I got lucky. The Memory Access program had a race condition between requests from the Processor and Channel programs.
Next day at lunch I showed Ken what I’d found. Mid-afternoon Mike came by my office. “Larry, Ken’s taking the Lord’s name in vain. He came back from lunch saying ‘That sonofabitch Breed! Why didn’t we talk to him before we published this god-damned thing?’ ” And I knew that I had to go to work for him.
comment in It’s APL’s Birthday, or is it?,
In a time-sharing system, the key to good performance lies in the way the external storage devices are used. Here the contrast between the TSS and APL systems was most remarkable. On TSS, one could look through the glass windows of the disk devices and watch the motion of the arms. These jerked rapidly back and forth, swooping over wide areas of the disk faces, with the appearance of someone in the grip of St. Vitus’ dance. On the APL disks, one arm would be moving quite regularly, like the escapement mechanism of a clock, as it went from one track to the adjacent track, then to the next track, and so on, over fifty or so tracks in several seconds, and then retracted to the beginning and started the cycle over again. Sometimes the total excursion was more, sometimes less; it was so regular that an experienced person like Roger Moore, who was principally responsible for the APL supervisor, could tell how many users were signed on by watching it.
The Socio-Technical Beginnings of APL, 1979
I.P. Sharp Associates was founded by the FP6000 programming team and one other in 1964. Directors: Ian Sharp, Roger Moore, Ted McDorman, and Don Smith; three others: David Oldacre, Brian Daly, and James McSherry. The preceding seven joined in December 1964 at various dates. In spring 1965, David Butler, an engineer from the non-FP6000 part of Electronics Division, joined. Butler was more interested in military business than any other employee.
Ian, Brian, and Jim McS painted the new office at DeMarco Building at Keele & Lawrence.
Roger Moore was returning from the US to Canada. The customs officer at the border questioned him about some boxes of punch cards in his possession. Roger avoided further complications by explaining to the officer that the punch cards were used rather than new.
The ACM Grace Murray Hopper Award is given to the outstanding young computer professional of the year, selected on the basis of a single recent major technical or service contribution. The candidate must have been 35 years of age or less at the time the qualifying contribution was made.
The 1973 Grace Murray Hopper Award goes to Larry Breed, Richard Lathwell, and Roger Moore, for their work in the design and implementation of APL\360, setting new standards in simplicity, efficiency, reliability and response time for interactive systems.
Grace Murray Hopper Award
In January of 1973, when I was 27 years old, I was a graduate student in physics. A few months earlier, I had taken some time off from the University of Oregon in Eugene and had moved to New York City. I spent the fall semester there taking physics courses at CCNY while supporting myself by teaching “Physics for Nurses” at Hunter College on the Upper East Side of Manhattan. However, by the end of the fall term, I decided I should return to Eugene and complete my Ph.D. there. The previous summer, I’d driven cross-country in my silver-colored 1956 Mercury Monterey, which I affectionately called “Q”, short for “quicksilver” (an ancient word meaning “mercury”) — shown in two attached photos, one taken way back in 1971, and the other in 2006 (yes, I still own Q today!) So, back to our tale I was now taking Q (or rather, Q was now taking me) back the other way — back across the amber waves of grain, the purple mountains’ majesty, across the fruited plain, from sea to shining sea.
Q and I tended to drive very late at night, and one night in the middle of darkest Iowa, at about 1 AM, there was a sudden extremely intense downpour, so I stopped at a truck stop to wait it out. Under the bright lights I had a coffee, and when the storm had somewhat abated, I went back out to Q and started off again. It was still raining, but not nearly as hard. Right as I was about to get back onto the freeway, I spied a rather pathetic totally drenched figure standing on the side of the road thumbing a ride, and he looked young and not in the least threatening, so I pulled on the reins of my steel steed and came to a halt, and told the sopping-wet fellow to hop in. He was probably in his late twenties, like me, and he had red hair, unlike me, and at that most wet juncture in his life, he was very relieved to get a ride.
So we got to talking, and after a while I mentioned that I had grown up on the Stanford campus. My traveling companion said that his brother had been at Stanford some years earlier, so naturally I asked what his brother had studied there, and he said that he was a computer person. Back in those days, this was an incredible rarity. In fact, Stanford had only one single computer when I, as a high-school kid, had started programming it, in 1960. So I said, “And what was his name?” And my still-shivering seatmate replied, “Roger Moore”.
Well, what do you know — Roger Moore! I remembered good old red-haired Roger extremely vividly from my undergraduate days at Stanford, in the early sixties. Back then, there was a small coterie of recursion-crazed math nuts — today they would be called “geeks” or “nerds”, but back then those words did not exist — who hung around all day and all night in the basement of Encina Hall, where the legendary Burroughs 220 was located, and who talked endlessly about the subtleties and beauties of ALGOL (a brand-new computer language of the time, and truly ALGOL was a wonderful and important breakthrough in computer science). This delightful, nerdy band included my friends Larry Breed, Larry Tesler, Charlie Brenner, Roger Moore, Bill Strachan, and myself (and probably a couple of others, but, like Q, my memory is a wee bit rusty after all these decades).
So of all things, in the middle of my life in the middle of a storm in the middle of the night in the middle of nowhere in the middle of the North American continent, Q and I had picked up the brother of someone I had hung out with some ten years earlier. Small world indeed.
Douglas Hofstadter, A Q Tale, 2009
I was allowed to use the Stanford computer (IBM 650) when I was in high school. That was thanks to Prof. George Forsythe (mathematician, founder of the computer science department at Stanford, founding editor of the Journal of the ACM) who introduced some of us to computers at the weekly Tuesday Joe Berg Science Seminar series at Palo Alto High School. Probably in 1961, the summer before I matriculated as a regular student, I met Roger Moore. By that time the computation center was in the basement of Encina Hall and the computer had been upgraded to a Burroughs 220 whose ALGOL-inspired BALGOL compiler was our main programming tool. We regulars who hung out there knew the compiler’s quirks inside and out even to the extent of some putatively illegal syntax constructions that would slip through the parser and potentially do something useful. Roger reached into my punched card box on the shelf of the make-ready room and took a look at my handiwork. What he saw must have been obscure programming on my part no doubt intended to save a few bytes or milliseconds. Good natured but a little snidely he summarized his feeling: “Ah, very clever. Floating point divide and execute the remainder.”
Al Rose, a vice president of STSC, called on Roger Moore, a vice president of I.P. Sharp, to improve the speed of Boolean summation. Moore had reasons of his own for wanting to do this, so he agreed. His analysis of the problem was faily subtle, and he managed to gain more efficiency in more areas than the original problem called for, but we will concentrate here on the essentials of his solution of the basic problem.
The heart of the technique was exploitation of the Translate instruction, peculiar to the architecture of the IBM System/360 line of computers. The Translate instruction is able to replace as many as 256 eight-bit bytes of data in storage by the same number of other bytes. Each byte of the first argument is used to select a byte from the second argument, which then replaces the byte of the first argument. Considering the elements of the two arguments as integers in the range 0-255, one could define the Translate instruction by the expression a←b[a] , where the length of a is 256 elements or less, and the length of b is at least ⌈/a . The reason Translate is in the System/360 set of instructions is to convert data from one transmission code to another, but that is not what Moore used it for. Instead, he put into b elements which gave the count of the number of bits in the corresponding elements of a . For example, if the entry in a were 01110110 (which, considered as a base-2 number is 118), entry 118 in b would be 00000101 , since there are five 1-bits in the element of a , and 00000101 , considered as a base-2 number, has the value 5.
With this translate table in hand, it was a relatively simple matter to take a Boolean array, translate the bytes of its rows to the corresponding bit count, and then sum the translated bytes. Suppose, for example, that a 32-element Boolean vector v is represented in the computer memory by the four bytes:
11010110 00100011 01111101 00101101
These would be translated to the four bytes:
00000101 00000011 00000110 00000100
which are the binary representations of the numbers 5, 3, 6, and 4, respectively. These four numbers could be summed by a Load and three Adds, to give the desired sum 18. Thus with one Translate, one Load, and three Adds it is possible to do what otherwise took 32 Translations, one Load, and 31 Adds. Actually Moore’s strategy was more sophisticated than this, so that he was able to handle ^/ , ∨/ , ≠/ , and =/ with the same code, and his code is considerably faster than even this analysis would indicate, but that isn’t part of the present story.
So successful was this technique that when IBM’s new high-performance VS APL system was announced in 1975, the Plus-Reduction on the I.P. Sharp and STSC systems was still twice as fast as that of VS APL.
Eugene McDonnell, Sum of the Bits, 1980-09
[Editor note: “Considerably faster
than even this analysis would indicate”
perhaps worked by exploiting the fact that the byte counts,
taken four at a time as “full word integers”,
can be summed four at a time (“in parallel”),
up to ⌊255÷8 (=31) times without overflowing
the individual counts.
See the J Wiki essay
of a Bit Array for more details.]
A slightly different version of this photo appeared
on the front page of
the I.P. Sharp Newsletter, 1978-11 to -12, volume 6, number 6.
The caption on the photo had the following sentence:
It is believed to be the first time all six “originators of APL”
have been in the same place at the same time;
it is probably the first time that all six have worn jackets and ties
simultaneously and the first time Ken and Adin have been observed
to smile simultaneously.
I interviewed with Ian, who seemed satisfied, but he told me, “You’ll have to talk with Roger.” He made it sound as if Roger was some sort of demigod. Which was not far from the truth. I was led to an elfin, rumpled-looking character who was smoking a cigarette and staring and muttering at a listing. Roger Moore.
I introduced myself and said Ian had sent me over about the compiler job. Roger was more interested in the problem than in me, I think. I got frustrated sitting there, while he smoked and muttered and looked at the code, so I asked him to explain the problem to me, then pitched in. I don’t recall what we were looking at; it was probably the IPSCOBOL compiler code. After an hour or so, I said I had to leave to go on another interview, so I asked him where we stood on the job. “Oh, oh, yeah, I guess we can use you.”
Generating IPSCOBOL test cases was part of the job. The more interesting part was analyzing the compiler output for correctness. Both of those tasks screamed for automation, which led to my learning APL.
In 1975 or 1976, IPSA installed a faster IBM mainframe for their SHARP APL timesharing service. On the first day on this machine, I (in Calgary) happened to enter an expression involving ⌹ and generated a system error with a register dump and everything. Seemingly in no time flat Roger Moore (in Toronto) was on the case and fixed the problem. He then inquired of Lib Gibson, IPSA Calgary branch manager, re who was the person with the magic touch. Lib replied that it was Roger the summer student, adding that having a magic touch was a characteristic of all Rogers.
Modem technology introduced around 1960 was the Western Electric 103A. It used frequency shift keying and could run at 300 baud. Original terminals were 2741s and clones at 134.5 baud. I cannot remember exactly when ASCII support was introduced. APL ASCII was helped by the daisy wheel printer technology which ran at 30 cps (provided you didn’t feed it with wrong character sequences like N⍴'E0').
Prior to IPSANET it was expensive to provide 300 bps service outside of Toronto. A wider bandwidth time-division multiplex channel was required which increased costs. With packet switching support for higher speeds became possible. I think IPSA was widely deployed in 1978 (check rogerdmoore.ca/INF) with 134.5/300 bps autospeed ports on the Alpha and 3705. Checking May/June 1978 network topology suggests that TDM links were gone in 1978.
1978 was during the Vadic v WE 212A wars. Both provided 1200 bps over dial-up lines; only Vadic could be acoustically coupled. I think there were some 1200 bps network ports in 1978. As these ports became more common, we discovered that the exact Alpha hardware configured did not really support 1200 bps. I spend a couple of weeks looking the source of the problem. The problem was associated the bloody awful transmit shutdown scheme in the Advanced [sic] Micro Device 9551 chip. Commercial async chips (unlike IBM 3705) were incapable of transmitting an invisible idle (start bit at mark and data=all marks). With the 9551 turning off transmit mode immediately jammed transmit data at mark. This meant Alpha software had to send two dummy characters after last character from a packet. In normal 9551 transmit operation a new character was requested in the middle of stop bit transmission. For a characters other than last Alpha hardware would supply a new character in between instructions. When count expired on the data transfer there was an interrupt. If interrupt was serviced by shutting down transmit mode while the stop bit was being transmitted, everything was OK. If interrupt service was delayed then transmission of start bit of next character would start. A small delay would result in a visible blip on transmit data which would probably be ignored by the modem. Transmitting half of the start bit would be visible to modem and end user. Thus delay of interrupt by (1/1200 sec) would guarantee a noise character at user terminal. Shorter delay might give garbage.
Solution was global switch to Intel 8251 chip which had a much more civilized approach to transmit shutdown. With 8251, shutting down transmit mode disabled further requests for more characters but allowed buffered characters in chip (usually two) to be transmitted. This network wide hardware change which occurred one node at a time was required to properly support 1200 bps.
A nostalgic reminiscence of the early days of APL, remembered to the tune of The Battle of New Orleans.
Dedicated to the pioneers of APL with respect and affection by J.C.L. Guest
A Personal History of APL,
However, all was not grim in those early years, and one gets an insight into the sense of humor which still abounds in the APL world. The Great Inner Products Contest was announced in the January 15, 1971 issue. Readers were encouraged to submit their “favorite and most expressive use of the inner product”. Among the so-called rules of the competition:
Volume II, Number 6, March 17, 1971 reveals that the APL community could meet challenge with characteristic tongue-in-cheek:
Not all was fun and games, however. Mike Jenkins introduced the new matrix inversion primitive, domino, to the APL community in Volume III, Number 4, February 10, 1972. This landmark paper is often referred to, and can still be used today to gain insight into this function. And domino can be used in interesting and mysterious ways, too. At the [APL82] meeting in Heidelberg, Timo Seppälä of TMT-Team Oy, Helsinki, was asking people if they knew the shortest expression for computing the average of a vector. (Think about it and then look for the answer at the end of this introduction.)
APL QUOTE-QUAD: The Early Years,
The “goodies bag” for the APL85 conference
in Seattle included a jigsaw puzzle of about 1000 pieces.
The pattern (composed by Paul Berry)
consisted of APL error messages in various
natural languages and
Roger Moore was in the adjacent office, and he’d occasionally drop by to discuss the network shared variables work he was doing with my office mate Richard Potyok. On such occasions he would (I later realized) look longingly at the unopened puzzle, but he was too gentlemanly to say anything.
On Friday 1986-06-29 I finally opened the puzzle and started to work on it. Roger soon noticed and immediately pitched in. We made short work of the parts with the APL error messages and of course the big “APL ’85” was pretty easy. The remaining random APL characters proved more challenging.
After a while Roger derived a better method than random search: first, sort the remaining puzzle pieces according to the characters around the domino (⌹) character. (He printed out ⎕av to use in the sorting.) Then, find a domino character on the box, look at the characters around it, and locate the correct puzzle piece in the sorted piles of puzzle pieces. Why ⌹ ? It is the character with “the most ink”, such that it is easier to recognize a fragment of that character on a puzzle piece than any other character. Using this method, the puzzle was almost done by Saturday evening and finished soon thereafter.
Roger Moore was a vice president of I.P. Sharp Associates. What were Roger’s responsibilities as vice president? I’ve heard it said by different people that “Roger Moore is the vice president in charge of Roger Moore”.
In the 1990s I used to ride my bike on the Martin Goodman Trail or the Sunnyside Boardwalk on the shores of Lake Ontario. Sometimes I would see Roger Moore on the trail, also on a bike. You can tell it’s Roger from a ways off because only he would be wearing a short-sleeve white shirt and tie.
More recently (2016), Roger has been seen playing Pokémon Go while wearing shirt and tie.
If an item in Ken Iverson Quotations and Anecdotes is a “Kenecdote” (per Eugene McDonnell), and an item in Eugene McDonnell Quotations and Anecdotes is a “Genecdote”, what is an item in this collection? I propose that it be called an “APLore” (pronounced “apple lore”).
I learned just today that
was what Eugene had been calling the collection
of Roger Moore stories since 1986 or earlier.
The possibilities are endless!
Phil Abrams |
S.Z. de Ferranti
Grace Murray Hopper
Roger Hui |
David Oldacre |
Leland Stanford Jr.
Compiled and edited by Roger Hui.