APL Quotations and Anecdotes

http://www.jsoftware.com/papers/APLQA.htm


It has been said that APL has quite a character set. The following are a collection of stories by or about these interesting characters, arranged in roughly chronological order. Additional stories can be found at:

   • Ken Iverson Quotations and Anecdotes
    http://www.jsoftware.com/papers/KEIQA.htm
   • Eugene McDonnell Quotations and Anecdotes
    http://www.jsoftware.com/papers/eem/anecdotes.htm

For narrative reasons, there is a slight overlap between the present collection and the other two collections.




 

Ken regularly stood up to Howard Aiken, and Aiken stood six-foot-three and had Spockean ears and pointed tufts of hair and when he reared up and looked down at you, you thought you were looking at the Devil. And when he growled at you, you thought that too. Never mind: Aiken had the characteristic that if you stood up to him he respected that, and if you didn’t he just trod you underfoot. Ken stood up to him.

Ken’s manner was always argumentative, but argumentative with an effective expression: “Perhaps one ought to think about it this way…” This was in contrast with Aiken’s “Goddamit it’s gotta be so-and-so, all right?” Ken was firm in his views but he was reasonable. He satisfied the old Latin motto, Numquam incertus, semper apertus—never uncertain, always open.

— Fred Brooks, Vector, 2006-08
 

 

Unsurprisingly, Ken stood up for what he believed in. He once spent a few hours in jail after being arrested during a protest against the Vietnam War. In the same cell was Garry Wills, the historian and author.

— Roger Hui, Remembering Ken Iverson, 2004-11
 

 

Eugene McDonnell was very interested to know more about the previous story. What happened was that a bunch of people from Watson Research went down to protest in separate groups. Ken and Eugene were in different groups, and Eugene had not heard about the jail part until reading about it in 2004. Eugene said he never got to go to jail because his group was not so rowdy.
 

 

I left Harvard with offers from IBM Research and Bell Laboratories. Fred Brooks (who had joined IBM somewhat earlier) advised me to choose IBM because computers were their primary concern. After I joined the IBM Research Division, Fred advised that I stick to whatever I really wanted to do, because management was so starved for ideas that anything not clearly crazy would find support. In particular, I was allowed to finish and publish a book on my notation, (A Programming Language, Wiley, 1962), as well as Automatic Data Processing, with co-author Fred Brooks (Wiley, 1963).

— Kenneth E. Iverson, Kenneth E. Iverson, 2008
 

 

“I am indebted to my wife for assistance in preparing the final draft”, so says the last sentence of the Preface to A Programming Language. The acknowledgment only hints at the heroic effort involved: Jean typed the text and hand-drew the special characters and symbols using a Keuffel&Esser Leroy Lettering Set. As well, she participated in the proofreading of several “final” drafts, reading out every comma, period, slash, dash, etc. while Ken followed in the galley copy.

Jean also compiled the index of the book with the aid of punched cards.
 

 

In 2009, while putting A Programming Language on-line I encountered a difficulty with exercise 1.30 on page 67.

1.30  Show that for a homogeneous tree H, μ(H) = y y, where = ν(H).

What’s the problem? In the text, the letter y superscribed with the arrow had a tiny blob of ink between the arrowhead and the y itself. My copy of the book was printed in 1989 by a xerographic process, leading me to think that the blob was a production flaw. But every jot, dot, tilde, and twiddle is significant in the book, so I could not rule out entirely that the blob is significant.

I soon enlisted the assistance of Joey Tuttle who has an original imprint. Under high magnification, it can be seen that the blob was indeed a flaw, present in all copies of the book. (Check your copy.)
 

 

Ken presented his paper Formalism in Programming Languages in August 1963 at a Working Conference on Mechanical Language Structures, Princeton, N.J. The list of conferees is full of famous and soon-to-be famous names, and a few future Turing Award winners (Backus, Curry, Dijkstra, Floyd, Iverson, Newell, Perlis, Wilkes). The paper also records the discussion that occurred after the presentation, ending with an exchange between Ken and Dijkstra, in which Ken’s reply to Dijkstra’s question was a one-liner.

The question immediately preceding Dijkstra’s question was posed by S. Gorn of the University of Pennsylvania: “Does your generalized operator notation for matrices lead to a simpler proof of the generalized Laplace expansion of determinants?” In reply, Ken launched into a page’s worth of carefully reasoned argument full of intricate notation. With anyone else, one would say that the answer was most likely composed afterwards and then inserted into the written record. Since this was Ken, it may just be possible that his reply was ex tempore.
 

 

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.

— Larry Breed, comment in It’s APL’s Birthday, or is it?, 2012-02-21
 

 

Then I got A Formal Description of System/360 by Falkoff, Iverson, and Sussenguth — an amazing piece of work which later became known as the grey manual. I thoroughly enjoyed time spent on this document and came to appreciate that symbolic notation really can be used for describing real as well as formal systems. I didn’t find any fault with this document but I hope Larry Breed correctly describes how he found an error and told Ken about it at lunch at Stanford, being careful to bring it up when Ken had cake in his mouth.

— Jim Brown, Vector, 2006-08
 

 

The APL language was first defined by K.E. Iverson in A Programming Language (Wiley, 1962) and has since been developed in collaboration with A.D. Falkoff. The APL\360 Terminal System was designed with the additional collaboration of L.M. Breed, who with R.D. Moore*, also designed the S/360 implementation. The system was programmed for S/360 by Breed, Moore, and R.H. Lathwell, with continuing assistance from L.J. Woodrum, and contributions by C.H. Brenner, H.A. Driscoll**, and S.E. Krueger**. The present implementation also benefitted from experience with an earlier version, designed and programmed for the IBM 7090 by Breed and P.S. Abrams⍟⍟.

The development of the system also profited from ideas contributed by many users and colleagues, notably E.E. McDonnell, who suggested the notation for the signum and the circular functions.

In the preparation of the present manual, the authors are indebted to L.M. Breed for many discussions and suggestions; to R.H. Lathwell, E.E. McDonnell, and J.G. Arnold*⍟ for critical reading of successive drafts; and to Mrs. G.K. Sedlmayer and Miss Valerie Gilbert for superior clerical assistance.

A special acknowledgement is due to John L. Lawrence, who provided important support and encouragement during the early development of APL implementation, and who pioneered the application of APL in computer-related instruction.


* I.P. Sharp Associates, Toronto, Canada.
 General Systems Architecture, IBM Corporation, Poughkeepsie, N.Y.
** Science Research Associates, Chicago, Illinois.
⍟⍟ Computer Science Department, Stanford University, Stanford, California.
*⍟ Industry Development, IBM Corporation, White Plains, NY.

— Acknowledgements, APL\360 User’s Manual, 1968-08
 

 


(L to R) Dick Lathwell, Ken Iverson, Roger Moore, Adin Falkoff, Phil Abrams, and Larry Breed. (On the extreme left in the background: Jon McGrew.) Taken in the I.P. Sharp Associates hospitality suite during the 1978 APL Users Meeting in Toronto, Canada.

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 remember quite well the day I first heard the name APL. It was the summer of 1966 and I was working in the IBM Mohansic Laboratory, a small building in Yorktown Heights, NY. The project I was working on was IBM’s first effort at developing a commercial time-sharing system, one which was called TSS. The system was showing signs of becoming incomprehensible as more and more bells and whistles were added to it. As an experiment in documentation, I had hired three summer students and given them the job of transforming “development workbook” type of documentation we had for certain parts of the system into something more formal, namely Iverson notation, which the three students had learned while taking a course given by Ken Iverson at Fox Lane High School in Mount Kisco, NY. One of the students was Eric Iverson, Ken’s son.

As I walked by the office the three students shared, I could hear sounds of an argument going on. I poked my head in the door, and Eric asked me, “Isn’t it true that everyone knows the notation we’re using is called APL?” I was sorry to have to disappoint him by confessing that I had never heard it called that. Where had he got the idea it was well known? And who had decided to call it that? In fact, why did it have to be called anything? Quite a while later I heard how it was named. When the implementation effort started in June of 1966, the documentation effort started, too. I suppose when they had to write about “it”, Falkoff and Iverson realized that they would have to give “it” a name. There were probably many suggestions made at the time, but I have heard of only two. A group in SRA in Chicago which was developing instructional materials using the notation was in favor of the name “Mathlab”. This did not catch on. Another suggestion was to call it “Iverson’s Better Math” and then let people coin the appropriate acronym. This was deemed facetious.

Then one day Adin Falkoff walked into Ken’s office and wrote “A Programming Language” on the board, and underneath it the acronym “APL”. Thus it was born. It was just a week or so after this that Eric Iverson asked me his question, at a time when the name hadn’t yet found its way the thirteen miles up the Taconic Parkway from IBM Research to IBM Mohansic.

— Eugene McDonnell, A Source Book in APL, 1981
 

 

In 1966 Eugene worked at IBM and hired Eric Iverson as a summer student. Twelve years later Eugene left IBM to join the language and system group at I.P. Sharp Associates, managed by Eric Iverson.

Two years thereafter Ken Iverson too left IBM to join I.P. Sharp, also to be managed by Eric Iverson. After that, Eugene didn’t feel so bad about his own reversal in the pecking order.
 

 

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.

— Eugene McDonnell, The Socio-Technical Beginnings of APL, 1979
 

 

One of the most characteristic conveniences of the system is the cue chosen for the user to make a new entry. On other systems being developed at this time, this user cue varied from one kind of character sequence to another: on one system a question mark would be printed, on another, a rather long-winded time stamp, on another, the word “READY”. In keeping with its general policy of informing the user as briefly as possible, the signal APL uses to indicate that output display has finished, or that computer processing is over, is succinct indeed. No printing characters appear at all: six spaces are sent, moving the cursor or printing element to the right, and the keyboard is unlocked for a new input. To me, that six-space cue is one of the key items in APL’s elegance. Larry Breed recalls that it was Ken Iverson who suggested it.

— Eugene McDonnell, The Socio-Technical Beginnings of APL, 1979
 

 

Early in the J implementation Ken suggested that the prompt should be 3 spaces instead of 6. There are suggestions and there are suggestions, and this suggestion was made in a tone which brooked no argument. So I made it so.

Later, k one-upped us by doing a one-space prompt.
 

 

In 1966 Eugene went into a sporting goods store in Peekskill, NY to buy a soccer ball. The salesman showed him ones that cost $10, others that cost $14, and finally the professional version for $28. (Even $10 was a lot of money in those days.) Presented with this array of choices, Eugene can not decide, explaining to the salesman that it was for his daughter Julia. The salesman said, “Oh, for girls we have some over here for $7.” Eugene immediately responded, “I’ve decided! I’ll take the $28 one.”

— Paul Berry
 

 

One of the best known epiphanies in Western culture is possibly that of Saul on the way to Damascus. My own epiphany in programming languages was much less dramatic than Saul’s. I was not going anywhere, there was no blinding light or voice from above, nor did I fall down. It was in 1965 or 1966, and I was sitting quietly in my office in the Department of Computing Science at the University of Alberta thinking about the commonly occurring statistical problem of classifying a number of observations given the left-hand end of the first frequency class, the class width and the number of classes. This is a problem I had already handled in other languages but now I was trying to program it in a new language called Iverson’s notation or APL.

— Keith Smillie, Kenneth Iverson, APL and J: Some
Personal Recollections
, 2004-11
 

 

Ken’s name next came to my attention when a friend and I took our wives to a dinner meeting of the local ACM chapter. I always felt there was no way to impress a woman like an ACM meeting. In fact, we did go for a social evening and didn’t even make note of the speaker who was someone I never heard of anyway. It was Adin Falkoff with a portable (by some extended meaning of that word) 2741 terminal which he dialed into Yorktown and showed us APL. …

I was absolutely blown away by the whole presentation. Adin typed in “2 space 3 backspace backspace plus” and pressed return and it typed “5”. He called it visual fidelity. I recall our wives were not so impressed by this as they were apparently able to work out this result in their heads without use of a terminal and phone line.

— Jim Brown, Vector, 2006-08
 

 

Born in Dublin, 1932, Ian Sharp graduated in engineering from Cambridge University, spent four years in OR for United Steel Companies. In 1960 he came to Canada and became chief programmer responsible for software development at Ferranti-Packard, Toronto. In 1964 he formed I.P. Sharp Associates.

Canadian Datasytems, 1970-02
 

 

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
 

 

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.

— Ian Sharp
 

 

Graham Driscoll had a reputation for being direct and taking unusual approaches to solving problems. Once an entranceway was temporarily blocked by a car. Driscoll overcame the obstacle by opening one car door, got into the car, and exited the car and the entranceway through the other door.

— Ken Iverson
 

 

The early APL group at IBM had a deep and abiding interest in words, in their correct use and in their etymology. Once, someone uttered in frustration, “Horseshit!” Graham Driscoll immediately responded, “‘Horse’ is Middle English, and comes from the Old English hors; ‘shit’ too is Middle English, and comes from everywhere.”

— Ken Iverson
 

 

Ken made a great many appearances at schools and universities, to explain how he thought students could and should make use of computers, and in particular, how they could start right away, using APL. At some of these guest experiences, I got to serve as his assistant, and I felt a bit like Robin getting to carry Batman’s bag. But listening to Ken give those demonstrations, I marvelled at the spontaneous and natural way he seemed to talk. Especially I loved the way he deftly handled questions from the audience. He seemed endlessly able to respond to their queries with neat examples and appropriate jokes. Only after I had listened to these presentations many times, did I begin to catch on to how he did this. He carried around in his head a huge fund of examples, jokes, aphorisms, stories, but he kept them in reserve. He didn’t offer them. He waited until a listener’s question happened to set up one of them, and then he sprang it forth. It sounded just like something he’d thought of that instant in response to what the questioner had asked.

— Paul Berry, Vector, 2006-08
 

 

Seeking to counter the popularity of Dartmouth Basic (running on teletypes and a remote GE computer) at the prestigious Hotchkiss School in Connecticut, IBM V.P. Arthur K. Watson, who was a Hotchkiss trustee, had APL terminals and access to the Yorktown APL\360 system installed for Hotchkiss students. The students loved it, and carefully steered newbies to the Basic teletypes so as to maximize their own APL time.

— Larry Breed, How We Got to APL\1130, 2004-05-10
 

 

Q: I have read some other discussions where you and other people suggested that one of the interesting applications was using APL to teach programming and mathematics at the elementary and high school levels.

Adin: We did some of that, particularly at the beginning, and we had a little fun with it.

At that time we only had typewriter terminals and we made some available to some local private schools. There was one in particular where problem students were supposed to be taught, and we gave them exercises to do on the typewriter and turned them loose.

The fun part was that we found that some of these students who were supposed to be resistant to learning broke into the school after hours so they could do more work on it. They were using typewriter terminals hooked to our time-sharing system.

— Adin Falkoff, Masterminds of Programming, 2009
 

 

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.

— ACM, 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.”

— Charles Brenner
 

 

… 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 Sum of a Bit Array for more details.]
 

 

How I got my job at IPSA. It began with a conversation between me and a headhunter.

Me:  I want to work on compilers.
Me:I want to work my own hours.
Me:I don’t want to have to wear a suit.
Me:I don’t care what it pays.
HH:There is only one place in town like that.

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.

— Bob Bernecky, Zoo Story: How the SHARP APL Development Group Got Its Name,
Dyalog User Meeting 2016, 2016-10-05
 

 

It was early in my first week at I.P. Sharp in Ottawa when Ian Sharp arrived for a visit. Ian’s standard modus operandi was to sit with employees in silence until they spilled whatever was on their mind. It was a great way of finding out what was really going on in the company. This day was no different, and I was searching for something to say. Since I had never seen APL before, I asked Ian whether there was an APL course coming up soon. He responded there was one scheduled the next week. When I asked if I could take it, Ian responded, “You’re giving it!” I was a highly motivated learner, to say the least. It was perhaps the best course I ever gave, as I was certainly at no risk of cramming too much information into the course.

— Lib Gibson
 

 

Lower Canada College in Montreal was fortunate enough to have been introduced to APL when John Brown, then head of the Mathematics Department of the school, met Ken Iverson at an IBM conference in the late 60’s. John excitedly brought IBM’s APL to the School, and this was later replaced by a connection to SHARP APL (then APL Plus). Everyone used the same account number, and so had access to everyone else’s information. Some people, including myself, started to reason about how one could protect workspaces and files (when these were released in 1970) from prying eyes. We started to think beyond (workspace) locks and (file) magic numbers, and this led to techniques for monitoring application security, trapping snoopers, encrypting data, hiding programs, etc.

The first Mailbox (the term “e-mail” hadn’t yet been coined) was developed by Larry Breed at STSC during a period in time when IPSA and STSC collaborated on many language and environmental features. Larry’s Mailbox was actually the world’s second electronic mail application that I know of, the first having been written in 1971 by Frank Bates III of Mobility Systems. Frank’s application demonstrated the efficacy of communication through this medium, but was not a robust, commercial application and was not secure. In early 1972, Larry set out to build something that was.

There was something appealing about trying to break into a messaging system. For one, you can learn a lot trying, and even more when you’re successful. Additionally, Larry had introduced some novel changes into the APL interpreter to allow name masking, and this made the allure still greater—even mysterious. After having penetrated numerous other applications running on the mainframe, it wasn’t hard to convince myself to try to break into the Mailbox. I did this successfully on many occasions, using a variety of techniques that I developed. Each time, I would report what I had done to David Keith, branch manager of the IPSA Montreal office, and eventually that hole would be plugged and I’d move on to find a new one. Years later, Larry told me he was late for the annual STSC Christmas party in 1972 because he was busy fixing my latest reported vulnerability.

One Saturday in 1973, I recall being at the School browsing through everyone’s messages when I came across one written by David Keith about a confidential sales prospect. The message was addressed to Ian Sharp and a few senior managers in the company. It went on for some time about the nature of the opportunity and the likely next steps in securing it. In conclusion, David reiterated the confidentiality of the matter and, almost prophetically, added “that goes for you snoopers at LCC, too!” It was a mirthful moment.

A couple of months later, David Bonyun of I.P. Sharp, then System Librarian and in charge of all public libraries, contacted me and asked if I would write a new Mailbox that was functionally similar to the existing one but “Leslie Goldsmith proof”. Doing this would certainly bring to bear all that I had learned about trying to protect data at LCC.

My first version of 666 BOX was written as a part-time activity in the late summer of 1973. IPSA did not have access to the source for the version they had been running, so it was written from scratch. Although it underwent many significant changes over the coming years, dramatically increasing its capacity and later introducing cross-domain message transfer, I’m not aware of any successful attempts to penetrate it.

— Leslie Goldsmith
 

 

It came time to negotiate the remuneration for the mailbox work. Ian Sharp offered a fixed sum; Leslie Goldsmith countered with a royalty approach of one penny per message. The negotiations demonstrated the financial acumen of both parties: if Leslie had prevailed he would eventually have received several orders of magnitude more than the fixed sum.
 

 

A constant source of irritation was the universal attitude of all telephone companies to the idea of electronic mail. It was regarded as a huge threat to the considerable income that they all derived from Telex traffic. Telex was an ultra-low speed communication system among Teletype terminals. The service was introduced in the mid 1940s as the solution to all corporate data transmission requirements. No significant improvements or upgrades were made to that service over the next 30 to 40 years. The first real threat came with the advent of electronic mail, or at least that was how electronic mail was perceived. The first reaction of any monopoly to a perceived threat is to ban it outright, and that is more or less what the telephone companies of the world did. As a company we had no serious intention of offering a general inter-company communications facility that might have competed with Telex. We were mainly interested in an internal communication system among employees and a mechanism to communicate with our customers. Assuaging paranoia was almost a full time job and was probably the subject of more meetings around the globe than any other single issue.

We never did succeed completely in allaying suspicion, and many phone companies were sure that we were eating their Telex lunch, even though they had no evidence of it. As a gesture of goodwill, we modified our Email software so that it was not possible for one customer to communicate with another, but that was largely a waste of time since they did not really believe that we had done that. In Germany the Bundespost invented a tariff which they said we must apply to all Emails and send them money each month. Since we did not have revenue from electronic mail in Germany, we never sent them “their share” and eventually the issue atrophied.

It was of course the proliferation of computers and private corporate networks which caused the erosion of Telex use. More and more people started to use electronic mail and the telephone companies were simply over-powered by the tidal surge of individual as well as corporate usage. It is doubtful that as many as 1% of the present population of Email users has any idea that just a few short years ago the whole thing was illegal.

— Ian Sharp, I.P. Sharp Associates and the Telephone Monopolies, 2005
 

 

In the fall of 1970 I was introduced to Iverson Notation, to express algorithms. I was impressed by its brevity and unambiguity. For the first and only time, I enjoyed homework.

In the spring of 1971, I took a survey class about programming languages—a different one each week. I was standing outside a classroom and overheard two classmates:

“What’s the language this week?”

“APL.”

“What’s that?”

“It’s Iverson Notation on a 2741 typewriter terminal.”

… Instant love. Not only my favourite language, but no more punch cards. Little did I realize then that it would set my life’s career path.

— Brian Oliver, It’s APL’s Birthday! Or is it?, 2011-11-27
 

 

Al Rose was one of the best stage acts I can remember. I attended a gig of his somewhere in London in the early ’70s. Al had an IBM golf-ball APL terminal. As a finale, he said, “I have The Book of Psalms here — what do you want to know?” There was a long pause, until someone in the audience asked, “Which word occurs most often?”

Al put his head down and thought for around a minute (which is a very, very long time when you’re on stage). Then he typed in a fairly long APL expression. There was a pause. Then the typewriter started clattering out a list of the unique words and their counts in order of frequency. It brought the house down.

The best thing about the experience was the look on the FORTRAN programmers’ faces :-)

— John Scholes
 

 

Al Rose’s feat was all the more impressive because he did it in a first-generation APL. In current Dyalog APL, the computation is  ⌽ {(⊂⍒⍵)⌷⍵} {(≢⍵)⍺}⌸ x .
 

 

LISP came out from people who didn’t see the progression raw binaryassemblerFORTRAN.

— John Scholes, as quoted by Stefano Lanzavecchia
in Vector, volume 20, number 2.
 

 

Jeffrey Shallit was a summer intern at the IBM Philadelphia Scientific Center in 1973. He was working on some high precision computations using APL. I can’t remember whether it was a precise evaluation of pi to several thousand places, or perhaps Mersenne prime #24 ( _1+2^19937x) — but in any case, Jeffrey had succeeded in printing out this lengthy number, and left a copy of the pages of digits on several people’s desks. The next morning, Ron Frank came in, looked at the copy on his desk, circled a digit towards the end of the long number and wrote, “Are you sure about this digit?” and put it back on the desk Jeff was using.

That afternoon, Jeff came in and discovered the note and raced into Ron’s office saying, “How do you know that digit is wrong??” To which Ron calmly replied, “I have no idea if it is correct or not — I was just asking if you were sure …”

I was (am still) impressed with Jeffrey’s work because he did it in an 80KB APL workspace. Hard to imagine these days when it is routine to work with a hundred thousand times that much memory … Although I note that J only consumes 80704 bytes to calculate _1+2^19937x and that’s impressive too.

— Joey Tuttle
 

 

My usual metric for the progress in Big Iron was based on the size that a disk drive had to be, in order to kill you if it fell on you. By the end of my physical contact with that hardware, in the mid ’80s, it was up to 1 GB.

— Bob Bernecky
 

 

Ken encouraged me to collaborate with John Thorstensen, a graduate student in astronomy, on a program called STARMAP. The idea was to explain the movement of the stars and planets across the sky and to do it by writing programs that clearly stated the simple formulas that described their motion. … When we asked for approval to publish this example of didactic programming we got back from the publications review committee a message that said, “Permission denied. This paper discloses proprietary algorithms that are the intellectual property of IBM.” I sent in an appeal saying, as diplomatically as I could, Don’t be silly. This is an APL restatement of Kepler’s function from about 1610. But then we got a new rejection. This time it said, “Permission denied. This is not original work.”

— Paul Berry, Expository Programming, 2006
 

 

In August 1973, MCM sent Ted Edwards to the APL Congress in Copenhagen with a prototype of the MCM/70. What was unusual about that MCM/70 was that it was mounted in an attaché case and was operating on batteries. Edwards was not only able to board the plane with this unusual device but also reviewed his presentation using that MCM/70 during the flight to Copenhagen. This constitutes another “first” for MCM: the first portable computer operated during a flight. And, of course, that “laptop” was running MCM/APL. The MCM/70 story was picked up by the Danish daily Politiken on 1973-09-28.

— Zbigniew Stachniak, York, MCM70 & the angst of being there first,
2010-10-17
 

 

Eric Iverson’s involvement with APL and J:

1966-1968  IBM Mohansic Laboratory
1968-1987 IPSA
1968-1987 with David Oldacre, ported APL\360 to the IBM/1130
1969 IPSA initiated APL timesharing service
1972-197x junior co-developer with Larry Breed of the STSC/SHARP APL file system
1972-1974 ported APL at Siemens Germany to an RCA clone of the IBM/360; first APL with a virtual memory APL system
1973-1985 manager of the IPSA development group (“the Zoo”)
1980 Ken Iverson joins IPSA
1985-1986 IPSA European managing director
1987 Reuters takes over IPSA
1987-1990 ski-bum in Western Canada; construction work in Eastern Canada
1990-02-16 Iverson Software Inc. incorporated
1990-05-15 ISI and Ken and Roger joined forces
2000-04-17 ISI becomes Jsoftware Inc.
2000-05-28 Chris Burke joins Jsoftware

— Eric Iverson, http://www.arraycast.com/episodes/episode10-eric-iverson, 2021-10
 

 

I remember hiring Arthur based on this conversation:

Ken:  Do you hire summer students?
Lib: No.
Ken: That’s too bad. I met the son of one of my former Math colleagues the other day. I showed him APL and he seemed to catch on pretty quickly.
Lib: I hire summer students. Send him to me.
Ken:OK.

[Editor note: Arthur Whitney was 16 years old at the time.]

— Lib Gibson
 

 

My career in APL started as a summer student at IPSA Calgary in 1975, where Arthur Whitney was a summer student the year before. On my first day on the job Ian Sharp happened to be visiting, and the whole office went out to lunch with Ian. During lunch I expounded on matters far and wide. Ian watched me for a while, then turned to Lib Gibson, IPSA Calgary branch manager, and asked, “Isn’t Arthur Whitney coming back with us this year?”

It was years before I realized that I had been put down.

— Roger Hui
 

 

Soon after I began as a summer student at IPSA Calgary I noticed that the manuals had an 6-place abacus on the covers (dark orange on a light range background). I proceeded to write the “read-out” on one of the covers. Fred Appleyard became alarmed at this.

Why so? It turns out that the read-out was 314159, the account number of the IPSA system operator account. Fred was relieved to discover that I was not some sort of hacker.
 

 

Fred was working on the AGDATA agricultural time-series database, and one of the requirements was to know the day-of-week for every day over a contemporary 200 year period. He wondered how he could check his calculations.

I pointed out that in the back of the Edmonoton Telephones phone book there was such a table. This was actually not the first time I impressed someone by knowing this fact. A few months before that, I discussed the topic with my brother. I thought about this for a few seconds, and then reasoned that the table need only have 14 entries, because the D-O-W of January first uniquely determines which table entry is used. We opened to that page and lo and behold the table does indeed have 14 entries.
 

 

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.
 

 

Working at IPSA, with its far-flung offices and its Mailbox, it was possible to “know” a person for years without ever meeting the person. Well into my IPSA career, I asked Lib Gibson, “Is Leslie Goldsmith a guy or a girl?”
 

 

In 1975 or 1976 the IPSA Calgary office barbeque took place at a lake about 10 minutes away from Lib Gibson’s house. We gathered at the house, then walked over to the lake carrying the food, drinks, dishes, cutlery, etc. Frank Arthur and I had the cooler.

The cooler was awkward and heavy and I kept having to switch hands. After a while Frank asked me to let go, then proceeded to put the cooler on his head and walked the rest of the way with the cooler balanced on his head. This was a skill he learned in his native Ghana.
 

 

In those days we had IBM 2741 terminals that connected to the IPSA mainframe in Toronto via acoustic couplers and modems, dialed through ordinary telephones. Those phones were not supposed to receive incoming calls, but once in a while did ring due to incorrectly dialed numbers. On such occasions, Fred Appleyard would pick up the phone and say, “Beverly’s Bordello.” And sometimes Frank Arthur would pick up and say, “Cathy’s Cathouse.”

One time, instead of ending the call quickly, the caller asked, “What number did I dial?”
 

 

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.

— Roger Moore
 

 

The first point of contact between timesharing customers and the system was IPSANET. Usually it’ a “blot” for the account number and passwords, but sometimes it was a msg indicating network status:

APL DEFINITELY HUNG
AWAITING FUNCTION FOUR
…

One time, a female client in SoCal called the local IPSA office to complain that the first msg indicated that APL was terribly conceded.

— Lib Gibson
 

 

When I was in my early twenties, for a while I happened to be the only person in Atkins Computing who knew any APL. I was a techie, working in “Systems”, supporting the Sigma operating system, including the new Sigma APL (which was written in wonderful Metasymbol).

Atkins was keen to sell time-sharing CPU cycles to Rank-Xerox, who had indicated an interest in APL and wanted to evaluate our “APL Training Course”.

I was detailed to give an “Introduction to APL” course for evaluation. Come the day, I found myself in the conference room with a blackboard. I don’t think the company owned an APL terminal at that time; we used $I $R $TAK $DRP … on a KSR-33 teletype.

     Dramatis Personae
Me    Atkins techie
Sally  Atkins client support
Steve  Atkins client support
Alpha-male Rank-Xerox
Sidekick0  Rank-Xerox
Sidekick1  Rank-Xerox

Can you spot what’s wrong with this picture? No? I’ll tell you.

Me: I was profoundly shy at this point in my life and found any sort of public speaking almost impossible. I had been to an all-boys school and (for all intents and purposes) an all-male math faculty, and so blushed and stuttered in the presence of g-g-g-irls. I was in the room to try to teach APL.

Sally: was the “Company Glam”: long blonde hair, long legs, the whole package. Her job was to soothe the predominantly male customer base, and she was very good at it. Whenever Sally walked in, my throat swelled up and I found it hard to breathe. Sally was in the room to be cute, not to learn APL.

Steve: hated me. He had a low opinion of technical people and saw my being exposed to clients as trespassing on his territory. He would be giving the next APL course “properly”. Steve was in the room to trip me up, not to learn APL.

Alpha-male: in his fifties, was the sort of guy the financial services industry likes to use in adverts because their mere appearance commands respect. He had greying beautifully-coiffured hair and wore a very expensive suit. (My father wore an old blue suit to work but it was shiny in places and he often slept on the sofa in it.) Equally daunting for me was Alpha’s BBC/Royal accent and perfect diction. He was of a species different from mine. Alpha brought just his presence to the room; he was not there to learn APL.

Sidekick0&1 had shadowy bit-parts. They didn’t do or say much. They were in the room, I suspect, to agree with and to make Alpha look good, not to learn APL.

I started shakily; “APL was invented by Dr. Kenneth Iverson; APL works back to front, well not really, well sort of …”

Half an hour in, no-one had uttered a word. This is because none of them considered themselves participants; they were just there to observe. I was dying and close to tears. I struggled on for an hour or so: the shape of a zero is empty but the shape of an empty is zero because the rank of a vector is one and the rank of a one is a zero and …

And then there was a glimmer of light. Alpha leaned towards Sidekick1 and said something to which Sidekick1 nodded and smiled. At least they were alive! I grabbed the opportunity like a life-belt and asked if I could clarify something. Alpha looked me straight in the eye and said: “I thought you used the word ‘Wank’.”

From the perspective of modern-day sensibilities, it’s hard to imagine just how shocking this utterance was. This was a word that I would have found difficult to say to my drinking buddies, let alone at work, let alone in front of clients and, most especially, let alone in front of a lady. I just didn’t know how to react. I was literally speechless.

And then it dawned on me: they were here to evaluate the training; it was a psychological test to see how I would react to extremely adverse conditions during my course. I made a snap decision to react firmly. I said “No, I used the word R-R-R-ank”. I may have raised my eyes skywards in a gesture of disdain.

My mind had turned to mush. I stumbled on until just before lunch but I was more or less sleepwalking. Part of me had stopped functioning. The others seemed to recover a little and all but Alpha managed a question or two. And then, just before we broke for lunch, he attracted my attention and said with perfect diction: “I’m sowwy, I weally didn’t understand that.”

His original bombshell had been little more than a feeble joke that “rank” was a technical word in APL and that they were from Rank-Xerox.

For years afterwards, I woke up in a hot sweat in the middle of the night. My only consolation being that anyone with such a speech impediment should weally have avoided employment with Wank-Xewox.

We got the contract, perhaps only because Alpha over-compensated for the public insult I had bestowed on him. I don’t know what happened to Steve and Sally. I was never quite the same again.

— Anonymous
 

 

A second precious property I’ve found, with respect to APL, is the term that I’ve used in that little article that was printed in SIAM NEWS — the word “lyrical”. I find that programming APL is fun. It’s charming. It’s pleasant. I find that programming is no longer a chore, and one of the reasons it’s not is the fact that there are always so many choices available to me. Whereas, the people in structured programming tell me if you put enough structure in programs, everybody in the room here will write the same ALGOL program or PASCAL program. Thus, it’s going to be easier to read — but also dull.

God made us all different. No two of our minds work exactly alike, and one of the great powers of English is that those of us who learn to sharpen our wits on it, and use it properly, can say things differently from other people. And hence, it’s a pleasure to read English when it’s written by someone who has that talent. The other day I was reading a newspaper, an article by somebody in the arts who said if Shakespeare were alive today he’d be writing for TV. And I said to myself when I read that, “Not so. If Shakespeare were alive today, he’d be a programmer, and he’d be writing one-liners in APL.”

— Alan Perlis, Almost Perfect Artifacts Improve only in Small Ways:
APL is more French than English
, 1978-03-29
 

 

9. It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures.

19. A language that doesn’t affect the way you think about programming, is not worth knowing.

85. Though the Chinese should adore APL, it’s FORTRAN they put their money on.

— Alan Perlis, Epigrams in Programming, 1982-09
 

 

McDonnell in APLdom

        Santa Teresa, forgive us our sins.
        Help us remember the light that wins.
        Console us and guide us this fateful day,
        For Gene McDonnell is going away.

When lapses in logic bedevil your traces,
The father of sticks will lighten your strain
By helping you master the wide open spaces
That fill up the place where you should have a brain.
With a quick, deft mastery logical
And a manner serene, pedagogical,
He cleans out the colons and mops up the commas
And clears up the thinking and eases the pain.

        Santa Teresa, forgive us our sins.
        Help us remember the light that wins.
        Console us and guide us this fateful day,
        For Gene McDonnell is going away.

Keeper of consoles, time-sharing master,
Leader of fights for the good and the true,
Help us to face our appalling disaster:
A world without logic, a world without you.
Stay us with carets, stay us with APL,
Help us to think in the Iverson way.
You, who survived in the city of scrapple,
Help us survive in the deep, dark, South Bay.

        Santa Teresa, forgive us our sins.
        Help us remember the light that wins.
        Console us and guide us this fateful day,
        For Gene McDonnell is going away.

Sharper than serpent’s tooth, Sharper than swords,
Sharp is the pain that we feel in our hearts.
Sharp his associates, Sharp his rewards,
Dull is our prospect when he departs.
Our blessings go with thee, O friend tried and true.
May the path that you take lead to happier scenes.
But know that we all will be thinking of you,

                    The APL Crew,
                    Itty Bitty Machines

P.S.
        Santa Teresa, forgive us our sins.
        Help us remember the light that wins.
        Console us and guide us this fateful day,
        For Gene the Sharpie has gone away.

— Michael Montalbano, on the occasion of Eugene McDonnell
leaving IBM to join I.P. Sharp Associates, 1978-11-16,
The I.P. Sharp Newsletter, volume 7, number 1, Jan/Feb. 1979
 

 

JAN Lee: I have a question from Peter Wegner from Brown University. “Both SNOBOL4 and APL achieve their attractiveness in part by their lack of declarations; that is, declarations force the programmer to plan ahead, and the attractiveness of SNOBOL and APL is due to the fact that programmers need not plan ahead. Should we encourage this attitude amongst programmers?”

Kenneth Iverson: Well, as I said at the outset, the ones that I wanted to duck, I’d ask Adin. You want to grab that one, Adin? The answer is no—he doesn’t want to. But he’s going to.

Lee: Basically, the question is that no declarations are required in either SNOBOL 4 or APL and that seems to be against the trend of software engineering.

Adin Falkoff: Right, and the second part of the question is—isn’t that going to cause programmers to suffer some kind of mental debilitation.

Lee: I think that’s a good paraphrasing.

Falkoff: And I’m reminded of a conference on programming systems for mathematics that was held in 1966 or 1967, in which the question was, “Should we have interactive systems because that’s going to cause a degeneration of the mathematical ability of the populace?” I think that the presence or absence of declarations has very little to do with the acceptability of the language. I think there are good technical reasons for not having them. By and large they tend to be redundant, and therefore incur many new rules, and thereby make life more complicated.

— Falkoff and Iverson, The Evolution of APL, Transcript of
Question and Answer Session, 1978-08
 

 

The 1979 ACM Turing Award goes to Kenneth E. Iverson, for his pioneering effort in programming languages and mathematical notation resulting in what the computing field now knows as APL, for his contributions to the implementation of interactive systems, to educational uses of APL, and to programming language theory and practice.

The A.M. Turing Award, the ACM’s most prestigious technical award, is given for major contributions of lasting importance to computing. Recipients are invited to give the annual Turing Award Lecture. The award, sometimes referred to as the “Nobel Prize” of Computing, was named in honor of Alan Mathison Turing (1912–1954), a British mathematician and computer scientist.

— ACM, Turing Award
 

 

Ms. Alvord conducted APL contests for her students for several years and permitted nonstudents to enter the contests as well. An engaging thing about her contests was that she awarded an official-looking medal to the winner. I can remember how proud I was to receive my first medal. (To appreciate this story you should realize that at the time I had been using APL for a dozen years and was working in IBM’s prestigious APL design group.) Well, the day after I received the medal in the mail at home, my colleague Paul Berry was on the same commuter train to our office in Philadelphia. With great pride I showed my medal to Paul, who looked at it and said, “Oh yes, my son Michael has two of those.” Talk about put-downs!: Michael Berry (now in the Boston office of I.P. Sharp Associates) was then a high-school junior!

— Eugene McDonnell, Recreational APL: Pyramigram, 1980-09
 


 

In the summer my family would all be at the shore in Sea Isle, NJ. I was the youngest of my cousins. My grandmother would look at me and say “JoeJackRosalieBarryPennyLinda” and I thought it was my full name. However, she was usually looking for a fourth for bridge. The older generation played bridge all day every day. Rosalie always got snagged and would spend the day inside. I realized that I should not become a bridge player or I would never get in the ocean. So I have maintained my resistance to the game or I would become addicted. It is sort of like a self designed “Bridge Anonymous”. I’ll watch your responses but I’m unwilling to go beyond dealing the cards. I’ve resisted studying the hands. Good Luck getting takers.

— Linda Alvord, responding to a J Forum message on a
“constrained bridge hand generator”
 

 

[Commenting on the empty vector:] I think we have the Arabs to thank for inventing zero, but I know that we have Dr. Iverson to thank for inventing nothing.

— Donald McIntyre, APL Users Meeting, 1980-10
 

 

Bill Gates had recently dropped out of Harvard and was keen on the possibilities of the coming wave of personal computers. This was before the IBM PC, but not much before. He had some knowledge of APL and thought of it as a possible language for the new machines. He was traveling across North America talking to anyone who would talk to him. Ian was on his list because of APL. Ian talked with lots of people who had crazy ideas. Gates happened to be the one who turned out to be right.

He cold-called Ian and asked for a meeting. Shortly after that meeting started Ian called me and asked if I would join them. The three of us chatted pleasantly in Ian’s office for some time. Then I gave Gates a tour of the data center and the development offices. I introduced him to whomever happened to be around and that included Bob. As far as I remember that was the end of it.

— Eric Iverson

Gates came into my office, and we talked a bit about development work. I asked him where they were going with APL. He said that they had tried building an APL interpreter, but gave up on the idea, because it spent all its time looking up names in the symbol table. I told him that was precisely why nobody did it that way, instead tokenizing APL code so that such time-consuming actions were performed only once. He shrugged that off, and switched the topic to his new project, a graphical front end to DOS, based on the Xerox work. That front end was Windows, of course.

— Bob Bernecky

[Editor note: The timing of Bill Gates’s visit to IPSA Toronto differs considerably between the two recollections. At the time, whether “recently dropped out of Harvard”, “before the IBM PC”, or “a graphical front end to DOS, based on the Xerox work”, Gates was not as notable as he is now and his visit was not seen as significant, and so the participants are now unable to recall the date and other details more precisely. I suppose we can ask Bill Gates.]
 

 

APL could have become a dominant language for the microcomputer if only some software company had developed an APL interpreter for early microcomputers based on popular microprocessors such as the Intel 8080 or Zilog Z80. In the 1970s, those who identified microcomputers with BASIC and viewed that language as an insignificant programming toy, could have entered the microcomputer market earlier by choosing an APL-based machine. In view of the popularity of APL, such a company could have derived substantial profits from selling its APL software — the same way Microsoft was paying its bills with the sales of BASIC. In fact it was Microsoft’s co-founder and APL’s vocal supporter Bill Gates who wanted to do just that. Microsoft had been developing its own APL interpreter since 1976, perhaps under the influence of IBM’s introduction of its APL-based IBM 5100 computer. “Equivalence with the 5100 was my goal,” explained Gates in his March 1979 interview for ETI Canada [“APL: Good for the Brain”]. After the success of Microsoft BASIC, first offered to the owners of the Altair 8800 microcomputers in mid-1975, “APL seemed like a great follow-on product,” continued Gates. However, in 1976, Microsoft was still a small software company carefully addressing market needs. FORTRAN got higher priority and by the end of 1976, only one person was left at Microsoft to continue the APL work. Microsoft FORTRAN was introduced in June 1977 and COBOL the following year. It was not until 1979 that Microsoft announced its APL-80 interpreter for the Intel 8080 and Zilog Z80 platforms. It was to be out in April 1979 and compatible with IBM’s APL.SV software. But in the end the Microsoft APL-80 proved to be vaporware and by the early 1980s, it was Microsoft’s BASIC and not APL that was installed on the majority of personal computers.

— Zbigniew Stachniak, Inventing the PC, 2011, p. 184.
 

 

An APL conference in the late ’70s or early ’80s had conference bags emblazoned with red printing, which due to poor quality rubbed off easily. At one point Brian Daly, IPSA Canada country manager, turned to Morgan Smyth, IPSA Toronto branch manager, looked him up and down and, while gesturing at the front of Smyth’s pants, said, “I trust that’s not lipstick?”
 

 

This reference manual describes STSC’s Nested Array System, an experimental research implementation of APL developed to explore extensions to the APL language. Among other proposals this system offers nested arrays, arrays in which each position can contain an array of any rank. Nested arrays can conveniently represent data which is difficult to represent in conventional APL data structures.

The purpose of this research is to develop extensions to APL which will make APL programmers more productive. The concepts in this manual can also be used to model processes which will later be rewritten in APL or another language. Explore and evaluate these concepts and use them to extend your thought tools.

The process of implementing the Nested Array System has focused on producing a fully functional system rather than an efficient system. Operating efficiency will be addressed at a later time.

STSC currently plans to offer the research implementation until January 1982. Selected features from this system will be provided in STSC’s production APL*PLUS VM System.

Among the many people whose ideas are included in this system are J.A. Brown, Kenneth E. Iverson, Michael A. Jenkins, E.E. McDonnell, Trenchard More, and Bob Smith. The Nested Array System was implemented by Bob Smith.

I would like to thank those who spent many hours reviewing earlier versions of this manual: Tom Edelson, Paul Jackson, Bob Korsan, Gene Mannacio, Bob McGhee, Don Scheer, and Roy Sykes, Jr. I am especially grateful to John Gilmore, Graham Prindle, Laurie Russell, Barbara Schick, and Bob Smith who contributed many useful items.

— Carl M. Cheney, Preface, APL*Plus Nested Array System
Reference Manual
, 1981-03
 

 

APL Blossom Time — A History in Verse

A nostalgic reminiscence of the early days of APL, remembered to the tune of The Battle of New Orleans.

Back in the old days, in 1962,
A feller named Ken Iverson decided what to do.
He gathered all the papers he’d been writing fer a spell
And he put them in a little book and called it APL.
 
Well… 

He got him a jot and he got him a ravel
And he revved his compression up as high as she could go
And he did some reduction and he did some expansion
And he sheltered all his numbers with a ceiling and a flo’.
 

Now Sussenguth and Falkoff, they thought it would be fine
To use the new notation to describe the product line.
They got with Dr. Iverson and went behind the scenes
And wrote a clear description of a batch of new machines.
 
Well…

They wrote down dots and they wrote down squiggles
And they wrote down symbols that they didn’t even know
And they wrote down questions when they didn’t know the answer
And they made the Systems Journal in nineteen sixty-fo’
 

Now writing dots and squiggles is a mighty pleasant task
But it doesn’t answer questions that a lot of people ask.
Ken needed an interpreter for folks who couldn’t read
So he hiked to Californ-i-a to talk to Larry Breed.
 
Oh…

He got Larry Breed and he got Phil Abrams
And they started coding FORTRAN just as fast as they could go
And they punched up cards and ran them through the reader
In Stanford, Palo Alto, on the seventy-ninety-oh.
 

Well a FORTRAN batch interpreter’s a mighty awesome thing
But while it hums a pretty tune it doesn’t really sing.
The thing that we all had to have to make our lives sublime
Was an interactive program that would let us share the time.
 
Oh…

They got Roger Moore and they got Dick Lathwell,
And they got Gene McDonnell with his carets and his sticks,
And you should’ve heard the uproar in the Hudson River valley
When they saved the first CLEANSPACE in 1966.
 

Well, when Al Rose saw this he took a little ride
In a big station wagon with a type ball by his side.
He did a lot of teaching and he had a lot of fun
With an old, bent, beat-up 2741.
 
Oh…

It typed out stars and it typed out circles
And it twisted and it wiggled just like a living thing.
Al fed it a tape when he couldn’t get a phone line
And it purred like a tiger with its trainer in the ring.
 

Now, there’s much more to the story, but I just don’t have the time
(And I doubt you have the patience) for an even longer rhyme.
So I’m ending this first chapter of the tale I hope to tell
Of how Iverson’s notation blossomed into APL.
 
So…

Keep writing nands when you’re not writing neithers,
And point with an arrow to the place you want to be,
But don’t forget to bless those early APL sources
Who preserved the little seedling that became an APL tree.
 

Dedicated to the pioneers of APL with respect and affection by J.C.L. Guest

— Mike Montalbano, A Personal History of APL, Appendix A:
APL Blossom Time, 1982-10
 

 

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:

 

The entry +.× is not permitted except by management and APL salesmen.

Explaining ×.+ places you in a special category.

Volume II, Number 6, March 17, 1971 reveals that the APL community could meet challenge with characteristic tongue-in-cheek:

 

The most interesting [entry] was from Roger Moore, I.P. Sharp Associates, Toronto, who points out that the “new improved” 5732-XM6 or 5736-XM6 executing ⍴B∧.=⍉B←500 1⍴1 in a CLEAR WS produces a register dump and a SYSTEM ERROR. He suggested that a call to the QUEND macro be inserted immediately after card 5272 of APLSVDOP in order to “destroy” his interesting inner product entry. His Post Script that another call to the QUEND macro after card 3712 in the same assembly fixes the bug encountered when something like ∧/125000 1⍴1 is attempted. (Way to go IBM!)

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.)

— Arlene Azzarello, APL QUOTE-QUAD: The Early Years, 1982-11.
 

 

John Gilmore never finished high school and went to work for STSC. He later became the fifth employee of Sun Microsystems and founder of Cygnus Support.

John was well-known for being eccentric. He once rode to the STSC offices in Bethesda on a motorcycle, long hair streaming back from his head, wearing a skirt. At that time Bethesda was booming with construction and he elicited wolf whistles from the construction workers in the area as he went by.

— Bob Smith and Mary Stanley
 

 

At the APL83 conference in Washington DC, Dyalog APL Version 1.0 was presented to an unsuspecting audience for the first time: the first second-generation APL interpreter, implemented on Unix — the operating system for the next generation of computers. Dyalog APL was clearly ideally positioned for the emerging markets of the future!

— Gitte Christensen, Dyalog at 25, 2008-09, page 1
 

 

David Crossley: Our schedule was to have a working interpreter within twelve months, with the objective of presenting Dyalog APL to the world at the APL83 conference in Washington DC. We monitored progress and revised our estimates at monthly intervals, or sometimes on an ad hoc basis. We met our objective and presented our product at Washington in April 1983, complete with user manuals, on a number of Unix platforms kindly loaned by the manufacturers.

One rather large and heavy minicomputer arrived rather worse for wear, having been dropped by the delivery people! Our sponsors were not amused — and neither were we.

Not all the scheduled features were complete, but certainly the essential features — and a great deal more beside — were achieved.

John Scholes: Pete [Donnelly] used to organise the conference booths, I think. I spent most of the time at APL83 behind a curtain coding, because we had problems with the compactor. It’s surprising Pete still has any hair left, with the organising and borrowing of machines, making sure it all arrived and had Unix on it. It was horrific.

Dyalog at 25, 2008-09, page 17
 

 

Peter Donnelly: This was entirely my fault. I was desperate to win a benchmark and at the time the Gould was the fastest Unix box on the market. This might have been the port where the normal mechanism to detect the end of a pipe (EOF) didn’t work, so Geoff ended the message sent to or from an AP with the string reteerts ffoeg .

John Scholes: I always had it in mind to phone Dyalog support one April Fool’s Day, with a heavy mid-European accent, claiming to be Mr Reteerts Ffoeg. “I hev problem vis APs on Gould 3000; ven send my name across the interface, APL hengs …”

So the Gould took — I don’t know how long the Gould port took; it could have been months. Typically they were — Geoff may have a different view, but probably — they would be a month. People would say: Have you got it on so-and-so? And Geoff and I used to mutter in the background and suggest that we say if you want it, charge them twenty grand a port. But, as I said, every two men and a dog with a garage used to invent a Unix machine and someone would come along and say, can you port your APL to it; if you port APL to this machine we’ll buy it. We’d spend a couple of months porting to it, they’d go out of business, and we’d cross it off and carry on.

Pete has a wonderful poster — there’s a photograph somewhere — of one of our booths at one of the exhibitions. It says, Dyalog APL is now available on — machine after machine — and none of these machines exist anymore. They came and went. Near the top was a “Bleasdale”, named after the company’s founder, Eddie Bleasdale.

Amdahl     Fortune     Miniframe     Sun
AT&T Gould NCR Tower Torch
Bleasdale HP9000 Perkin-Elmer Uniqx
Cadmus ICL Perq Pyramid VAX
Diab DS90 MASCOMP Ridge Zilog

Geoff Streeter: On the list of machines is the ICL Perq, which was rebranded “Three Rivers Perf”. It may not exist anymore, but it was the forerunner of the Apple Mac. I remember being stunned at the interface, complete with a tablet and “puck”. These days, think Wacom for that sort of tool. The Perq was strange because pointers to “words” were 4 bytes but pointers to characters were 6 bytes. That caused some fun.

The Gould port was not a long port. It was, however, a stressful one. The only serious problem was the alignment-of-doubles issue. Still, solving that paid enormous dividends later, when every RISC chip turned out to have the same constraint. Intel 686 (Ppro) and later also ran faster with doubles aligned on 64-bit boundaries.

Dyalog at 25, 2008-09, page 23-24
 

 

One time during the Brezhnev era, Jim Ryan visited Moscow, but forgot to bring toothpaste. He went down to the hotel front desk to buy some. After taking a rouble from Jim, the desk clerk took out a tube of toothpaste. But the rouble didn’t buy you a tube of toothpaste. Instead, what you got was a squeeze from the tube, and you were supposed to have a toothbrush with you to receive it. Since Jim did not have a toothbrush with him, the clerk proceeded to squeeze out toothpaste onto his finger.

— Eric Iverson
 

 

APL is both a programming language and a system that supports the writing, editing, using, saving and sharing of programs. It is appropriate to think of them as one since all use of APL involves both in an integrated way.

The two are interactive and mediated from terminals so that personal involvement is continual and natural and — for computer systems — relatively effortless. As this books so admirably illustrates, one can “sneak up” on the mastery of APL starting from an almost negligible investment in language and system techniques. At the other extreme, once one has mastered APL one has accomplished something of permanent value and benefit: programs of great value and interest can be written by one person that in other languages would require a team!

The power of the APL language comes from its direct manipulation of aggregates of data in the form of arrays. Everyone recognizes that computers excel when aggregates are manipulated, where the descriptive details of a function do not grow with the size of the aggregates being manipulated, and where one description suffices to cover a large population of aggregates. Most other languages require their programs to penetrate these structures, manipulate the components individually even in order to achieve a uniform effect. It is not surprising that APL programs are significantly shorter and more lucid than programs in most other languages. In programming, clarity is not a consequence of discursiveness or low information density in the program text.

Because of its power in aggregates and component manipulation, APL has many more primitive functions than other languages. Rather than adding to complexity, this multiplicity actually simplifies. When a typical processing need arises, APL has a primitive function that naturally performs it. Learning the properties and uses of these primitives adds but a little to the labor of APL mastery. Shortly after encountering a function one sees how it “falls in” with others already understood and soon it begins to participate in program construction in a natural way.

Programmers are surprised and pleased to discover that all APL primitive functions get used and that none are arcane and of questionable utility. Even more, one soon acquires skill in combining these functions artfully into phrases commonly called “idioms”, that are frequently used and that extend every progrogrammer’s arsenal of programming constructions. No other language supports such a rich development of idioms, or even permits one to think idiomatically.

It is often said of APL that it provides too much choice for programmers — there are too many ways to perform desired functions, and among a group of APL programmers the same task will often lead them to create quite different programs. Consequently, reading APL programs is not trivial. Considering that APL text is often one-third to one-fifth the size of equivalent text in another language, APL programs turn out to be as understandable as those in other languages. The very richness of the set of APL functions that makes its mastery so challenging makes the learning of other languages much easier once APL is learned.

APL has its own operating system and the use of APL is much the same (but alas not identical) on all computers, from the smallest and cheapest to the largest and most expensive. Unlike BASIC, for which each computer has its own idiosyncratic version, APL is a paragon of constancy between machines.

The workspace in which the user’s APL traffic is organized is a natural, simple and friendly environment in which to compute. Its permanence is set by the individual user and can comfortably be thought of as an immense personal blackboard. Indeed, each user has a large number of such blackboards identified by chosen names and between which the user can flit and transfer data and function. Best of all, a workspace can be frozen, suspended in time, saved and resumed in the future as though no time has passed. A collection of workspaces forms a library and the user has access to both public and private libraries to which he has been granted access.

More idiosyncratic than the workspace, APL supports large files — but differently on most machines. A recent development in APL is heterogeneous nested arrays. Their value is unquestioned, but the permanence of their definition and form within the APL language is still under study. Like all living languages APL changes, but more slowly and carefully than most others. Unlike most other languages APL affects the way one thinks about programming: familiarity with BASIC or PASCAL does not automatically translate over to expertise in APL.

This is not a book on programming or even programming in APL. Instead, it is a carefully organized journey through the APL language and system. The journey is amazingly smooth and painless. The book reads very well. One does not have to be a computer specialist to understand the material. The exercises are by and large elementary, though a few difficult problems are scattered throughout. No book on APL can present a complete specification of the APL language and system and still be readable. However, this book, in conjunction with an APL system, provides the basic spectrum of insights into APL behavior:

(a)  Read the material on issue X.
(b) Do a sample of the exercises.
(c) Execute some obvious instances of X at the terminal.
(d) Pose questions about X of the form “What if … .” Execute them at the terminal. Between the results obtained and a re-reading of the text one will soon say, “Ah, that is why this happened and I now understand issue X.”

By the time one has read the book, the details of APL behavior will have become so engraved in one’s skull that one will think naturally at the programming level but perform at the primitive function level. One will have become an APL programmer.

— Alan J. Perlis, Foreword to APL: An Interactive Approach,
Third Edition, Wiley, 1983-08
 

 

Probably the most interesting case involved a large customer in Copenhagen, who approached the national phone company with a request that they needed local dial connections in all the locations where they had subsidiary companies, which included North America, the Far East, Australia, Japan and numerous locations in Europe. They needed such a network in order to remain competitive in their very competitive world. The phone company told them that such a network was currently beyond their capability, but could well be available at some time in the future. So with only a minor push from the Danish government, the phone company agreed to the temporary installation of our full software system including communications, pending the availability of a locally-provided solution.

As a face saver the national PTT would like to be paid for all traffic in each direction on the line between the customer’s site and our office in Copenhagen. We agreed to that, and since the PTT had no means of measuring that traffic, we offered to do it for them and provide the monthly information that they needed in order to bill us. We did that, but no invoice was ever received.

— Ian Sharp, I.P. Sharp Associates and the Telephone Monopolies, 2005
 

 

Joey Tuttle keeps meticulous records of his e-mails and has a way of quickly and accurately finding old messages. His reputation in this regard was such that sometimes Ian Sharp would ask Joey for copies of old messages in which Joey was either the sender or a recipient. Precise dates in this collection are made possible mostly because Joey was able to retrieve the relevant messages.
 

 

David Steinbrook and I became friends while he was in Philadelphia, and I was running the IPSA Miami branch. Aviation business took me to PHL several times. Anyway, for a reason I forget, David came to Miami. As the genial host that I was, I took him to the beach. He said he had never seen the ocean before. That blew me away. He was a genuine individual with musical skills beyond normal comprehension.

— Brian Oliver
 

 

Karen Thompson (Cynthia Rhodes): How long you say you’ve been doing this?

Jack Ramsay (Tom Selleck): I just sort of fell into it by accident. I kind of liked it, so I took some night courses in robotics, APL. All of a sudden, I just seemed to know more about it than anybody else.

Runaway (film), 1984
 

 

Ken visited us now and again and I remember once I was struggling with translating his An Introduction to APL into Danish. I told Ken that I was completely unable to come up with a good translation for the APL function ravel, which had previously suffered the prosaic name “make list of” in Danish. [He said,] “You should use the word you use when you have knitted something and you then undo the knitting — when you are removing the structure and are left with the thread.” Suddenly the term ravel made sense to me in a completely different way.

— Gitte Christensen, Vector, 2006-08
 

 

Ken named APL/J primitives carefully, resulting in names that are apt, short, and mnemonic, for example, ceiling, floor, ravel, nub.

During a discussion on Latin squares and Greco-Latin squares, Ken wondered out loud why they were called “Greco-Latin squares”. I suggested that it was because they used Greek and Latin letters (and “Latin squares” because they used Latin letters), but that it was only my guess. Ken responded in an exasperated voice, “I bet you are right! That makes as much sense as the name ‘lambda calculus’!”
 

 

Brooker: It is not obvious to me that these two symbols for FLOOR and CEILING have a great deal of mnemonic value.

Iverson: Yes, but once you have read it, you can remember it.

— Kenneth E. Iverson, Formalism in Programming Languages,
Discussion, 1964-02
 

 

If x is any real number, we write

    x = the greatest integer less than or equal to x (the “floor” of x);
x = the least integer greater than or equal to x (the “ceiling” of x).

The notation [x] is often used elsewhere for one or the other of these functions, usually the former; the notations above, which are due to K.E. Iverson, are more useful, because both functions occur about equally often in practice. The function ⌊x⌋ is sometimes called the entier function, from the French word for “integer”.

— Donald E. Knuth, The Art of Computer Programming,
Volume 1, Section 1.2.4, 1968
 

 

We start by covering the floor (greatest integer) and ceiling (least integer) functions, which are defined for all real x as follows:

    x = the greatest integer less than or equal to x;         (3.1)
x = the least integer greater than or equal to x.

Kenneth E. Iverson introduced this notation, as well as the names “floor” and “ceiling”, early in the 1960s [A Programming Language, page 12]. He found that typesetters could handle the symbols by shaving the tops and bottoms off of ‘[’ and ‘]’. His notation has become sufficiently popular that floor and ceiling brackets can now be used in a technical paper without an explanation of what they mean. Until recently, people had most often been writing ‘[x]’ for the greatest integer ≤ x, without a good equivalent for the least integer function. Some authors had even tried to use ‘]x[’ — with a predictable lack of success.

— Graham, Knuth, and Patashnik, Concrete Mathematics,
Section 3.1, 1989
 

 

Another notational step that was taken at that time, and this has to do with cleaning up the syntax, was the dropping of the closing symbol for absolute value, floor, and ceiling. I have observed that in certain ivory towers of pure mathematics they have adopted the floor and ceiling symbols still with the pair about them, and I estimate that in roughly another decade they will get around to dropping the second.

— Adin Falkoff, APL\360 History, 1969-07-11
 

 

In the early years of the struggle finally solved by trains, specifically to do what (f+g) does in calculus,

   (f+g)x  ←→  (f x)+(g x)

Arthur Whitney and Ken Iverson thought they’d achieved a breakthrough. As documented in Practical Uses of a Model of APL, 1982, section E, (translated into modern Dyalog APL),

   ⍨  ←→  {0=⎕nc '⍺': ⍵ ∇ ⍵ ⋄ (⍵⍵ ⍵) ⍺⍺ ⍵}

It’s a breakthrough because

   ⍺ f⍨g⍨h ⍵  ←→  (g ⍺) f (h ⍵)
     f⍨g⍨h ⍵  ←→  (g ⍵) f (h ⍵)

The symbolwas then unnamed. One day, as Arthur walked into Ken’s office, Ken said, “It should be called til. Til, get it?” Arthur didn’t get it.

What is the explanation? In the dictionary:

   til  n.   the sesame plant.

Also, becauseis part of a magic phrase that opens doors (“open sesame”).
 

 

A search of the literature found no mention of the term “bubble sort” earlier than A Programming Language (1962). I can believe that Iverson invented the name. Page 217 of A Programming Language says:

The result is to bubble each item upward in the sequence until it encounters an item with a smaller (or equal) key and then to leave it and continue bubbling the new smaller item. In particular, the smallest item is bubbled to the top.

It is consistent with his use of previously non-technical but descriptive, picturesque, and mnemonic terms in technical subjects. “Floor” and “ceiling” from the same period are other examples which come to mind.
 

 

The three columns of Table 1 provide the APL symbol, a name for the symbol, and a transliteration scheme for use with the ASCII character set ...

  Pike  
  Spike
  Pine
  Spine

— Kenneth E. Iverson, A Dictionary of APL, 1987-09
 

 

There is no reason why the square root function couldn’t be part of APL. In fact, when I designed the APL printer trains for the IBM 1403 printer, I included the radical symbol on the train, in the expectation that one day this function would be added to APL. It would be a scalar function. In its monadic use √⍵ would give the square root of . In its dyadic use ⍺√⍵ would give the-th root of . For example, 3√⍵ would give the cube root of . Anyone using APL informally (for example, in writing a mathematics text) could use this symbol.

— Eugene McDonnell, A Perfect Square Root Routine, 1986-07
 

 

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 “APL ’85” rendered in large yellow strokes, interpersed in a random matrix of APL characters. As is customary, the pattern on the puzzle itself was reproduced on the box. I did not open this trophy for a long time, and when I rejoined IPSA in 1986 I left it on a table in my office, unopened.

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.
 

 

The new receptionist at IPSA headquarters in downtown Toronto reported with alarm that “a hobo had just walked into the office”. That’s not a hobo, we reassured her, that’s our vice president.

— Cam Linton
 

 

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.
 

 

Reasons for Liking

•  It’s kind of cute, possessing a radial symmetry.
It denotes a function for which conventional mathematical notation [1] does not have a good symbol:
   ⍟y   ←→  ln y  or  log y
x⍟y  ←→  logy
It alludes to 0=1+*○0j1 , the most beautiful equation in all of mathematics [2], relating in one short phrase the fundamental quantities 0, 1, e, π, and 0j1 and the basic operations plus, times, and exponentiation.
It is a visual pun — the symbol looks like the cross section of a felled tree, i.e. a log [3].

— Roger Hui, My Favorite APL Symbol, 2013
 

 

The two hardest problems in programming are naming things, garbage collection, and off-by-one errors.

— Raul Miller, J Forum message, 2013-01-21
 

 

There are 10 kinds of programmers, those who understand binary and those who don’t.

— John Scholes
 

 

Chapter 1: History and aims of the I-APL Project

At the International APL conference in Manchester in July 1986 an idea of Paul Chapman’s was taken up by a group of enthusiasts. The idea was that it would be possible to write a full ISO compatible APL interpreter in 25K which would run on school and home computers. The I-APL project was founded with a committee of five: Ed Cherlin, Editor of APL Market News, and Anthony Camacho, then secretary of the APL Association, were to be joint chairmen; Norman Thomson and Howard Peelle were to be education officers and David Ziemann was the technical expert. Fundraising began that summer and by October there was sufficient to authorise Paul to begin work.

Project Aims

The project aims were to write and issue and APL interpreter which would run on as many school and home computers as possible, and be available in any part of the world. There would be no charge for the software but there would have to be some charge for the medium and for copying and also for the books which would go with it. The project and its supporters believe that if APL is to grow it must be made available in schools. Experience has taught us that efforts to interest school teachers cease to be effective as soon as the teachers discover that APL would be very expensive for them to try. By removing the cost barrier it was hoped that many people could be persuaded to try APL and that many APLers would be encouraged to introduce APL to teachers. The project has always seen the production of the interpreter as the first step and probably not the hardest step in the difficult job of getting APL into widespread educational use.

Progress

Paul Chapman finished the interpreter on 4 July 1987 and debugging, optimisation, improvements and customisation to the PC occupied the next six months. Version 1.0 was issued in January 1988 and we sold out of manuals in August 1988. Version 1.1 was completed in October 1988 and cures all the V.1.0 bugs reported to us as well as adding some new facilities. The most important of the new features is the option to send output to the screen through the BIOS; this allows PC clones whose display is not hardware-compatible to scroll the display correctly, though slower than the standard version.

The job of porting I-APL requires intimate knowledge of the operating system and reasonable competence at producing machine code programs for the chosen machine. What a porter has to do is to write an interpreter for the specially invented language DE in which the APL interpreter is written, and link it to the operating system of the machine for input from keyboard, for output to screen, printer, etc. and to give at least )SAVE and )LOAD access to the filing system for workspaces.

— Anthony Camacho, Paul Chapman, and David Ziemann,
I-APL Instruction Manual, 1989
 

 

DE — Paul called it “development environment” and said he’d originally called it “development environment language” but changed the name when he found he was unaccountably losing files!

— Anthony Camacho, J Forum message, 2013-12-05
 

 

In early 1988 a new Toronto city by-law required that every company establish a smoking policy, consisting of designated areas on the company premises where smoking is permitted. (And if no smoking policy can be agreed upon, then no smoking is permitted on the premises.) After much discussion at IPSA, the designated smoking areas were some common rooms and Ian Sharp’s office. When Ian heard of this, he bristled at the idea of his office being an exception and asked to have it removed from the list.

— Roger Hui and Joey Tuttle
 

 

In the 1980s the IPSA head office was located in the Exchange Tower in downtown Toronto. Security was tight since the Toronto Stock Exchange was in the same building. At night and during weekends, you had to show a security badge to the guard and sign in to gain entry. One guard became noted for refusing entry to Paul Reichmann, the real-estate magnate, because he did not have a security badge. I spoke to the guard about it, and he told me that he was quietly told to not do that any more WRT Reichmann.

I guess in this regard Reichmann is no Ian Sharp because the quietly-told instruction was not countermanded. I know this because I witnessed Reichmann gaining entry with just a smile at this same guard.
 

 

A party was held at Dick Lathwell’s house to celebrate Agness Lathwell’s birthday. During the party there was a knock at the door with a delivery of a dozen roses. Everyone assumed that they were for Agness, but it developed that the flowers were from Hal Carim to Marie Vilmansen, on the occasion of the first anniversary of their divorce. The gesture immediately put every man in the party in jeopardy with their wife/partner/girlfriend.

— Joey Tuttle
 

 

A+ is a descendant of the language “A” created in 1988 by Arthur Whitney at Morgan Stanley. At the time, various departments had a significant investment in APL applications and talent, APL being a language well-suited to the manipulation of large arrays of numbers. As technology was moving from the mainframe to distributed systems, there was a search for a suitable APL implementation to run on SunOS, the distributed platform of the period. Not happy with the systems evaluated, Arthur, motivated by management, wrote one geared to the business: large capacity, high performance. He was joined in his efforts as the language took on graphics, systems’ interfaces, utility support, and an ever-widening user community. Over the course of the next few years, as the business began to reap tangible value from the efforts, the pieces were shaped into a consistent whole and became A+. The “+” referred to the electric graphical user interface. An A+ development group was formally created in 1992.

A+ soon became the language of choice for development of Fixed Income applications. It offered familiarity to the APL programmers, the advantages of an interpreter in a fast-paced development arena and admirable floating-point performance. A significant driver was that many of Morgan Stanley’s best and brightest were the developers and supporters of the language. Through their practical application of technical values, they instilled fervent enthusiasm in talented programmers, regardless of their programming language backgrounds.

— Anon, The History of A+
 

 

This photo is one of my favorites ever, that I took when I was working in NY with Arthur at Morgan Stanley in the late 1980’s. I am fairly certain this unscheduled meet up happened at APL89 in NY.

The photo was spontaneous as the three of us were talking and I just stepped back and said “now smile guys” and looked “around the camera” and clowning around so they weren’t ready for it, then just snapped … it lined up beautifully.

— Rob Hodgkinson
 

 

 
 

One summer weekend in 1989, Arthur Whitney visited Ken Iverson at Kiln Farm and produced—on one page and in one afternoon—an interpreter fragment on the AT&T 3B1 computer. I studied this interpreter for about a week for its organization and programming style; and on Sunday, August 27, 1989, at about four o’clock in the afternoon, wrote the first line of code that became the implementation described in this document.

Arthur’s one-page interpreter fragment is as follows: …

— Roger Hui, An Implementation of J, Appendix A. Incunabulum,
1992-01-27
 

 

Years later, talking about “the one-page thing”, Arthur Whitney quipped that he still wanted to do it in one page, but using n-point font. (The value of n increases with each retelling of the story.)
 

 

Why “J”? It is easy to type.

— Roger Hui, An Implementation of J, Preface, 1992-01-27
 

 

J’s. A step up from the ordinary.

The New Yorker, 1990s
 

 

The J dictionary begins thus: “J is a dialect of APL, a formal imperative language.” In talking about the difference between a language and a dialect, Ken often cited the aphorism that a language is a dialect with an army and a navy.
 

 

In October 1989, a couple of months into the J work, Ken and I were working in his home office as was becoming usual. I told Ken that I was going on vacation to the Far East for a couple of weeks. Ken responded by saying that then he too would be going on vacation in that time. I commented that that was quite a coincidence. It was no coincidence, Ken said, because on a project like this the key people should coordinate their activities.

Jean was in the room during this conversation. She didn’t say anything but gave me a long hard look, which I interpreted to mean, “Who is this guy who has such an influence on my husband, and what are they working on?”
 

 


 

 

On 1993-03-17, I was working for Morgan Stanley in New York City. On that day I was scheduled to fly to London, so I took a taxi into work with my luggage from Larchmont to the MS offices in mid-town Manhattan on 49th Street. I arrived at work at around 0700. At around 0800 I got up from my desk to get a snack from the canteen. As I did, I realized that I didn’t have my wallet.

Wracking my brain for what could have happened, I realized that I might have dropped my wallet as I got out of the taxi after paying the driver. I telephoned the taxi company on the chance that they may have it. Then I did a naive thing, a Canadian kind of thing. I went downstairs to the street to look for it.

And there it was! Just sitting there curbside, plain as day, in mid-town Manhattan for about an hour. And it was full of cash too, on account of my going to London later that day.

You don’t have to be Irish to be lucky on St. Patrick’s Day.
 

 

One time, on returning to New York from London (perhaps the same trip that began so auspiciously as recounted in the previous anecdote), I took a cab ride from JFK to mid-town Manhattan which cost $90. How so?

As I exited Customs and Immigration and headed towards the long line-up for taxis, I was met by a person holding a clipboard saying, come this way sir. I went that way and met a driver in a nice suit who reached for my suitcase and directed me to a nice car parked nearby, no lining up required. Shortly after another passenger joined me in the car, and the car was underway. Before it left the terminal complex I realized that I made a mistake, but it was too late. The car went through some industrial areas not normally on the way to mid-town Manhattan, but I did reach my destination without incident. Of course by that time the driver can charge whatever he liked. He liked $90.

Viewed from a couple of decades removed, I can appreciate the scam for its expert exploitation of psychology: The mark had just been on a long flight, then conditioned by following instructions — do this, go that way, show your papers, etc. The subtle intimidation by driving through an industrial area was a deft touch.

A few weeks later, I traveled to San Francisco on a speaking gig with the Bay Area APL Group. There, I took a city bus from SFO to Palo Alto. It was an enjoyable ride in brilliant sunshine along El Camino Real, stopping at California Avenue which was only a short walk from where I was staying at the Hotel California. The fare was $1.80, something like that.
 

 

When I mentioned “computer science”, Ken said, “Any field of study that has the word ‘science’ in it probably isn’t.” This is how mathematicians make friends.

— Arthur Whitney, Vector, 2006-08
 

 

It’s well-known that a lot of programming languages come from Alberta. Probably less well-known is the fact that good languages, like APL, come from northern Alberta. Java is from Calgary.

— Arthur Whitney, Vector, 2006-08
 

 

You may have seen in recent news that a fellow named Larry Tesler died—he is credited with the invention of cut/copy/paste. He also was a strong believer in programs not having modes.

It was on March 18, 1995 that Dick Lathwell and I traveled from Aptos to Palo Alto where we picked up Eugene McDonnell and continued on our way to Berkeley to attend a 50th birthday celebration for Charles Brenner—as a birthday gift, I gave Charles a CD of Dinu Lipatti playing some Chopin that was recorded in 1945—the year Charles was born, he thought it was great and was a big fan of Lipatti and Chopin.

Anyway, as we were driving up 101 to cross the Oakland Bay Bridge, Eugene pointed at a car passing us exclaiming, “That fellow is going to Charlie’s party!” and added he knew that because the license plate was NOMODES and he knew that driver was Larry Tesler. Indeed Tesler was at the party, along with Charles’s other college buddy Douglas Hofstadter—it was definitely a mathematician’s party! I have some fond memories of that too.

— Joey Tuttle
 

 

In the autumn of 1996, Jim Goff took me for dinner to a tiny (only six or seven tables in a small room) Thai restaurant in Philadelphia. After dinner, I entertained Jim with a description of the “Deuce” machine, a development of Alan Turing’s “ACE”.

I described how programming consisted of arranging instructions around and around the “mercury delay lines” memory, interleaved to give the last instruction time to execute before the next one passed under the read-head. I probably used my arms to show this arrangement.

If you didn’t leave enough of a gap between instructions, the processor would have to wait for the next one to do a complete lap before it could be executed. I probably gesticulated while explaining this.

The machine sported a large dial (which I probably illustrated with my hands) showing the “efficiency” of the running “programme”. 100% efficient meant that the processor was never kept waiting for the next instruction. I made a joke that it would be useful for modern computers to have an efficiency dial! I probably laughed at my own joke.

I was about to explain Deuce’s beautiful and elegant boot sequence when I detected flagging interest from my audience. (I’m sensitive to this sort of thing.) Looking up, I noticed that the woman at the next table seemed to be somewhat distressed. She said, “Do you know we’ve just been robbed? Didn’t you see the man with the gun?”

Then the tiny restaurant filled with large policemen: “Was it a big gun or a small gun?”

Apparently, the robber had gone from table to table demanding cash and jewelry. Perhaps he was perplexed by the strange, crazy man, talking gibberish while waving his arms around and giggling, and so left us alone.

Postscript. I told this yarn to a group of APL implementers at one of the Minnowbrook conferences. At the end of the story, after a thoughtful pause, someone responded: “I started programming on a three-operand addressing machine.”

— John Scholes
 

 

Lifetime Warranty

As a present or former student, you have the right, always and forever, to come and see me, to call me, to e-mail me, to talk to me, to ask for letters of recommendation, to ask questions — about your courses, your degree, your future schooling, your career, your life; I will never be “too busy” to see you.

The fine print
•  You may always come and see me. However, this may involve making an appointment to be sure I’m available.
•  You may ask anything. However, I may not be able to give you the answer or I may not know the answer. If so, I will tell you.
•  Once an appointment has started, you have priority over other students. For example, if we have an appointment, and another student drops by, your appointment takes priority.

— Lee Dickey, Lifetime Warranty
 

 

After a satisfying Thanksgiving dinner Eugene McDonnell and his family went for a walk around the neighborhood. As they passed by the Jobs residence Eugene caught a glimpse through a window of people enjoying dinner around a table. But Steve Jobs can be seen in another room, tapping at a computer. Eugene thought to himself, “Isn’t that too bad! Can’t even enjoy a Thanksgiving dinner.”

The following week came the Pixar IPO, which sold 6.9 million shares at $22/share. Steve Jobs’ 80% holding of Pixar stock was valued at $1.1 billion after the IPO.
 

 

How do you get to X from New York? You head west until you smell it, then head south until you step on it.

— Eugene McDonnell, New York born and raised
 

 

In January 1999, Ken and Jean Iverson visited Eugene McDonnell in Palo Alto. Eugene held a dinner party in their honor on the thirteenth. In attendance were Eugene and Jeanne McDonnell, Ken and Jean Iverson, Arthur Whitney and Janet Lustgarten, Jim and Karen Brown, Paul and Sachiko Berry, Charles Brenner and Sarita Berry, Larry and Beverly Breed, Harry Saal, Ken’s nephew Derrick Iverson and his wife and new baby, David Steinbrook, Joel Kaplan, Dick Dunbar, Joey Tuttle (who flew in from Boston), and one more.

One of the events of the party was to have been a telephone call from Kyosuke Saigusa in Japan. During the party, Eugene went to make the phone call to Japan as prearranged. He came back a few minutes later, perplexed, saying that he only managed to reach Mrs. Saigusa, who said that Mr. Saigusa was not available.

At that point Saigusa-san walked in through the front door, explaining that he was not available by phone from Japan because he was there in Palo Alto.

— Joey Tuttle
 

 

Years ago, I (was) volunteered to give an impromptu “what’s APL” elevator pitch to some Microsoft engineers. I stood up and started:

“Um, APL’s only data type is the array …”

“Er, APL’s primitive functions take arrays as arguments …”

Someone in the audience piped up: “That’s just as well, then.”

— John Scholes
 

 

In Scranton in 1999 during one of the sessions I was sitting next to Ken, and he leaned over and said to me—in his impish way—John, what is an array? Now I knew better than to rush into an answer to Ken. I guess I’m still working on my answers to that question.

— John Scholes, Vector, 2006-08
 

 

My attempt: An array is a function from a set of indices to numbers, characters, …
A rank-n array is one whose function f applies to n-tuples of non-negative integers.
A rank-n array is rectangular if there exist non-negative integer maxima (s0, s1, …, sn-1) such that f(i0, i1, …, in-1) is defined (has a value) for all ij such that (0≤ij)^(ij<sj). (s0, s1, …, sn-1) is called the shape of the array. etc. etc.

This definition accommodates:
  • APL/J rectangular arrays
  • J sparse arrays
  • Infinite arrays
  • Associative arrays (dictionaries)

APL rectangular arrays up to now have been implemented by enumerating the array elements in row major order (for indices (0, 0, …, 0), (0, 0, …, 1), etc.). But we know that there are ways to represent a function other than enumerating the domain and range of the function.

— Roger Hui, e-mail to Jim Brown, John Scholes, and
Bob Smith, 2010-10-12; What is an Array?, 2010-12-29
 

 

First-thingy in A: An opration [sic] that for A, an array, returns an array B, defined as follows: …

— International Standard ISO/IEC 13751:2001(E),
Programming Language Extended APL, 2001-02-01, page 22
 

 

Andrew North is an expert in statistics (co-author with David Foot, The Use and Misuse of Econometrics, 1975), and a cruciverbalist. I did help him one time when he was stuck on a 10-letter word with the clue, “designed to give a bishop a long career”. Answer.
 

 

As others have recounted, Ken was deeply interested in words, their use and their etymology. He indeed did read the dictionary, and kept a copy of the American Heritage Dictionary (along with other dictionaries) by his easy chair for ready reference. He especially encouraged me to consult the section on Indo-European roots in the back of the AHD, which makes deep and uncommon connections between words.

Many of Ken’s relatives and friends received from him the AHD as a present. I myself did not because I’d already owned one years before I met Ken. In fact, I gave him the third edition of the AHD as a present.

I think nothing I had ever done impressed Ken quite as much as when I found the word “rhematic” (meaning, pertaining to the formation of words), a word he had been searching for for some time. Thus the phrase “rhematic rules of J” made its way into the J dictionary.

— Roger Hui, Remembering Ken Iverson, 2004-11
 

 

Since September 2005 considerable time and energy had been spent on compiling and editing Ken Iverson Quotations and Anecdotes. The work received validation of sorts in 2007, when Richard Bookstaber quoted and used material from it without attribution in his book A Demon of Our Own Design (pages 44 and 45).
 

 

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 “Mooreiana” was what Eugene had been calling the collection of Roger Moore stories since 1986 or earlier. The possibilities are endless! Tuttle-Tales, Scholisms, Krombergers, Hui-Stories, …
 

 
BC You have this four-year itch to write a new programming language, so you’re coming due. Are the constraints on the problem any different? What’s the new language going to look like?
AW     It will probably be 95 percent the same. It’s the same semantics: noun, verb, adverb—same data types, same functions. But I like to try different things under the covers. For example, I like to try different memory allocation schemes. It’s all call by value but reference count[ed], which is kind of amazing when you think about it, so there’s no garbage collect. Everything is reference counted; when it’s free, you know immediately so you get good reuse. Under the covers, I play with different things. For example, if you’re doing a vector operation and the reference count is one, well, then reuse the vector. I also always try to make the code smaller.
BC Are you actually redoing the implementation, or are there going to be semantic differences as well?
AW The implementation is 100 percent new. I write everything from scratch, so the C code is entirely different but the semantics are about 95 percent the same.
BC You start over in terms of your C code? You take all that and throw it out?
AW Yes, completely.
BC What does it feel like to part with all that code that’s so lovingly created?
AW I love starting from scratch—and it’s stupid because doing the parser, tokenizer, and printer takes me months.
BC Do you find that you can come up with a better solution?
AW I think they’re getting a little bit better, but I think I’m converging.
BC Is that advice you would give to practitioners: to throw out more?
AW Yes, but in business it’s hard to do that.
BC Especially when it’s working!
AW But I love throwing it all out.

— Bryan Cantrill, A Conversation with Arthur Whitney, ACM Queue,
Volume 7, Issue 2, 2009-02
 

  Where do you do most of your programming?
In the garage. I have to. I live in Palo Alto.

You like short programs and simple languages, some might say your languages are cryptic.
Terse, yes. Cryptic, no. I like to simplify things: shorter programs, fewer primitives, smaller systems to run on, all of which makes for more productive, more cost-efficient programming.

An Interview with Arthur Whitney, 2004-01-04
 

 

The only program which stands a chance of being correct is a short one.

— Arthur Whitney
 

 

Ken told me of an “indefensible” attack: “APL/J is easy for you because you guys are geniuses.” I mean, what was he going to say?

I found out recently that Ken actually had a pretty good parry …
 

 

… At one point I remember a vice president trying to convince me to do something in a different way and I kept trying to convince him that the reason we were successful was because we used our own tool. And the IBM vice president said no, it was because I was smart. I remember mentioning that to Ken, and Ken said, “You should have asked him, ‘If you think I am so smart, why don’t you take my advice?’ ”

— Dick Lathwell, Dad & My APL Box (8:28), 2009-04
 

 

Visiting Dyalog staff and consultants lodged at Dyalog House in Basingstoke. On more than one occasion, a few minutes before we were to leave for the office in the morning, Morten Kromberg would come downstairs and iron a blouse for Gitte Christensen. The first time I saw that, I thought to myself, “There is a limit to how bad a man can be who does that for his wife.”
 

 

The surgeon operated on the son and yet is not the father. How is that possible?

I asked Morten Kromberg this old chestnut and he got the answer immediately. Probably, he would have gotten it in any case, but he has the added advantage that his mother is a surgeon who actually operated on him. Apparently his mother is doubly responsible for his good looks: once by giving birth to him and again by sewing his face back together after it was cut open in a bicycle accident.
 

 

Gitte Christensen is a good cook and whenever she was in residence at Dyalog House we would be treated to a delicious dinner.

On sitting down to dinner, Gitte would have a first taste and say, “Well, I got lucky again”, whereupon the others around the table would dutifully (and truthfully) respond, “How is it that you are lucky every time you cook?”
 

 

The Dyalog office in Bramley has an open sitting plan conducive to good communications. Serious work is carried out in an atmosphere of camaraderie. One afternoon, John Daintree stood up at his desk, raised one hand, and announced, “Would anyone who believes in telekinesis please raise my other hand?”
 

 

On 2009-06-18 John Scholes told me by e-mail of a comment by Robert Sedgewick that it is infeasible to compute the inverse of the 100-by-100 Hilbert matrix. He proved Sedgewick wrong by inverting that matrix using a dfns model of rationals, and thought that J can probably do it reasonably quickly.

On receiving John’s e-mail, I fired up my J system, defined H=: %@>:@(+/~)@i. , then executed timer '%. H 100x' . When the expression completed successfully after 115.521 seconds, I shouted across the desks to John, “John! 2 minutes!”
 

 

I recently purchased a Garmin GPS unit. One of its functions is to record a destination with a label, and on arriving at a programmed destination it would announce by voice, “Arriving at XYZ, on left (or right).”

In June 2010, we drove to the Bay area to visit friends and relatives. It was a long journey over unfamiliar roads, so we took the GPS with us. We visited Arthur and Rita Whitney and went out for dinner together at a local restaurant. Afterwards, we drove back to Arthur’s house with Arthur sitting in the front passenger seat. As we neared Arthur’s house, the GPS announced, “Arriving at Arthur Whitney, on left.” On my right, Arthur retorted, “Technically, that’s incorrect.”
 

 

An e-mail exchange from 2010-08-17:

Catherine Lathwell: I’ve seen references to the fact that APL has a birthday, but not the actual date. If I had to pick, I would pick 1962 when A Programming Language was published. What do you consider APL’s birthday?

Roger Hui: In 1991 there was an issue of the IBM Systems Journal, Volume 30, Number 4, labeled “Twenty-fifth Anniversary APL”. So that’d make 1966 the birth year. The birth day and time are also known, sometime in November, sometime during the Thanksgiving weekend, so that’d make it between November 24 and 27 in 1966. I remember the Thanksgiving part because I remember reading someone’s article saying that the APL implementers were workaholics, working even during the holidays. (Don’t you remember Dick being away that weekend? )

The precise time is known because in the old days, instead of doing )clear , you do )load 1 cleanspace (or maybe the system did that under the covers), and that cleanspace had a saved timestamp that was carefully preserved from one release to the next, from one version to the next, from one APL to the next. Actually, I fired up my APL2 just now and:

       )load 1 cleanspace
SAVED 1966-11-27 15.53.59 (GMT-7)

Dick Lathwell responded on 2010-08-20: Trivia trivia: The timestamp on 1 cleanspace is actually 1 second later than the original. Some time after the implementation of )clear , Adin dropped 1 cleanspace . He then had second thoughts, so I set the time and date of the model 50 to the original timestamp with the clock disabled and started APL and entered )save 1 cleanspace . The implementation of our supervisor (I guess these days we would say kernel) was such that an interval timer interrupt was required to enter the scheduler, so I momentarily enabled the clock.
 

 

The committee of the APL2010 conference in Berlin invited me to give a 10-minute address on Eugene McDonnell after the chairman’s opening welcoming remarks. On the first day of the conference, I arrived early to get the equipment ready, then paced back and forth in the lecture hall, psyching myself up for the talk. A famous name also arrived early a few minutes later. He came up to me and said quietly, “I didn’t even know that Eugene McDonnell had died. Are you going to do something about that?”
 

 

At the 2005 Dyalog conference in Helsingør, I gave a light-hearted talk about emulating lists in APL. Contrasting lists with trees, I said that I harbored an adolescent fantasy that, while waiting at the bus stop, I would be approached by a beautiful woman who would ask, “Excuse me, do you know the difference between a list and a tree?” I had a cute answer prepared.

Five years later, at the banquet of the APL2010 conference in Berlin, I was sitting with Flora, my wife, when two stunningly beautiful young women from APL Italiana came to our table. “Excuse me Mr. Scholes, do you know the difference between a list and a tree?”

Amazing! What are the chances of that?

(For the record, a list can be viewed as a unary tree, but let’s keep this to ourselves. There may be more beautiful women out there with a deep interest in data structures.)

— John Scholes
 

 

John Scholes was most apologetic while advising a young colleague about some care that should be taken, and quoted from the prolific poet Anon y Mous:

    Teach not thy parent’s mother to extract
The embryo juices of the bird by suction.
The good old lady can that feat enact,
Quite irrespective of your kind instruction.

The sentiment seemed very similar to a Chinese phrase dating from the Ming Dynasty, 班門弄斧 , something like “exercising your axe at Paul Bunyan’s doorstep.” A search of the phrase on Google found a definition in English and one of the meanings is, “teach one’s grandmother (how) to suck eggs.”
 

 

A week before the Dyalog Christmas party, Karen Shaw sent an advisory:

  For those attending the dinner, the restaurant/hotel have advised that the dress code is smart casual… I suggest you Google it if you are unsure what that is!  

Various humorous messages were sent in response; the most humorous (and shortest) was from John Daintree: http://en.wikipedia.org/wiki/Dinner
 

 

John Daintree is a master joke teller, and throughout the Christmas dinner regaled the table with jokes, puns, rejoinders. Towards the end of the dinner Ronald Chan challenged JD to tell a joke about “drinks”.

It was late in the evening and everyone has had a few drinks, and JD was momentarily stuck for a joke on “drinks”. He stalled for a minute. Still stuck. Stalled for more time … when a joke that I’d heard recently popped into my head, and I came to the rescue:

A countably infinite number of mathematicians walked into a bar. The first one ordered a pint. The next one ordered 1/2 a pint. The next one ordered a 1/4 pint. The next one ordered 1/8 of a pint. … The bartender poured two pints and said, “You guys know your limit, right?”
 

 

Several days before this came one of the finest moments in my “joke-telling career”. Before returning to Dyalog House we stopped by the local Tesco. Ronald Chan commented that we needed to get some eggs as there was only one left. I immediately said, “If you were French one egg would have been un oeuf.” I waited years to spring that one.
 

 

A number of the notes in this workspace contain sections that are merely the musings of the author. They may not be entirely factual and you should check the content with say, Wikipedia, before repeating them to a discerning audience. For example:

(muse:
     

A muse is a compound of “musons”; the elementary particles of consciousness; the atoms of our mental world. More complex patterns, such as our views on politics, religion, country music, and so forth, are constructed from clusters of these units.

An example of a muson might be the fleeting intention to buy more trash-can liners. In isolation, the muson is typically temporary and inconsequential; anything smaller does not register on EEG.

The human mind is characterized by its ability to build large and enduring structures from such particles, while other animals get by with much simpler combinations. For a dog, memory-of-rabbit is about as fancy as it gets.

Some meditation regimes may be seen as the attempt to dwell for extended periods within a single muson. The most successful exponent of this turns out to be the common oyster (Ostrea edulis), which spends its entire mental life within the sole muson of which it is capable.

Although there is no direct human equivalent of the oyster’s muson, an approximation might be something midway between an appreciation of sea water and a vague yearning for locomotion.

)

— John Scholes, Muse
 

 

Notice in the examples below that */5/2 is a number with 19,729 decimal digits. An amusing way to distinguish mathematicians from computer programmers at a social gathering (perhaps a cocktail party or wedding reception) is to sing this little song (to the tune of “The Grand Old Duke of York”):

  Two,
Two-to-the-two,
Two-to-the-two-to-the-two,
Two-to-the-two-to-the-two-to-the-two,
Two-to-the-two-to-the-two-to-the-two-to-the-two, …

You will find that after six or seven lines, the mathematicians begin to look bored, while the computer programmers turn pale and start to faint.

— John Scholes, Natural Number Arithmetic
 

 

An exchange on the J Programming Forum on 2011-01-25 and -26.

Henry Rich: In the old days, turning on debug made my big apps crash. I think it’s been fixed now, but I’m still like Mark Twain’s cat.

Dan Bron: “[It’s] said a person that started in to carry a cat home by the tail was getting knowledge that was always going to be useful to him, and wasn’t ever going to grow dim or doubtful.” — Tom Sawyer Abroad

Roger Hui: I suspect Henry meant the following: The cat, having sat upon a hot stove lid, will not sit upon a hot stove lid again. But he won’t sit upon a cold stove lid, either.
 

 

It came time to implement \ (“scan”). On that day (in the first half of 1990), during lunch at Josie’s Cafe on Yonge Street, I asked Ken innocently, “Have you ever wanted to scan something other than reduction?” The question was not even well-formed, because the APL paradigm is so powerful that it usually pushes aside alternative thoughts. Nevertheless, the discussion that then proceeded was productive, and quickly led to the realization that [35]:

Some APL expressions apply reduction implicitly. For example, APL scan applies its left argument reduction to successive prefixes of the right argument. The use of reduction ensured that computations such as sum scan can be effected by primitive function arguments to the operator, and that the overall result could be assembled in APL\360.

With J’s more permissive assembly rules (and the use of boxed arrays), reduction is no longer necessary, and in many cases, inappropriate. Therefore in J, if a reduction is required, it must be specified. Thus +/\ in J computes sum scan and +/\. computes suffix sum scan. The following J example does not use reduction, and is therefore not readily expressed using APL scan:

   <\ 'abcdef'
┌─┬──┬───┬────┬─────┬──────┐
│a│ab│abc│abcd│abcde│abcdef│
└─┴──┴───┴────┴─────┴──────┘

— Roger Hui, Remembering Ken Iverson, 2004-11
 

 

One time, I visited Prof. Keith Smillie in Edmonton and had lunch with him. We took a bus returning from lunch. The conversation got to the J mug. Just before Prof. Smillie’s stop, I asked him if he knew what the J expression 1&(|:\.)"2^:2 on the mug did. He paused as he was getting off the bus, turned right around to get back on the bus, and we talked some more about minors.

This story elicited a chuckle from Ken Iverson when I told him about it. (He was the author of the expression.)


 

 

The first NARS (Nested Arrays Research System) was designed and implemented in the early 1980s as a testbed for new ideas in APL, principally with nested arrays. A quarter of a century later, it’s time to try again.

The goal of this effort, as with the last one, is to foster new ideas about the language and its implementation.

Language ideas include new functions, operators, and datatypes. To aid in getting your ideas into an implementation, there will be a mechanism for telling NARS that a user-defined APL function represents a new primitive function, operator, or datatype. In order to experiment with your ideas for new extensions, all you need to know is how to write APL programs.

Implementation ideas include algorithms to enhance code space (smaller executable), time space (faster execution times), or expressibility (clearer and more understandable code). A goal of the existing implementation is to be open and easy for others to change so that new ideas may be inserted smoothly.

Moreover, this project is made available as Free Software so, among other things, any developer may pick it up and add new features, and any end user may use it free of charge.

— Bob Smith, NARS2000
 

 

In school and in textbooks it is proven that sorting requires 𝒪(n×⍟n) comparisons. I suppose that is why Bob Smith was initially skeptical when I told him that in Dyalog APL you can sort a real vector in 𝒪(n) time.

I opined to Dyalog colleagues that Bob is a smart guy and if you tell a smart guy that something is possible (and he believed you) then he would soon figure out how to do it. He did.
 

 

The Dyalog APL and J implementations recognize particular useful operands for key, for example {≢⍵} and {f⌿⍵} , and implement those cases with special code for higher performance. Whenwas introduced to Dyalog APL in 2013 it was discovered that {≢⍵}⌸x (tally of unique elements) ran almost as fast as finding the maximum of x (Hui 2013b). Investigation into how that came about led to the following programming puzzle (Hui 2014 §16):

Find the maximum of a vector of 1-byte ints without using multicore, vector instructions, loop unrolling, etc. Can you do it faster in C than the following code snippet?

max=*x++; for(i=1;i<n;++i){if(max<*x)max=*x; ++x;}

The puzzle stumped some expert C programmers. It is possible to be faster by a factor of 1.5.
 

 

Dear Colleagues:

Garth Foster and I are pleased to invite you to the 2011 Minnowbrook APL Implementers Workshop, to be held Tuesday-Saturday, September 20-24, 2011 at Syracuse University’s Minnowbrook Conference Center on Blue Mountain Lake in the Adirondack Mountains of upstate New York. Those of you who have been to previous Minnowbrooks know that this lovely venue is specifically designed for intimate conferences, and the setting is highly conducive to productive and convivial interaction amongst the conferees.

While the focus of the workshop is the design and implementation of APL, we expect other languages to be well-represented both because of APL’s inspiration of or effect on them, and because of their influence on APL. Since our last workshops in 2007 and 2010, much has transpired in the computing milieu which stimulate and challenge us all. This year, we shall explore the strategic view of our parallel paradigm, as well as discuss the various flavors, improvements, and interactions of our languages. With your suggestions, we hope to give our conference a bit more structure than in the past.

The topics we discuss are up to you. At this point, we have no agenda, but we do have a schedule to which we must adhere. Because this is your conference, the agenda is subject to your collective wishes. If past years are any indication, we would expect to have more material from you than our 24 hours of scheduled meeting time allow. The rest will have to be discussed at Evening Seminar. Please keep your presentations (prepared or ad hoc) brief and cogent to allow for plenty of discussion time. Please offer your suggestions in the attached registration form.

This is an invitation-only workshop. Although Minnowbrook can accommodate up to 64 people, we hope to keep the number of conferees to less than half that. The individuals on the distribution list (“To” sorted by first name, “Cc” by last name) are designers, implementers, major users, and legacies of APL, J, K, and extended versions of other languages such as C having array programming capabilities. If we have left someone significant off the list, we apologize and want to hear from you so that we may extend them an invitation.

The Workshop will begin with dinner at 6:00 P.M. on Tuesday the 20th; plan to arrive around 4:00. It will end after lunch at 1:00 P.M. on Saturday the 24th. The nearest major airport is Albany, New York (ALB), about 110 miles away (2:30 by car); next closest is Syracuse (SYR), about 140 miles (3:00). Saranac Lake Regional Airport is about 55 miles away (1:15); or you can simply hire a seaplane and land directly at Minnowbrook’s dock!

Dress is casual. The weather is likely to be balmy during the day, but can get slightly brisk at night (but less so than 2010’s conference); bring a sweater or jacket. There will be plenty of time for recreation, so bring hiking boots, fishing rods, or if you’re brave, a swim suit. See Minnowbrook’s website http://www.minnowbrook.org for full information about the facilities.

The all-inclusive (excepting travel) cost for the workshop is $990 per person for single accommodations, $870 for double (only slightly inflated since 2007). We provide all refreshments, including evening cocktails, wine with dinner, and nightly libations. As this is a personal and non-profit endeavor, Garth and I will collect all funds, and distribute any surplus to attendees after the conference. Please complete and mail the form below to reserve your place at Minnowbrook 2011. If you cannot attend, please let us know promptly by email.

Hereafter, we plan to hold Minnowbrook Workshops in the odd years starting 2013.

We look forward to meeting and renewing our friendships with all of you, and to the congeniality, fellowship, and vigorous discussion which Minnowbrook has always inspired.

Yours very truly, Garth Foster and Roy Sykes
 

 

During an “evening seminar” at a Minnowbrook conference, Ken said to Roy Sykes, “I bet you can’t keep your ear on the bar while I knock on it twice.” Roy, being a good sport, put his ear on the bar. Ken knocked on the bar once, then turned to talk to someone else.

— John Scholes
 

 

During the first dinner at Minnowbrook in 2011, I met Mary Ellen Foster for the first time (and knew her name by her name tag). For a few minutes I couldn’t decide whether she was Garth Foster’s wife or his daughter. Her identity was confirmed later that evening through the introductions in the first session.

A couple of days later I saw Mrs. Foster reading a book at the patio. By that time I’d finally overcome my reserve and proceeded to describe to her my dilemma on our initial encounter. She put her hand over her heart and said, “Oh, you’ve made my week; no, you’ve made my year!”

When I told the guys about this exchange, they said, “You smooth talker you.”
 

 

I was at uni with this bloke, and can vouch for his OCD credentials.

— Jay Foad, extolling the programmer of some software
he was recommending
 

 

I’ve always said that APLers are nicest group of people on the planet … it’s just a shame that they’re not necessarily of this planet.

— Andy Shiers
 

 

Stupid questions …

During the time we were implementing the very first version of Dyalog, a friend, who was not a programmer, asked me how much of it was coded in APL. I thought he was bonkers.

        We now have exactly this internal “magic function” prototyping facility.

When “Visual Display Units” first appeared alongside scrolling paper terminals, a participant on a course I was giving asked me where the writing went when it disappeared off the top of the screen. I explained it was just, well, gone; same place the ticking goes when the clock stops.

        We now have scrolling sessions.

On another course, someone asked me what (A B) means, when A and B are variables. I explained that it didn’t mean anything as there wasn’t a function between the A and the B .

        We now have vector notation.

Sound bite: A stupid question is a portal into an alternative mindset.

— John Scholes, Declarative Programming
 

 

There is a story that Ken Iverson, the inventor of APL, was passing a terminal at which a Fortran programmer had just typed:

      I = I+1

Ken paused for a moment, muttered “no it doesn’t”, and passed on.

A similar yarn relates to a computer scientist who, many years ago, before the concept of declarative programming was generally understood, was teaching programming to a group of geography students. The students were having a hard time understanding what I=I+1 means. To his immense credit, on reflection, the teacher realised that he didn’t understand either. Thus came a significant advance in computer science.

— John Scholes, Declarative Programming
 

 

This is the obligatory empty array entry.

Jay Foad: JS pointed me at some papers by Trenchard More. I liked this bit:

   

We know from experience that empty collections differ according to type. An empty box of eggs differs from an empty box of apples: one hold no eggs; the other, no apples.

N.B. I disagree with him.

John Scholes: This spawned a whole genre of “empty-array jokes”. The one I remember is:

    Diner: I’ll have the strawberries and cream please, but without the cream.
Waiter: I’m sorry sir, that dish is off the menu today, the cream wasn’t delivered.
Diner: Then, could I have it without custard, instead?

Roger Hui: http://www.jsoftware.com/papers/eem/Empty_Array_Jokes.htm

John Daintree: I was expecting an empty page …

Andy Shiers: An empty page, or an empty HTML page?
 

 

An American, in a cafe with two friends, orders a cup of tea and an English Muffin. His friend from London points out: we just say 'Muffin'. Later, when he orders a cup of coffee and a Danish, his friend from Copenhagen says: we just call them '' .

— John Scholes
 

 

An excellent story, but unfortunately it is isn’t quite true… In Scandinavia, they are called “Wienerbrød” (literally “bread from Vienna”). We’re not taking the blame …

Taking this much too seriously, I know …

— Morten Kromberg
 

 

Wow! Next you are going to tell me that French onion soup is not French; Belgian waffles are not Belgian; Irish potatoes came from South America; Scottish salmon is actually Norwegian; Vietnamese phở was invented by a French chef; French cuisine originated in Italy; apple pie is not American but … Dutch?; hot dog has no dog in it; mock chicken has chicken in it; …; APL was invented by the Russian mathematician Wassily Leontief.

Besides, what kind of empty array joke is that? We don’t call them 'Danish'; we call them 'Wienerbrød'!?
 

 

I once introduced APL to a grade 9 math class in a one-hour talk, finishing with a simulation of the Monty Hall problem. Well into the problem, a student opined, “I’ve always wanted to have a goat.” Since then, I have taken care to start the problem description with, the object of the game is to win a car.

From http://xkcd.com/1282


 

 

Too productive for your own good?

The Iversonian array languages (APL, J, kdb, q) are so productive that we almost all work either alone or in very small teams. We rarely benefit from the professional cross-fertilisation that is routine in big-team languages.

Our work is mobile, so we are packing it on our laptops and taking it to Oxford University 25-31 August this summer. This is not a conference but a week living and working among array-language colleagues.

We shall be a party of twenty-five with student accommodation at St Edmund Hall: meals in college, wifi in our rooms and in our common work room. No schedule, but meals together, and talks after dinner.

We shall take one day as a play day, perhaps punting up the Cherwell. We will have a formal dinner in Hall on Thu 29.

In 2011 and 2012 we were at Trinity Hall in Cambridge.

— Stephen Taylor, Iverson College, 2013
 

 

The k interpreter occasionally gave wrong answers. It would have been easy to suppose we were looking at a graduate project, did we not remember how Kx makes millions of dollars selling its programming language to a world in which programming languages are largely free.

John Scholes ventured a question: “How do you do garbage collection?” — “No need to do garbage collection. I know where everything is.”

The k binary weighs in at about 50Kb. Someone asked about the interpreter source code. A frown flickered across the face of our visitor from Microsoft: what could be interesting about that? “The source is currently 264 lines of C,” said Arthur. I thought I heard a sotto voce “that’s not possible.” Arthur showed us how he had arranged his source code in five files so that he could edit any one of them without scrolling. “Hate scrolling,” he mumbled.

— Stephen Taylor, Iverson College, Cambridge, Aug 2011
 

 

My memory of this one is even more hazy because by this time I was feeling giddy. It went something like:

Arthur doesn’t like Gmail’s fonts; (… some more steps, which I forget …) therefore, it seems reasonable to write his own operating system in k.

— John Scholes, 2012-09-07
 

 

Both Eric Iverson and I remember Arthur talking 20 years ago (1990s) about writing his own operating system. One of us then asked him, why stop there, why not do your own chip? He replied that the chips were good enough.
 

 

A vignette from Iverson College 2013:

Arthur was quite taken with the fact that +.× in Dyalog APL and J are faster on sparse matrices. On Friday morning he talked to me again about it, and asked to see benchmarks on 1000-by-1000 matrices with densities of 1 and 0.1.

      x←0.5ׯ500+?1000 1000⍴1000
      y←0.5ׯ500+?1000 1000⍴1000
      timer 'x+.×y'
2.04966

      x←x×0=?1000 1000⍴10
      timer 'x+.×y'
0.344815

I suggested that he could also do this because as I recall k does +.× row at a time rather than the traditional row-by-column.

About a minute later, Arthur said, OK, I have it, and showed me the changed code — he’d inserted if(a) into the middle of a dense pack of characters. I quipped that that indicates he isn’t following the TDD methodology, and that he’s only proven it correct but not tested it.

The other people in the Emden room were amused by the exchange.
 

 

During IC 2013 I took a walk one afternoon. As I approached the corner of The High and Longwall I saw a man grabbing an armload of hoodies from a table in front of the souvenir shop. The act was so brazen and nonchalant that it was possible that the man was a staff person. I look at him; he looked at me. I peeked into the shop through the doorway. The staff showed no concern. When I looked out on the street again, the man with the hoodies was nowhere in sight.
 

 

At the 2013 Dyalog Conference, Morten Kromberg told me that Valentina Settimi (who made the APL Italiana presentation) has a Ph.D. in math and worked on the Goldbach conjecture for years. Morten then wondered whether she had solved the conjecture. I told him that if she had she wouldn’t be talking to him.

To “impress” Signorina Settimi, and being totally uncouth, I went to her table and told her that my Erdős number is 2. Richard Smith opined that an alternative approach was to offer her the opportunity of reducing her Erdős number to 3.
 

 

At the banquet of the 2014 Jsoftware Conference I sat at the same table with Leslie Goldsmith and a young colleague (and others). Well into the evening the young colleague asked Leslie, “Do you program?” (I suppose there was some doubt because Leslie was now a senior executive of a company.) I quietly said that Leslie programmed in APL one of the world’s first e-mail systems. Leslie added that it was the world’s first commercial e-mail system, and that he did it while a high school student. The young colleague exclaimed, “Now you are starting to impress me!”
 

 

At the Dyalog ’14 banquet, Charles Brenner told me that there is a legend in his family that his older sister once sat on Albert Einstein’s lap, possibly at a lecture or gathering at the IAS attended by both Einstein and Charles’s father, with daughter in tow. I suggested to Charles that he should start a legend that he himself also once sat on Einstein’s lap. It could have happened as his family lived in Princeton while Charles was a baby.
 

 

Excerpts from a presentation to the IPSA50 party, 2014-10-05.

•   Remember the 80s? When our line to Europe was 9600 baud? I have 2000 times that bandwidth to my house. The 80s. When Joey saved 9 years of email in 82 megabytes. Now we get that in a day.
•   I remember when Jane and I had a business meeting in Winnipeg. IPSA’s famous frugality dictated we share a hotel room. Jane arrived after me, unlocked the door and called out, “I’m coming to get you!” It was the wrong room. A man wearing only a towel took one look at this willowy redhead and responded, “I certainly hope so!”
•   I remember asking Arthur Whitney to wear clean, ironed pants and shirt for an important demo. Arthur blew them away. When I thanked him for dressing properly someone said, “Didn’t you notice he had NO SHOES?” You have to be VERY explicit with programmers.
•   I remember arguments with Eric that he consistently won — even though I was consistently RIGHT!
•   And I remember Roger. His office with six feet of printouts — totally redundant, because Roger with his photographic memory knew Every. Single. Line. Of code. There’s the legend of Roger in a Regina bar realizing he’d forgotten his house key, and drawing it for a locksmith to cut a replacement. It worked.
•   I remember Roger advising a customer to connect pins 4 and 7 on their 3705. The uneasy customer called the IBM development team. “Who told you to do a stupid thing like that?” “Roger Moore”. “Oh well that’s OK, Roger knows more about this device than we do.”
•   I remember one night a customer phoned the London office for APL help, was given a quick solution, and asked, “Who is this? I want to mention you to the boss.”
“My name is Ian Sharp.”
“Wow, must be handy to have a name like that.”
“It is,” Ian replied without further elaboration.
Fred Perkins got a laugh the next morning.
•   I remember people urging Ian to dump a painful, overdue Morgan Stanley project. There was no contractual penalty. But we gave our word, said Ian. That was the end of that.
•   Ian didn’t stand on policy; he operated on trust. When I applied to Sharp, I asked about sick leave. Ian looked perplexed. “When you’re sick, you stay home.” I persisted. “How LONG can I stay home?” Even more perplexed, Ian said, “Until you’re better.”

— Lib Gibson, IPSA50, 2014-10-04
 

 

And then there’s Ian. The heart of the company.

A 21st century company waaay back in the last century. Relatively flat and widely dispersed, I.P.Sharp was held together by electronics and camaraderie. And Ian.

The company was blind on race, creed, colour, nationality, sexual orientation, and eccentricity. And gender. I left IPSA with a suspicion that discrimination against women was a myth. Yeah. Right.

— Lib Gibson, IPSA50, 2014-10-04
 

 

Starting in the New Year, my company is establishing a new policy that I think would be a desirable thing for larger corporations to adopt.

Each employee is allowed to name his or her own salary. We’re a small company but there’s no reason this should not spread more widely. I would think that a sense of being an important part of a corporation will lead to higher performing and more satisfied people.

I’ll report on the result of this experiment in a couple of months.

(Just so you know, I’ve named mine “Fred”.)

— Jim Brown
 

 

My name is James Brown also the name of a famous soul singer. People have asked me about this for decades. I usually tell them to be quiet because I’m trying to be incognito. In the old days when you traveled, the rental car companies would pick you up in their shuttle and call your name in to the office so your paperwork would be ready when you arrived. When they called in my name, people would come out and gather around the counter to see me come in. Of course, it wasn’t who they thought it would be so everywhere I went, people were disappointed to see me.

— Jim Brown
 

 

An exchange on the Dyalog Forum, re: Explanation of APL Execution Order.

dziemann    

Can anyone help me? I’m enjoying a little argument in one of the Facebook groups I’m in. It’s about arithmetic order of execution, not in the programming context, but purely arithmetical.

The audience is intelligent and erudite, with a linguistic bent, but they’re not programmers. What I’m looking for is an authoratitive (Iverson?) lay explanation of how “right-to-left” execution (if I may characterise it that way) works, and why it’s better. I’m dismayed that I can’t easily find one. Do you know of such a thing?
 

Roger|Dyalog

Hello Dave. Been a long time. How areand ?

See Iverson, Conventions Governing Order of Evaluation, 1966 (http://www.jsoftware.com/papers/EvalOrder.htm). If you want a “sound bite”, ask the question, what’s the order of evaluation for sin cos sqrt x ?
 

kai

“How areand ?” Will you elaborate for me?
 

Phil Last

My two guesses:

0. First of all I thought Roger was asking the pertinent question — where in +, -, ×, ÷ wouldandfit? But from the wording perhaps not.

1. Two mutual friends, one tall, one short.

Probably both wrong.
 

Roger|Dyalog

dziemann, unless I am totally wrong, is Dave Ziemann. He was such an APL devotee that he named two of his children Max and Min. I was going to put in and , dyadic cases”, but it’s kind of obvious, right? Who’d choose Floor and Ceiling as names for people?

It’s amusing to go through the list of APL primitives to see what other names are plausible.
 

dziemann

My goodness, I’ve been away a while haven’t I? Hello everyone. Thank you Roger for your reply, great to hear from you!

Regarding the Max and Min story. As Snopes might say: Partially TRUE.

I was indeed such a devotee of APL that I named my first child Max. Therefore obviously we hoped that our next child would be a girl, and, yes, three years later my daughter was born! However at that point we bottled out, determining that she would be forever resentful to have been considered the lesser child. (Knowing her character now, this was a good decision.)

So we chose the name Miranda instead; she’ll have to be satisfied with having the name of an APL function embedded in her name.


 

 

My daughter Rachel loves jokes and riddles, both hearing them and telling them. Over the years we’ve told and retold each other many jokes. Lately we’ve taken to reciting just the punch lines. The “compression ratio” is high.

Spot. Stripes. Next! Roosters don’t lay eggs. One egg is un oeuf. She had to stop to ask for directions. Concentrate. We go at night. It’s the first day I had me hook. Now if another person walks into the house it’d be empty. Skiing, sir. We are out of flies today. What friend? Praise the Lord! I didn’t know you could yodel. I’ve always wanted to play the piano. Want to ride bikes? I’d like to have a cheeseburger, a milk shake, and fries please. It’s the way you tell it. …

John Scholes and Rachel Hui, Somerset, 2011

   

Ken Iverson and Rachel Hui, Toronto, 2004


 

 

The other night Henry wasn’t sleeping well so Tania propped up one end of his Moses basket with a book. This morning I noticed that he has been sleeping with his head resting on The Art of Computer Programming, Volume 3 — Sorting and Searching!

— Jay Foad
 

 

The under operator () proposal includes an obverse operator , where f⍫g specifies that g is the “inverse” of f (and vice versa). This should reduce the pressure to extend the interpreter to invert this, that, or the other. For example, if the system can not invert FFT (it’s extremely unlikely to be able to), you can say ×⍢(FFT⍫IFT) for the fast digital multiplication.

f⍫g f except that f⍫g⍣¯1 g⍫f . Obverse is pretty straightforward. There are no side effects, no special line labels, no special syntax in the header, etc. One reason it’s called “obverse” instead of “inverse” is that g doesn’t have to be an inverse in the mathematical sense. You can, for example, say -⍫('funny'∘⊣) even though 'funny'∘⊣ is not commonly considered an inverse of - .

A related idea: J also has adverse: f Adverse g f except that if you get an error in applying f then you apply g .
 

 

>   You can, for example, say -⍫('funny'∘⊣) even though 'funny'∘⊣
>   is not commonly considered an inverse of - .

I’d call that “perverse”.

— Nick Nickolov
 

 

It’s #worldmathsday and the call went out for suitable tweets. The answer is obvious:

   0 = 1 + * ○ 0j1

is the most beautiful equation in all of mathematics, relating in one short phrase the fundamental quantities 0, 1, e, π, and 0j1 and the basic operations plus, times, and exponentiation.

What is not so obvious is why and how the equation holds in Dyalog APL. With the vicissitudes of floating point representation, transcendental functions, and (non-tolerant) comparison with 0, one expects that 1+*○0j1 would give a tiny number close to 0 but not exactly 0 and the equation would be false. So in addition to everything else, 0=1+*○0j1 is a subtle show off.

   ⎕ ← a ← 3 4⍴⍳12
0 1  2  3
4 5  6  7
8 9 10 11

   * ○ 0j1 × a ÷ 2         ⍝ show off
1 0J1 ¯1 0J¯1
1 0J1 ¯1 0J¯1
1 0J1 ¯1 0J¯1

   * ○ 0j1 × 2e9 + a ÷ 2   ⍝ shameless show off
1 0J1 ¯1 0J¯1
1 0J1 ¯1 0J¯1
1 0J1 ¯1 0J¯1

[Guess who did the coding to make this happen?]
 

 

In Honour of a Certain Movie Series

may←+⌿÷≢ ⋄ may∘∪ may the fork be with you
0 1 2 3 (⌊/⍬) 5 6 the fourth is strong with this one
4 4 4 4 (⌊/⍬) 4 4 I feel a great disturbance in the fours
1=?2e9 this is not the number you are looking for
1=?2e9 in my experience, there’s no such thing as luck
Luke.## I AM your father
4 ⊃ 0 1 2 3 'dark side' vier ist the path to the dark side
x{0.5×⍵+⍺÷⍵}⍣≡darkside do not underestimate the power of the dark side
⎕ct←1 I find your lack of faith disturbing
0.2 ∊ ÷3 1 4 1 9 2 6 3 8 9 7 9  I find your lack of a-fifth disturbing
{0::⍺⍺~⍵ ⋄ ⍺⍺ ⍵} do, or do not; there is no :Try

APL Puns, Dyalog Blog, 2015-12-16
 

 

I created a Wikipedia page for Charles Brenner. There are people in Wikipedia going around deleting newly created pages because the subjects are “not notable enough”. I did not have to wait long:

2016-04-03T04:55:24  page creation
2016-04-03T04:58:03‎edit
2016-04-03T05:03:37edit
2016-04-03T05:12:01‎request for speedy deletion
2016-04-03T05:12:39withdraw of request by same person

I told Charles that he may be interested to know that Google loves Wikipedia, and that I expect very soon his Wikipedia page will show up near the top of any Google search of “Charles Brenner”, pushing the large number of other Charles Brenners further down the list. Charles quipped that making a Wikipedia page is probably a better course of action than arranging to reduce that number.
 

 

On 2016-10-15 I presented A Tour (de Force) of APL in 16 Expressions at Functional Conf 2016 at Bengalore, India. I introduced section E of my talk by saying, “After coming all this way to within 200 miles of Kumbakonam, of course I have to talk about Ramanujan.”

On leaving Bangalore, the passport control officer I dealt with had “S. Srinivasa” on his name tag. I asked him if he knew of Ramanujan. He smiled and said yes. It turned out he was a distant relative of Ramanujan.
 

 

The Dyalog APL interpreter has special code to improve the efficiency of certain useful computations. In version 15.0, the current version, there is a “Dan Baronet special”: b⊥b is computed by special code motivated by Dan’s observation that it computes the number of trailing 1s in boolean vector b . With the special code, it is “infinitely faster”.

Daniel Baronet, 1956-2016
 

 

An exchange on the J Forum on 2017-10-10:

User: I would be genuinely interested in reading about real world applications of J.

Patrick Harrington: Not “real world”, more “out ot this world”. I use J for most of my exploratory calculations in astrophysics. e.g., http://www.astro.umd.edu/~jph/J_page.html.
 

 

At the Dyalog ’18 User Meeting I once sat across from Will Robertson at breakfast. After a while, to break the silence, I told Will the following two stories:

Colleagues of the Swedish diplomat Gunnar Jarring were skeptical of news reports that Jarring responded to questions about the progress of negotiations by saying, “No comment”, reasoning that he could not have said so much.

The physicist Paul Dirac was famous for his taciturnity. His colleagues, being physcists, devised a unit for measuring this: the dirac, defined as one word per hour.
 

 

An array to be sorted can be converted to an order-equivalent integer array by assigning to each item an ordinal (an integer) which has the same ordering relationship as the original item relative to other items in the array:

   sort    ← {(⊂⍋⍵)⌷⍵}
   ordinal ← {⎕ct←0 ⋄ ⍵⍳⍨sort,⍵}

That is, the ordinals obtain as the indices of the original array in the sorted list of the ravelled elements, using exact comparisons. (Exact comparisons are used because sorting necessarily uses exact comparisons.)

   (ordinal x) ≡ ordinal ordinal x
1

That is, ordinal is idempotent. Actually, this is kind of obvious, but I never miss an opportunity to use the word “idempotent”.

— Roger Hui, Ascending and Descending, Dyalog Blog, 2019
 

 

The APL community is diverse and international, and people from different countries have different culinary traditions. The following e-mail discussion illustrates the point.

A (UK)

One and All,
Just when you thought things couldn’t get much worse … My dear wife pointed this out to me, and, having recovered sufficiently to be able to type again, I thought it only fair to spread (!) the pain/sorrow/happiness(*):
      https://www.tesco.com/groceries/en-GB/products/305949281
Marmite Humous. Cooked chickpeas with Marmite®, tahini sesame seed paste, lemon juice from concentrate and garlic purée.
Now don’t get me wrong, I was a Marmite baby, and I still love the stuff. But I was offended mightily by Cheddar with Marmite, and the idea of Marmite Peanut Butter repels all right-minded humans. But Marmite Houmous. The world weeps.
(*) I am aware that R has seriously poor taste, and he probably is now about to rush out to get some. I’ve always said he needed help.

R (UK) (*) I don’t think even Marmite could make houmous appealing to me. But a Marmite and cheddar cheese sandwich is a glorious thing.
M (DE) Thank you — that is a valuable aid to accept covid-related travel-restrictions!
K (UK) I say don’t knock it until you’ve tried it—Marmite improves many things 😉
B (US) Hummus isn’t one of them though 😊
Maybe it’s a blessing that us Yankees are banned from coming to the UK…
A (UK) B: No comment.😊
I’ve with R on the Marmite and cheese sarnie, but the idea of Marmite flavoured cheese does not appeal. R is off to M&S as they’re selling Marmite flavoured butter and Marmite flavoured cream cheese. It just gets worse.
And I’m happy to help, M!
B (US) Who needs Marmite when I can scrape the soles of my feet after walking barefoot in the mud? 😊
A1 (UK) How dare you denigrate God’s nourishing soil with such a comparison? 😊
B (US) Anyhow, if I really need a Marmite fix, I need only go to my local Wegmans supermarket…
      https://shop.wegmans.com/search?search_term=marmite
Contains B vitamins. 100% vegetarian. Delicious when spread thinly on toast or for a treat try Marmite on a crispbread with cottage cheese. Marmite is a good source of B vitamins. Contains no allergens.
It has only 3 reviews, but they’re all 5-star reviews…
M (DK) The Danish government took appropriate action many years ago.
      https://www.theguardian.com/world/2011/may/24/denmark-bans-marmite
(I am sure the importer has filled in the required forms by now, and that Marmite is available in Denmark again)
A1 (UK)   In Denmark, food safety legislation dictates that foodstuffs that contain added vitamins can only be sold by retailers which have been licensed by the Veterinary and Food Administration.[32] During May 2011, the company that imports the product to Denmark revealed that it wasn’t licensed and had therefore stopped selling the product: this resulted in widespread but inaccurate reports by the British media that Marmite had been banned by the Danish authorities.[33][34]
R (CA) I seem to recall that some years ago, Canadian authorities investigated whether Marmite as a paving material was better than asphalt. I believe the conclusion was that asphalt was marginally better. But in case I misremembered what the conclusion was, Marmite fans should not go licking the roads when they are here.
B (US) Given the salt content of Marmite, it might do well as a paving material to combat the snow and ice here in the tundra of Upstate New York.

 

Dear Guy Steele,

We were bemused and pleased to receive your “strong encouragement” to write a paper about successors to APL. Bemused to be talking about successors to APL because APL is still around, y’know? Pleased because this past year (since 1966-11-27 22.53.58 UTC, to be exact) was the 50-th anniversary of APL, and it would be a fitting celebration to write about APL for HOPL4. In addition, one of us (Hui) is pleased to be renewing our acquaintance as he was in the audience when you presented your paper Constraints at the APL 79 conference in Rochester, wherein you were described as a Fannie and John Hertz Fellow and your co-author and professor Gerald Sussman as a Jolly Good Fellow. …

— Roger Hui, responding to Call for Participation
from HOPL4, 2017-09-22
 

 

Personalities

The design of APL since 1978 received significant input from a small number of people with intertwined personal relationships.

Ken Iverson led the way with his seminal paper Operators and Functions [Iverson 1978b]. The ideas were further developed in Practical Uses of a Model of APL [Iverson & Whitney 1982], Rationalized APL [Iverson 1983b], A Dictionary of APL [Iverson 1987], and J Introduction and Dictionary [Hui & Iverson 1989-2004].

Iverson and Eoin Whitney, father of Arthur Whitney, were both born in 1920 in small towns in northern Alberta, Canada, both served in the RCAF in WWII, and both won graduate scholarships to Harvard in the early 1950s, where they first met and became friends [Whitney 2006]. In 1969, Iverson showed APL to 11-year-old Arthur Whitney [Cantrill 2009], and in 1974 recommended him for a summer student position at IPSA Calgary. In the early 1980s, Iverson and Whitney were on staff at IPSA Toronto and had a couple of years of fruitful collaboration [Iverson & Whitney 1982]. They kept in touch in subsequent years. Whitney’s enduring and significant influence on APL (let alone on A and k and Kdb+) can be gauged by the number of instances in the current text of “invented by Arthur Whitney”, “on a suggestion by Arthur Whitney”, and the like.

 
Ken Iverson and Arthur Whitney, 1989

Roger Hui and Whitney were undergraduates at the University of Alberta in the 1970s and became acquainted in Professor Muldowney’s real analysis class. Hui was a summer student at IPSA Calgary in 1975 where Whitney was the year before. In the mid 1980s, Iverson and Hui were employed at IPSA Toronto; the seeds of their collaboration were planted by the paper Some Uses of { and } [Hui 1987]. When Iverson and Whitney met to discuss APL at the Kiln Farm one summer weekend in 1989, Hui was present on the first day by Whitney’s invitation. The “one page thing” that Whitney wrote on the afternoon of the second day provided the final impetus that got J started (§10.2). Between 1989 and 2004, Hui apprenticed with Iverson working on J.

 
Roger Hui, 2018

Morten Kromberg started at IPSA in the spring or summer of 1979 at age 16, when he was given a key to the IPSA Oslo office and a free APL account. In 2005, he became CTO and later CXO of Dyalog Limited (in a sense the guerrilla (q.v.) who took over command of the army), together with Gitte Christensen who assumed the role of CEO. Coming from a background in SHARP APL and taking charge of an APL2-based language implementation, Christensen and Kromberg have been instrumental in healing some of the wounds opened when second-generation APL systems were born. Kromberg independently invented futures and isolates (§4.4).



Morten Kromberg, 2016

 

Gitte Christensen, 2018

An important factor in these personal relationships was the world-wide e-mail system Mailbox (666 BOX) extant at IPSA since the early 1970s [Goldsmith 1980; Goldsmith 2010]. Mailbox provided for discussion groups on language design, programming questions, newbie help, etc. as well as person-to-person exchanges. (Kromberg (in Norway) first “met” Christensen (in Denmark) through Mailbox. They are still together.) IBM developed its own e-mail system after a key developer (Jon McGrew) used Mailbox and consulted with its implementer [McGrew 2016].

Jim Brown first encountered APL in 1965 when he started work at IBM Federal Systems in Owego, New York. In 1969, he got a summer position with the APL group at IBM Yorktown Research. Due to an administrative error, the summer job was not terminated after the summer and lasted three years [Brown 1971; 2016]. He shepherded APL2 through IBM from conception to product release, in the 1970s and 80s. The key innovations are nested arrays and strand notation, respectively general arrays and generalized vector notation [Brown 1984]. Brown left IBM in 1996.

 

 
Jim Brown, 1982

 

Bob Smith encountered APL at the National Security Agency in 1969/70 [Hui 2005b; Smith 2018]. He joined STSC in 1971. In 1981, he designed and implemented NARS, officially to do nested arrays but included many of the ideas in Operators and Functions [Iverson 1978b; Cheney 1981]. He left STSC in 1983 but returned to APL in 2006 to develop NARS2000 [Smith 2006-2020].

 

 
Bob Smith, 2016


John Scholes started with Atkins Computing and Xerox APL. At Dyalog, he and colleagues developed Dyalog APL intending to follow APL2 but using NARS as the blueprint—information about APL2 did not become publicly available until after Dyalog APL version 1.0 in April 1983. Scholes later designed and implemented direct functions (dfns, §1.2) [Scholes 1996; Scholes 2018].

 
John Scholes, 2018


John Daintree joined Dyalog Ltd. in September 1991, and designed and implemented objects and namespaces [Dyalog 2008a]. He became “the GUI guy” and later Chief Architect.

 
John Daintree, 2018


Bob Bernecky joined IPSA in 1971 [Bernecky 2016]. He was an implementer of SHARP APL and in the 1980s was the manager of the IPSA language design and implementation group. He worked with Iverson and others in the transition to a second-generation APL [Bernecky & Iverson 1980; Bernecky et al. 1983; Bernecky 1987]. From 1990 his work focussed on APL compilers [Bernecky et al. 1990; Bernecky 1997].

 
Bob Bernecky, 2015

Guerrilla Projects

It is striking how many of the ideas important to current APL were nurtured in “guerrilla projects”, projects undertaken with the grudging approval, or tolerance, or ignorance, or outright objection, of management. These took place coeval with rapid changes in the “APL biz” and in the ecology of computing.

APL2 developed over 15 years, with coding starting in 1971 and release as an IBM program product in 1984. Fourteen years were an unusually long gestation period. In that time, the developers were kept busy “producing other results of value to the company”, and were transferred between three or four divisions and made several moves between the US Atlantic and Pacific coasts [Falkoff 1991; Brown 2016].

Operators and Functions [Iverson 1978b] was published while Iverson was at IBM. Unable to gain traction for his views at IBM, Iverson accepted an offer to join IPSA in 1980. Further development of the ideas gained impetus in the early 1980s when Iverson and Arthur Whitney found themselves employed at IPSA Toronto at the same time. Officially, Whitney was supposed to be working on the OAG (Official Airline Guide) database, and he did, rewriting it from scratch and turning a failed project for a critical customer into a resounding success; unofficially, Whitney collaborated with Iverson and implemented the new APL ideas in a model written in APL, spending much more time on the APL model than on OAG [Iverson 2016; Whitney 2016; Hui 2005b]. The work was reported in Practical Uses of a Model of APL [Iverson & Whitney 1982]. (While en route to the presentation of this paper at APL82 in Heidelberg, Whitney invented the rank operator (§3.1) and the leading axis emphasis (§2).) Iverson also participated in the OAG project. Eric Iverson, son of Ken Iverson and the IPSA manager for both Iverson and Whitney, was unaware of this participation until 35 years later [Iverson 2016; Hui 2005b].

Iverson continued to work on APL after he “retired from paid employment” in 1987 [Iverson 1991a]. The J project was launched when Whitney wrote a 1-page interpreter fragment one Sunday afternoon in 1989 (§10.2), and began in earnest when Roger Hui also retired from paid employment (or so he thought) to join forces with Iverson on 1990-04-01. The collaboration continued until Iverson’s passing in October 2004.

The original goal of NARS [Cheney 1981] was to implement nested arrays but many of the ideas in Operators and Functions were also implemented. Management supported the extra stuff “mostly by ignoring” Bob Smith, the designer and implementer, and “letting [him] do whatever [he] wanted”. Smith left STSC in 1983 [Smith 2018].

John Scholes invented direct functions or dfns (pronounced “dee funs”), a major distinguishing advance of current APL over previous versions (§1.2). The ideas originated when he read a special issue of The Computer Journal on functional programming [Wadler et al. 1989]. He proceeded to study other publications on functional programming and became strongly motivated (“sick with desire”, like Yeats) to bring these ideas to APL [Scholes 2018]. He initially operated in stealth because he was concerned the changes might be judged too radical and an unnecessary complication of the language; other observers say that he operated in stealth because the rest of Dyalog were not so enamored and thought he was wasting his time and causing trouble for people. Dfns were first presented at APL96 conference and released in Dyalog APL in early 1997 [Scholes 1996]. Acceptance and recognition were slow in coming. As late as 2008, in Dyalog at 25 [Dyalog 2008], a publication celebrating the 25th anniversary of Dyalog Ltd, dfns were barely mentioned (mentioned twice as “dynamic functions” and without any elaboration).

Even APL\360, the original APL, never received the full-throated backing of IBM. Fred Brooks was the discussant of the HOPL I paper The Evolution of APL [Falkoff & Iverson 1978]. In his remarks, he self-described as a mid-wife of APL and PL/I and spoke of the effects of the “one-language policy” at IBM in the 1960s:

An outgrowth of the development of PL/I was an enunciation of an attempt to take on FORTRAN, ALGOL, and COBOL and replace them all with PL/I — what was known as the “one-language policy”. These languages each had sufficiently strong community groups. The one-language policy had no noticeable effect on them. The only one that it had any effect on that I could see was unfortunately the implementation of APL that was underway at the time. So it’s rather like one draws his sword and goes out to slay the foe, and in the process of drawing it back, clobbers the friend in the head!

— Hui and Kromberg, APL Since 1978, 2020
 

 

We sent APL Since 1978 (60+ pages) to Arthur Whitney for review. His comments:

Lot of work!
Looks good to me.

The only surprise was that he used more than one sentence.
 

 

Writing APL Since 1978 was an interesting exercise in remote collaboration. Between 2017-09-20 with the initial e-mail from Guy Steele Jr. and 2020-06-12 when the paper was published, I was the sender or receipient of 1445 HOPL IV related e-mails.
 

 

In the HOPL IV Q&A, I mentioned the WWKD (what would Ken do) subroutine that I have in my head. In the immediately following comment, Morten said,

    Well, we didn’t all have the benefit working enough with Ken to be able to predict what Ken would say, …

I would like to point out that I benefited by being very familiar with Ken’s papers, for example I typed in all of A Source Book in APL, which included The Design of APL, The Evolution of APL, and Notation as a Tool of Thought; and Operators and Functions, Rationalized APL, A Dictionary of APL, and so on; and the all-important first chapter of A Programming Language; and Ken’s Ph.D. thesis. (All of these are online in http://www.jsoftware.com/papers/ .) Anyone could have done this, but I don’t know that anyone else has.

And yes, I had the good fortune of working with Ken for 15 years on a daily basis in close quarters. Being blessed with a good memory, I apparently remember everything that Ken ever told me. That can not possibly be true, but it sure seems that way.

Even with all of these, obviously I don’t actually know what Ken would say or do.

Postscript. Would Ken sent a message like the above? He would not.
 

 

In 2019, an APL colleague and I found ourselves in less than ideal life circumstances. We (joined by another APL colleague) told each other jokes to raise our spirits. In the following, “A” is the party of the first part (that would be me) and “B” is the party of the second part (the first APL colleague).

Slightly edited and embellished from the original telling. There is no claim that the jokes originated with us.

Herewith, a choice selection from this most excellent collection:

Another time, a man walked into a bar with his dog. The man told the bartender, this here is a talking dog. The bartender says, nah! No, really, it’s a talking dog.

Bartender:If you can prove it, I’ll give you a free drink.
Man:Woofie, what’s on top of a house?
Dog:Roof!
Man:Woofie, how does my chin feel if I haven’t shaved?
Dog:Rough!
Man:Woofie, what is your name?
Dog:Woof!
Man:Woofie, what is my name?
Dog:Ralph!
Man:Woofie, what’s the animal whose scientific name is Canis lupus?
Dog:Wolf!  [How about that, the dog knows Latin.]
Man:Woofie, who’s the greatest home run hitter of all time?
Dog:Ruth!
Man:Barkeep, where’s my free drink?
Bartender:Get out of my bar!
(Whereupon he took the dog by its dog ear and the man by his man ear and threw them out. Outside,)
Dog:Hank Aaron?

— Roger Hui, Jokes We Told Each Other
 

 

There is altogether too much loose talk that π can not be represented exactly in the computer. To refute such talk, I propose a newvariable, ⎕base . The current design permits two possible settings:

    ⎕base←10     ⍝ numbers will be base 10, as now
    ⎕base←'pi'   ⍝ numbers will be base π

With the base-'pi' setting, many expressions which give unsightly inexact answers in base-10 will give exact answers.

   ⎕base←10

   sin ○1
1.22465E¯16
   cos ○÷2
6.12323E¯17
   cos ○3÷2
¯1.83697E¯16

   ⎕base←'pi'

   sin ⊂1 0
0
   cos ⊂0.5 0
0
   cos ⊂1.5 0
0

One can imagine other settings for ⎕base . With that, we will be able to say, all your base are belong to us.

Proposed 2021-04-01.
 

 

According to this page, NASA used to have a division called Space, and of course the head of the division is Director of Space. They then reorganized and created a division called the universe, whose head is … Director of the Universe.

So I’d been wrong for years. Instead of presenting my best code to the Galactic Emperor, I should have shown them to the Director of the Universe. I hope the Galactic Emperor would be amused.
 

 

I first heard of the concept of “holding the pencil” from Ken Iverson and Eugene McDonnell. Even though Ken (and Adin Falkoff) did the design of APL, the implementers, being executors of the last step from the design to the implementation, were in control of the fine details. The battles must have been fierce; see for example this anecdote in KEI Q&A.

So if you are “holding the pencil”, you have the final say even though you may just be an amanuensis. The highest compliment I ever received from Eugene McDonnell was that I “held the pencil with a delicate touch”. (I realize that some people may not consider it a compliment.)
 

 

Larry Breed, APL\360 implementer, died on 2021-05-16. As with this kind of stuff these days, I found out when someone edited his Wikipedia page with the death date. Subsequently, Bob Smith confirmed that Larry had died while surrounded by his siblings.

Larry’s programming skills are the stuff of legend. I was told that he did the original implementation of ⍕⍵ over a weekend. In case you are not impressed, that was done in S/360 assembler. Ken Iverson told me that it was Larry who championed and implemented dynamic scoping after attending a talk by Alan Perlis.

From the Jim Brown sketch in APL Since 1978:

In 1969, he got a summer position with the APL group at IBM Yorktown Research. Due to an administrative error, the summer job was not terminated after the summer and lasted three years.

Jim says today:

Larry is pretty much responsible for my APL career. He was my first manager at Yorktown Research although I didn’t know he was a manager until the exit interview. He messed up the termination so I just kept working from Syracuse.

Yes, APL (I am including J) has quite a character set, as in, what a bunch of characters.

Larry Breed (1940-2021)
 

 

IPSA. Didn’t we have a blast. Thank you, Ian. RIP.

Ian Sharp Quotations and Anecdotes
 

 

The Beyond

Talking to this bloke in The Frogs a couple of nights back. Turns out he’d had a near-death experience during an otherwise routine hernia op. After being drawn along the usual tunnel towards a White Light etc., finds himself in one of an infinity of beds equispaced down one side of a corridor stretching into the distance.

Clean, white starched sheets, heavy cotton pyjamas, bright but unobtrusive lighting, the small soothing sounds of care. Twenty-one degrees C.

Every morning they bring you a new sheet of good white paper, a sharpened pencil and a smudge-free Erasomatic™. You spend the day writing a single beautiful function, making many refinements, until you are satisfied with it. Then, and only then, you hand in your program and the day draws to a close.

You may reference, contemplate and revise programs written on previous days.

Now and again, someone called Vera comes along with one of those sturdy NHS metal trolleys to bring me a cup of tea and a ginger biscuit.

People seldom talk; there are no phones.

— John Scholes, The Beyond
 

 

They say never quarrel with a newspaper, because they will have the last word, and I suppose the same applies to chairmen.

— Kenneth E. Iverson, The Evolution of APL,
Transcript of Presentation, 1978-08
 



Dramatis Personæ

Phil Abrams
Howard Aiken
Linda Alvord
Gene Amdahl
Anthony of Padua
Fred Appleyard
J.G. Arnold
Frank Arthur
Arlene Azzarello
Michael Baas
John Backus
Dan Baronet
Frank Bates III
Batman
Brian Becker
Alexander G. Bell
Joe Berg
Bob Bernecky
Michael Berry
Paul Berry
Sachiko Berry
Sarita Berry
Eddie Bleasdale
David Bonyun
Richard Bookstaber
Beverly Breed
Larry Breed
Charles Brenner
Joel Brenner
Mary Brenner
Leonid Brezhnev
Dan Bron
Tony Brooker
Fred Brooks
James Brown
Jim Brown
John Brown
Karen Brown
Nicholas Brown Jr.
Adám Brudzewsky
Paul Bunyan
William Burroughs
David Butler
Anthony Camacho
Bryan Cantrill
Hal Carim
Ronald Chan
Paul Chapman
Carl Cheney
Ed Cherlin
Frédéric Chopin
Gitte Christensen
David Crossley
Haskell Curry
John Daintree
  Brian Daly
Devil
Lee Dickey
Edsger Dijkstra
Paul Dirac
Peter Donnelly
Flora Dowling
Graham Driscoll
H.A. Driscoll
Dick Dunbar
Ēadhelm'
Tom Edelson
St. Edmund
Ted Edwards
Albert Einstein
Charles Elmer
Alfred Emden
Erdős Pál
Herman Esser
Leonhard Euler
Adin Falkoff
S.Z. de Ferranti
Reteerts Ffoeg
Robert Floyd
Henry Foad
Jay Foad
Tania Foad
David Foot
George Forsythe
Garth Foster
Mary Ellen Foster
Ron Frank
Saint Francis
Bill Gates
Lib Gibson
Valerie Gilbert
John Gilmore
God
Jim Goff
Christian Goldbach
Leslie Goldsmith
Martin Goodman
Saul Gorn
Ronald Graham
Bill Griffith
J.C.L. Guest
Monty Hall
Patrick Harrington
John Harvard
Fannie Hertz
John Hertz
Bill Hewlett
David Hilbert
Rob Hodgkinson
Douglas Hofstadter
  Grace M. Hopper
Maria Hotchkiss
Henry Hudson
Rachel Hui
Roger Hui
Thomas Hunter
Bonnie Iverson
Derrick Iverson
Eric Iverson
Jean Iverson
Ken Iverson
Matthew Iverson
Paul Jackson
Kai Jaeger
Gunnar Jarring
Mike Jenkins
Steve Jobs
Joel Kaplan
William Keele
David Keith
John F. Kennedy
Obi-Wan Kenobi
Johannes Kepler
William Keuffel
Donald Knuth
Bob Korsan
Morten Kromberg
S.E. Krueger
Stefano Lanzavecchia
P.S. Laplace
Phil Last
Agness Lathwell
Catherine Lathwell
Dick Lathwell
Jacob Lawrence
John Lawrence
JAN Lee
Wassily Leontief
Dinu Lipatti
Princess Louise
Lu Ban
Janet Lustgarten
Eugene McDonnell
Jeanne McDonnell
Ted McDorman
Bob McGhee
Jon McGrew
Donald McIntyre
James McSherry
Gene Mannacio
Michael Marks
Marin Mersenne
Raul Miller
Jane Minett
Mike Montalbano
  Jeff Moore
Roger Moore
Trenchard More
Henry Morgan
Moses
Jim Muldowney
Allen Newell
Nick Nickolov
Andrew North
David Oldacre
Brian Oliver
David Packard
William Packard
Blaise Pascal
Oren Patashnik
St. Patrick
Jan Peeck
Howard Peelle
Richard Perkin
Fred Perkins
Alan Perlis
Richard Potyok
Julia Powers
Graham Prindle
S. Ramanujan
Jack Ramsay
J. Arthur Rank
Paul Reichmann
Cynthia Rhodes
Henry Rich
Will Robertson
Robin
Al Rose
Laurie Russell
Jim Ryan
Harry Saal
Kyosuke Saigusa
Miyoko Saigusa
Tom Sawyer
Don Scheer
Barbara Schick
John Scholes
George Scranton
Robert Sedgewick
G.K. Sedlmayer
Tom Selleck
Timo Seppälä
Valentina Settimi
Jeffrey Shallit
Wm. Shakespeare
Ian Sharp
Karen Shaw
Andy Shiers
W. von Siemens
Eugene Skinner
  Anakin Skywalker
Luke Skywalker
Keith Smillie
Bob Smith
Don Smith
Richard Smith
Morgan Smyth
Thomas Spencer
S’chn T’gai Spock
S. Srinivasa
Zbigniew Stachniak
Leland Stanford Jr.
Harold Stanley
Mary Stanley
Guy Steele Jr.
David Steinbrook
Bill Strachan
Geoff Streeter
Edward Sussenguth
Gerald Sussman
Roy Sykes Jr.
Stephen Taylor
Santa Teresa
Larry Tesler
Karen Thompson
Norman Thomson
John Thorstensen
Mark Twain
Alan Turing
Joey Tuttle
Darth Vader
Queen Victoria
Marie Vilmansen
St. Vitus
Philip Wadler
George Washington
Arthur Watson
Thomas J. Watson Jr.
Thomas J. Watson Sr.
John Wegman
Walter Wegman
Peter Wegner
Arthur Whitney
Eoin Whitney
Rita Whitney
John Wiley
Maurice Wilkes
Garry Wills
Luther Woodrum
Y.B. Yeats
Yoda
George Yonge
David Ziemann
Max Ziemann
Miranda Ziemann


Compiled and edited by Roger Hui (who also contributed the items not explicitly attributed).

created:  2010-09-18 12:00
updated:2021-09-27 11:00