Transcript
Special thanks to Adám Brudzewsky for providing this transcript.
00:00:00 Bob Therriault [BT]
"Roger Hui passed away peacefully on Saturday afternoon, October 16th, 2021."
"He had a several year struggle with cancer and was in a hospice with his hands held by his wife Stella and their children Rachel and Nicholas."
"Roger created J with Ken and made major contributions to APL. But all that has been farthest from my mind the last 24 hours. What I think about is the joy I saw when watching Ken and Roger together. I remember Ken telling me how Roger asked if it would be OK to bring his girlfriend to dinner with Ken and Jean. And how they were surprised by the coincidence that her name was Ken's mother's name. No one was surprised by the integrity and soundness of the family that he and Stella made."
"Yes, Roger was a coder extraordinaire. But what was more important is that he was a rock-solid good person. His calm and measured way in life and in his last years should be a model to all."
00:01:05 [Music Theme]
00:01:17 Conor Hoekstra [CH]
Welcome to another episode of Array Cast. My name is Conor.
We are going to go around and do short introductions. We'll start with Adám, then go to Stephen and then go to Bob and then we will jump into a couple announcements and then move onto chatting with today's guest for a little bit of a different episode.
00:01:34 Adam Brudzewsky [AB]
I'm Adám Brudzewsky. I'm a lifelong APLer and currently a full time APL programmer at Dyalog Limited.
00:01:44 Stephen Taylor [ST]
Hello, I'm Stephen Taylor. I've been an APL programmer since forever and these days I'm the Kx librarian.
00:01:52 [BT]
And I'm Bob Therriault. I'm a J enthusiast and I've been working with J for 20 years, but I'm not a professional programmer and that's my story.
00:02:04 [CH]
And my name is Conor, I'm your host for Array Cast. I'm a C++ professional, or I develop professionally in C++, but I'm a huge APL and array paradigm enthusiast.
So, I think we are throwing it to Adám for a couple announcements and then we will hop into our discussion with today's guest.
00:02:24 [AB]
In a bit over a week from today, it is going to be Dyalog '21 user meeting. It's free and open to all but requires registration. Link will be in the show notes. And then there is going to be a memorial service for Roger Hui and in the same day that this is being published.
00:02:51 [CH]
And I think, yeah, we should just mention the dates in case you are not watching this the day this comes out. I believe Dyalog 2021, the conference, is two days and it's, I believe, Monday–Tuesday, November 8th and 9th, if I have that correct. So, if you're if you're listening this, to, a week after it's released, it's probably only a day or two away, and I think you can register up until the last moment. It's completely free, it'll be streamed online and so yeah, definitely recommend folks that are interested in APL, Dyalog APL, or just the array paradigm in general, checking that out 'cause it's definitely an awesome resource.
With all that being said, as you heard off the top of the episode, Roger Hui passed away, very sadly and we decided that today we were going to sort of reflect on Roger's life, read out a few different things that people have sent in in the sort of J programming community and we had originally planned to have on, Morten Kromberg, the CTO of Dyalog APL, who has at multiple different companies, worked with Roger Hui, so we thought it was appropriate to keep him on and he's definitely gonna be sharing a lot of what he knew about Roger from working with him and just knowing him over many years. So yeah, I think we will throw it to Morten – you can do a brief introduction of yourself and then we'll hop into discussing, you know, Roger Hui's life.
00:04:11 Morten Kromberg [MK]
OK, well I'm Morten Kromberg. I'm the CTO of Dyalog Limited, so Gitte's my boss, if you heard the previous podcast 2 weeks ago. I've been at Dyalog for 16 years now, I think, and for the last half of that, I had the pleasure of working with Roger. He did a lot of work for us that we'll be talking about.
There is one comment that I had prepared for the topic that we were going to, that we originally had, that that I still want to make and that's it. Yeah, thank you for having me. The Array Cast is absolutely awesome. I've been in the array language community now, I think, since 1979 and I learn something with every episode. I don't know how you keep it up. I hope you. I hope you manage to keep going.
00:04:59 [MK]
Having said that, the one thing that sort of worries me a little bit about this is, knowing Roger, there's a suspicion he would have been somewhat annoyed by us arranging this podcast to talk about him, rather than concentrating on important work – the work that he was passionate about. In the three years that he struggled with his health, he did everything that he could to downplay the seriousness of his condition, and just keep it from becoming a topic. I know both with respect to his duties at work and at home. But I do know that he did contribute tributes to both John Scholes and Dan Baronet, when they passed some years ago. So, I suspect he will forgive us.
00:05:53 [MK]
Unfortunately, you know on a day like this I'm also reminded of John Scholes who passed, I think, about three years ago, and he would joke, as Roger often did, but about his condition: John would say, he was worried that when he got to the pearly gates, and he had to give an explanation of how he'd spent his life, all he'd be able to say was "I worked on this one program all my life, and I nearly got it to work."
00:06:22 [MK]
Roger had higher expectations, actually: He expected the Galactic Emperor to be enough of a nerd to want to see some code. And Roger often referred to the need to impress the Galactic Emperor with code, and that this was part of his motivation for really working on refining the language so that we would all be able to write what he called "monument quality code". And I'm pretty sure that meeting went well. I'm convinced of that.
00:06:58 [MK]
On the J forums, in response to Eric's announcement, there was one message from Rob Hodgkinson, that I found really characterized Roger really well. Rob writes that Roger was "clear, firm, intelligent, decisive, kind and gentle", and I haven't been able to come up with… I think that that just describes Roger perfectly. And of course, getting the balance between firm and decisive and kind, and kind and gentle right, in an email can be interesting, as you discussed with Gitte in the previous podcast, and the difficulties of communicating tone and so on in electronic communication and Rob also goes on to say, "And funny how that reminds me of both Ken and Roger alike."
00:07:56 [MK]
And yeah, some of us did get into trouble, you know, with the rope that had been extended to us in discussions with Ken or Roger. You could easily reveal that you hadn't thought quite enough about the topic and then they would kindly and gently put you out of your misery, I think, it's fair to say.
I did find that Roger was nearly always right, and although I was essentially his boss for the last eight years. I think in that time I only very few number of times, dared to take decisions going against his advice for commercial or other reasons, and in every case, I'm still worrying that it's going to come back and bite us at some point in the future.
Roger was utterly reliable. If he said something would be done, then you could count on it.
00:08:50 [MK]
So, I actually worked in the same company as Roger, IP Sharp Associates nearly 40 years ago, but it took us quite a while to get together and actually work on a project. So, Roger was in the Edmonton office, and I was in the Oslo office of IP Sharp Associates.
00:09:14 [MK]
And I'm trying to sort of imagine how different that really is to how people work these days, when a lot of people are working from home, but we sort of, we felt fairly isolated. We were in these one or two, maybe three, person offices spread out across the world. We typically had somebody with some commercial sense and then one or two more technical people, whose job it was to go out and restart the data concentrator, which held our offices together through these through modems and leased lines. We were lucky in those days to have kilobaud lines keep keeping us together.
00:09:51 [MK]
Gitte explained, a couple of weeks ago, that she imported me to the "massive" Copenhagen office where there were five or six people. And perhaps I can tempt you and the listeners with a story about pre-internet, online romance, for a for another podcast, if you invite me back later. But Roger was in Canada, I was in Oslo and later in Copenhagen. We never worked on the on the same project. So, I was very young – Roger was already working with Arthur and later Ken on various projects.
00:10:29 [MK]
And of course, IP Sharp came to an end, pretty much. Reuters acquired IP Sharp Associates. IP Sharp was yeah, maybe I should explain that, not everybody knows that: The IP Sharp team was involved with IBM.
The first APL implementation. Implemented the first APL interpreter, and then had a license to run timesharing on it and connected customers together using this global timesharing network.
Anyway, Reuters acquired IP Sharp essentially for the databases, and those of us who were software people were all regurgitated at that point and went off in different directions.
00:11:13 [MK]
And one of the things that that we did, the Copenhagen office, was we developed the tooling side of our business and created an SQL interface that we managed to sell to pretty much all the APL interpreter vendors and that eventually got us connected back to Roger.
00:11:30 [MK]
We went to the APL conferences every year, build the network and maintain it. And then as a result of that, and the work we'd done on relational databases, we merged with this British company called the Adaytum Software where I became the CTO and Gitte managed the Nordic sales and support operation for what was a business intelligence system, financial planning system.
And Adaytum Planning was based on Dyalog APL, but had at its core a little engine written in C that managed large arrays that were too large to fit in the APL workspace, because the APL workspace had a pre-allocated size, which was not really ideal for a general purpose business intelligence product.
00:12:16 [MK]
And at that point we realized it could be a good idea to go back to our ex-IPSA colleagues, Eric and Roger, who were now running Jsoftware and see whether we could replace the code, the C layer, with the J interpreter, which we knew didn't have this limitation of fixed workspace size. And in addition to that we had the idea that we could fund the development of the sparse array implementation in J, so Adaytum Software funded the sparse array implementation in J, and that I think is the first time that I got to work with Roger; I was his customer – they were working on enhancing J for us.
00:13:05 [MK]
And later, as Gitte explained, the data was sold to Cognos and eventually we joined Dyalog in 2005. And at that point Dyalog was, I think, a small team of about five or six people. And fortunately, what we were able to do at that point, was to talk to the customers and point out that we needed to replace the existing development team. We need to hire a whole bunch of young people to grow the development team and to offer new services, increase the service levels, et cetera. And fortunately, the customers of Dyalog at that point decided that this was really a good deal. It was, it was going to be much cheaper than what they had started planning as an alternative. And so, over the next few years, the Dyalog team grew very rapidly. We had we had the revenues to hire new people into the team, and in 2008 I got an email from Roger with a rather cryptic subject line: "business proposition". And fortunately, it was all in lowercase, so I didn't delete it unread.
00:14:24 [MK]
And that was the start of a of a really happy time, I have to say, at Dyalog, The next decade, we had John Scholes and Roger Hui working together driving the language design at Dyalog. So, we had John with his dfns and other functional ideas that were coming into the mainstream at that time. They had really been very much an experiment up until that point. And then we had Roger teaching us the joys of First Axis emphasis and bringing in various constructs from J and Sharp APL.
00:15:08 [MK]
Of course, those were not… It wasn't entirely accidental. Gitte and I had been at Sharp in the in the late '80s, and in fact Ken had started publishing the work that eventually led to J, at that time. So, we were actually quite keen recipients of this.
00:15:29 [MK]
So, for the next, yeah, for the next decade Dyalog put out a release, about once a year and you can see we started off really carefully. Roger, originally in his email, his business proposition was that he speeded up some things in Dyalog APL. He had asked us whether he could have a free copy of Dyalog APL. At that point it wasn't free, so he had to ask and we gave him that, and he quickly came back and said, you know, you could speed up this, that, and the other thing.
00:15:59 [MK]
He was very careful never to use any of the J source codes and he played, you know, "with a straight bat" as they say in in the UK. But obviously many of the ideas were reused. So, he speeded up matrix multiplication, Boolean scans and reductions. And then we just had this one little language feature that came in, the table function, comma bar which is like Ravel except instead of always giving you a one-dimensional array, it gives you a two-dimensional array. 's first baby step in the direction of first axis emphasis.
00:16:35 [MK]
And then over the next few years we gradually brought in things like, you know, the identity functions Left and Right, short arguments to take drop an index which is more first axis emphasis, which to me is still sort of the main realization that's in J that we should all really sit up and take notice of.
00:16:59 [MK]
And from there on, we you know we had the extension of Dyadic iota to higher rank arrays, which again is a natural result of first axis emphasis, Rank and Key operators, Tally, function trains, Where and Interval Index, and so on. And always, Roger would propose these ideas from J, but we wouldn't necessarily bring them in unmodified. And often, Roger would go off and ask on the J forums whether there was experience from their use that suggested they should be done slightly differently. So, not all of the features are identical in Sharp A… sorry, in Dyalog APL and J.
00:17:47 [MK]
We got a lot of that stuff done in those ten years. There's still a couple of things missing. We recently did Over and Atop and Unique Mask, but there's some some things.. There is some unfinished work: Under and Obverse, et cetera. We can maybe talk about those in a different uh episode, it's not that relevant here. Rational numbers… There's still many things that Roger worked on that we that we would like to bring into Dyalog APL.
00:18:21 [MK]
So, the thing about this, that that really makes me happy, is that with Roger's help, we were actually able to repair some of wounds that opened up back in in 1983 when the APL community split into the Sharp APL side of things, which then also included J, and the APL2 side.
And now we have, you know, we have the best of both worlds. We understand the benefits that that came from both sides.
00:18:56 [MK]
And much to my surprise, working with Roger, he really loved the dfns. I was expecting that he would be a hardline tacit programmer, but he actually very keen on the dfns, and you can see that in many of the operator special-cases, the Key and Stencil, where the left operand can be a user defined function, Roger was actually more interested in optimizing little dfns than he was in little tacit definitions.
00:19:32 [MK]
So that was a really great period where Roger helped us so much. And I think, together with John Scholes, created a foundation from which I think APL can really start to grow again.
00:19:49 [MK]
Then of course finally, after, in fact, after he was diagnosed with his illness, we were invited to write, or he was invited to write a paper on APL at the History of Programming Languages IV conference, which was supposed to be held about 18 months ago and was postponed. And Roger really threw his heart and his soul into that, and I was invited to join him with that. I did, you know, I did some of the work, but Roger really did all of the heavy lifting.
00:20:30 [MK]
I think if you if you read the paper, you'll see it's fairly obviously the work of two authors: One who's talking very seriously and fundamentally about timeless language enhancements, and one who's writing down recollections of history in a more chatty style.
I think it sort of worked, but Roger's part is really the lasting part and I'm really grateful for that opportunity, the fact that Arthur and Kx supported the work with the grant, and above all that Roger was still in pretty good shape in June of this year and managed to do the presentation himself at HOPL.
And Roger was also, I think it's worth saying, Roger was really happy that he was able to figure out that one of the anonymous shepherds on the paper was Guy Steele and he felt that Guy really asked all the right questions and significantly improved the quality of the paper. And that was just a few months ago, and that's really the story of collaboration with Roger, which has been a joy all the way through.
And I think I'll take a little break there so we can talk about it.
00:21:57 [AB]
I worked for many years at Dyalog, together with Roger, and not always closely with him, on various projects, but often had discussions about theory and design and I also had the great pleasure of working on a project we called Total Array Ordering, or at least "almost total" and, again, a paper that where the bulk of the work was done by Roger, but the design work behind it was a group of Roger and Jay Foad and myself.
00:22:40 [AB]
And the process itself was very valuable. It involved hundreds of emails, back and forth. Roger was passionate, and he was respectful at the same time.
00:23:02 [MK]
And he was very careful, right? And, you know, I briefly mentioned the fact that we didn't do Dual or Under right, and that's because, you know, partly because we had some unresolved issues about it, where you know you sort of had Roger, you know, the old-timers, the conservatives, on one side, saying that the Structural Under and the Mathematical Under, which are combined in BQN, should really be Separate, and the young Hobbits, the hasty Hobbits, wanting to move forward faster. And I think it's a really important principle in design that you take the time to have these discussions, the hundreds of emails, that you take all the input, and you know, if there's dissent... I know the original APL\360 team… I think it's documented that they had this Quaker consensus goal, always. That if there was anybody who felt unhappy, well then you just went away for a little bit – took a break and came back later. And Roger was really good at that; bringing out everything, 'cause he knew so much.
00:24:21 [BT]
And one of the things I think, it was in the HOPL video, when I was watching it, Roger talked about the difference between a language designer and a programmer, and saying that when a programmer makes a mistake, it's a bug and it can be fixed. Whereas with a designer, if you make a mistake, you're going to be living with it for a while! And then that, to me, a lot of times, when you see the languages are developed and things, you think, "Is this too conservative?" But then when you think about it that way, you think, "No, everything that's brought in, needs to really be thought out", and that's one of the… I think that's one of the traits that Ken and Roger brought to the process of APL and then J was, it wasn't just about throwing in the newest thing, they would not add on as much as they were… if something didn't make sense, they were more likely to take it away.
00:25:11 [BT]
And that was, you know, shown in recently that tacit modifiers came back in J. And I was talking to Eric about that. You know, what caused that, and he was saying to me that, "well, it was something we took out because we couldn't support it and there was really only three or four people at all that were even using it, and it was too much work, and so we just said… we took it out", but he said, "when we took it out, we left all the hooks in place." So then later, and it was actually telling me... off this podcast, when Henry said it's not coming back, he said. At that point Henry thought to himself, "Did I really say that?" And then Eric and Henry talked together and went, "You know, we could bring that back. More people could probably…" And then they did. But it's one of those things that they actually would subtract before they would add, and if they added, they added very carefully, because they know how important is when you're designing something like that.
00:26:02 [MK]
Yeah.
00:26:03 [AB]
And Roger was really, really careful. He, when we were designing this Total Array Ordering, he wanted to make sure that… firstly, that everybody understands exactly what's going on in every detail, every implication of it: Make sure everything is consistent! Which is a problem we see in programming language design; things end up being not consistent or even contradictory.
And Roger, I wanted to, if I should add another word, I think to all the adjectives that Morten listed, I think "carefulness" is maybe worth adding.
00:26:33 [MK]
He was very careful. And I very frequently wish that we had been more careful, and I would love to take some things out, but we cannot, unfortunately. I mean that's the curse. Once you have an installed user base, but that's another discussion, maybe.
00:26:54 [BT]
When we had heard about Rogers passing, Henry Rich was kind enough to include something that he'd written down, and I'll read it from Henry right now, because it fits right with the programming and Roger's approach to it.
Henry writes:
"I shared only a few words with Roger face to face, but we exchanged hundreds of emails. They were almost all technical, so it is as a programmer that I remember him. No one has influenced me more than Roger.
"I encountered Roger when we were both in our early forties. By that time I had developed a very high opinion of my own programming ability, but as the years went by it became clear that Roger used APL/J with greater skill than I could achieve. He said it was just practice, but after many years of continued practice I have to differ.
"As it turned out, I took over the code for Roger's J interpreter about 5 years ago, and have spent most of my time since working on it. Surely no one has studied Roger's code more deeply than I have. It is characterized by elegance, brevity, and perfection. The design matches the need perfectly, without exceptional cases. The coding has a minimum of repetition owing to the use of a very well-designed set of macros and by implementing many operations in J itself. Each individual function is coded in just the right order, with no wasted effort.
"Even as parts of the J interpreter are recoded for modern CPU architectures, Roger's design remains as sound as ever. It is said that no man is a hero to his valet. Well, in programming terms I am Roger's valet, and he's still a hero to me."
00:28:41 [BT]
And having spent time talking to Henry on this podcast, I think everybody understands that Henry is a rather exceptional person as well, and to have people like that contributing to a project like J and in Roger's case, APL as well or Dyalog as well, I think we're all very lucky that they have put their effort into these things because, you know, they don't have to. They don't do it 'cause they, you know, they have to. They do it because they wanted to. They did it because it was important, and we all benefit from that.
00:29:18 [AB]
It reminded me, this was that Henry was saying, reminded me of something Roger said about himself in regards to Ken Iverson: Nobody studied Ken's writings more than what Roger did. Roger wrote up, digitized a large quantity of his writings and spend all this time, and studying with Ken and just observing.
Again, it shows this carefulness and well, yeah, hopefully, Roger's direction is being kept, we're seeing, Henry seems to be in the same kind of style as what Roger was to Ken.
00:30:13 [MK]
Yep.
00:30:14 [BT]
And I think one of the things that came up through the again the HOPL video that, you know, you remember this Morten, you were referring to a book, and I think you asked Roger if he'd already entered it into the J software essays or the library there.
00:30:10 [MK]
Yep.
00:30:31 [BT]
And whether he scanned it and put it in. And he says, "Well, I didn't scan it, I keyed it all in."
00:30:37 [MK]
Oh, he works so hard, but not, you know, not unnecessarily. You know, I mentioned features and things that he added to Dyalog APL, but of course he also increased the quality of the code that he often replaced. And, well, it's something we spend a lot of time on, is optimizing code, and Roger had this very strong rule. Said "well, if you can't make it, at least twice as fast, it's not worth the added complexity and work, the risk associated with it". Whereas in the past we'd, you know, we'd often go on and tune things to get an extra 5% or 10%.
00:31:17 [MK]
Roger conserved his energy and the quality of the resulting code it's amazing.
00:31:26 [BT]
So, one of the things that comes up is Roger as a writer as well, and Chris Burke, who's spent a lot of time working on the J wiki and setting it up and the essays and those kind of things, wrote this:
00:31:41 [BT]
I knew Roger for more than 30 years, first at IP Sharp and then working with him at Jsoftware. It was a great privilege to be part of the J team with Ken and Roger.
When I think of his life's work, it is not just for the development of J and APL systems, but also for an outstanding collection of Essays and Papers that Roger worked on quietly for many years, right up to the end. His Essays alone were a major reason why the J wiki became so successful. Many a time I referred to them to see how Roger would solve a problem. A recent effort that reflects his deep understanding of APL is the HOPL IV paper on "APL since 1978", jointly written with Morten.
Despite his outsized talent, he was easy-going, modest and unassuming with others. He and his family became friends with us. We were fortunate to live reasonably close both in Toronto and Vancouver and in recent years we were able to meet up at his home, or for dimsum at his favorite restaurant. He enjoyed games and was a mean scrabble player. My son shared his birthday and they always exchanged greetings. He will be sadly missed by all our family.
00:32:51 [BT]
And that's from Chris Burke, who's now currently is working with J and does a lot of work with the forums and the infrastructure, and I can't even imagine all the things that Chris does. I'm sure at some point I'll find out, but I think Roger actually did a lot of those things before he moved over and shared his talents with Dyalog, so there's been a lot of people, I think, that have tried to fill Roger's footsteps and have probably done really well, and probably figure out how big those footsteps are.
00:33:24 [MK]
Yeah, I mean in the long term, that work may actually be the most significant. I mean, I know that that, you know, when Roger got his diagnosis, he shifted his focus from coding to making sure that the archiving work and the write, you know, the writing of the APL Since 1978 paper and so on. Because you know, all code will eventually be replaced by some other code, but Roger really believed that reading those documents… I mean he read both the old array language texts, he read Donald Knuth. He, you know, he devoured papers about different kinds of algorithms for searching and so on.
00:34:07 [MK]
He was incredibly knowledgeable, and then he sat thought about these things for ages and that that's why everything that he did was so good. And yeah, he worked on this over the decades and ramped it up at the end.
He also collected anecdotes about APL people and those are also really worth reading as well.
00:34:35 [MK]
I have a huge problem now that I used to, you know, if I needed to verify some historical fact, I would just drop Roger a line, and he'd be back in 30 seconds and saying you know, so Adin Falkoff said that in you know 1978. It's embarrassing when he says, "You can read about that in this paper, called APL Since 1978 by Hui and Kromberg." Yeah, I it's hard to remember 100 pages of stuff, right?
00:35:09 [MK]
One of the things I'm actually, you know, hoping we can do this winter… We have quite a few new folks at Dyalog and I really want to organize some kind of reading program over the winter where we'll sit down and go over Rogers collection of both things he wrote and his collected papers, and read them and make sure that the, you know, the new team who are going to carry this legacy forward, are well versed in this, 'cause I think it's really important that we bring the history with us. Think it's one of the best ways we can honour Roger and make sure that his work is carried forward.
00:35:50 [CH]
Yeah, one, I mean of the, I think, all of us here, I'm the only one that never met Roger personally, but I've already been impacted by his work and as Morten said, the documenting that Roger did just… I think it's been announced, or we talked about this in the last couple episodes, is that I've been trying to hunt down like the history of tacit programming in the form of trains that shows up in both J and Dyalog APL. And there's the difference between 2-trains in J and Dyalog APL. In J, a 2-train forms what's called a hook which corresponds to the S-combinator in combinatory logic, and then in Dyalog APL, it corresponds to just basically composition or what's known as the B-combinator.
00:36:47 [CH]
And I had always sort of thought that the APL model was better, but also viewed J as sort of APL 2.0 and Ken and Roger's, or Ken's second project, which Roger obviously was the main implementer of, and so I could never figure out, you know, reconcile the fact that why's this idea in J but it's different in Dyalog APL, and sure enough, through my research I found a paper that Roger had written in 2006 called "Hook conjunctions?", and we'll throw a link in the show notes.
00:37:21 [CH]
And he explicitly says in that paper that, sort of, trains were first introduced in J, not in APL. And after 16 or 17 years from when they first introduced it, he had come to the decision that using a hook for a 2-train was a mistake, which is then why when they showed up in Dyalog APL eight years later, you can infer that you know they went with the B-combinator, or just composition.
00:37:48 [CH]
And if it hadn't been for that paper that Roger had written, which it's a very short read, it's like, you know, you can read it in a minute or two, so it's, you know, probably wasn't a ton of effort for Roger to do, but the impact that it has on me, you know, trying to find the answer, you know, "What's the difference?", I'm sure there's a few people that, at Dyalog APL, that if I, you know, had access to them, like Morten said, I could just ping them a question on you know instant message or something, but yeah, the papers that Roger's written are answering like you know, explicit questions that I have in my head and that's like as a history of sort of programming languages nerd.
00:38:24 [CH]
But also, you know it's important to inform like what was the motivation between design decisions and differences. I just think it's the impact. It's immense and it's so useful to be able to go back and have this sort of history of documents and, you know, motivations. Yeah, it's fantastic that he emphasized that as a part of what he wanted to focus on.
00:38:53 [MK]
Yeah.
00:38:54 [AB]
Do you all know that Roger was a prolific contributor to Wikipedia? He had way over 4000 edits on Wikipedia. And it wasn't just about APL. Sure, I mean his most edited articles are about Ken Iverson and John Scholes and dfns, but all kinds of other things, he was busy with as well.
00:39:20 [AB]
There's so many papers and even the list of papers that is on the J software website doesn't include all his essays that are part of the J Wiki, that I don't know what good way to even find them.
00:39:37 [MK]
Yeah, so Adám when we do language design in the future, we're going to have to do this kind of thing. I mean, sort of an art that was very much practiced back in the '80s, right? I mean, I remember going to APL conferences in the '80s where Iverson and Benkard and Jim Brown would be, you know, arguing about these things and they all wrote them down.
00:39:57 [MK]
These days there's a tendency just to go and do stuff and then that's something I feel is really important that we hang onto with a new team, which is why I want to go and read this stuff and we must continue this tradition of collecting it.
I don't know whether the APL Wiki should consider moving the stuff which is on Jsoftware to a different location, or whether Jsoftware is really a fine place to keep it, and that's where it all is right now.
00:40:30 [BT]
You guys are blowing my cover right now, 'cause Eric's been talking to me about trying to do some stuff with J Wiki, so it's going to be one of the things that I've gotten in my area of concern, I suppose, over the next couple of months and I'll have lots more to talk about, but those are the kind of things that we're certainly looking at to see how we can best make use of all this information that's in there.
00:40:53 [BT]
Because there's a tremendous amount of information, and one of the things when we say "essays", you know, people think "well, it's written out 'essay'", but a lot of Roger's essays are almost like what I think of as math papers. You look at them; they're 3 pages long, and it probably takes you about a month and a half to read them because you have to work your way through them and then right like you go "Oh yeah, this is really easy." There's an essay in there was reading last night called the "88 Hats problem" and it's, you know, it's a question: you've got 88 people in a room – I can't remember exactly what it is – they've got numbers on their hats. The numbers can be the same. How do you ensure that at least one person writes the number of their own hat even though they can't communicate it and they can't see their own hat? No mirrors or anything like that.
00:41:39 [BT]
And you think, "OK, well, that's pretty simple to explain" and two lines into it, like… For one thing, it's a difficult problem to come to grips with if you don't… There's a spoiler, and if you do get to it then you get "OK, this is the solution and it's like… Oh, OK, uh", and it's… I ran across the same thing where there was a lab that Roger did on Catalan numbers that I turned into a video series.
00:42:07 [BT]
And part, you're thinking, "OK, this is easy, it's like step, step, step, step; look what we can do" and then suddenly there's this extra step and you realize what's happened is, he's spent, I don't know how long he would spend for it, but there's a huge depth of thinking that goes on, and it's like the professors that write on the board, you know, "as can be shown" and then bang there it is. And then you work your way back through it and it's all there, but it's these essays are… they are challenging which is amazing because you don't usually think of essays written that way, but Roger style of writing is a deep style. It makes you think it, pushes you and that's, I think, what makes him quite unique, and what I've seen in terms of teachers, is that he I don't think there's too many people who can read what he's writing that aren't challenged by it, at different levels.
00:42:59 [BT]
For me it's over my head and it's weeks before I really let things sink in and figure it out. I'm not a deep enough thinker for that. He is. I'm a surface guy. You know, that's why I do podcasts.
00:43:12 [CH]
I will say, just to contrast with Bob said, like I agree that many of the papers, not just written by Roger, but just by the APL community, can, you know, from back in the '70s and '80s, they read like academic papers, but they're in my opinion, the most readable academic papers I've ever read in my life, because the, sort of, language that they are using is APL or it is J, and that's like what you program or code in.
00:43:44 [CH]
And so, like I, you know, I've had that, you know, trying to read some academic paper on, you know linear algebra and just, you have to read it like 6 times just to digest, you know, 50% of it. Whereas there's many times where I read the "Phrasal Forms" paper from '89, or the "Hook Conjunction?" paper from, you know, 2006 and it's literally like a single pass, and I understood exactly what they were communicating because it's you're reading when it comes to like a little math diagram or some, you know, symbolism it's in APL or an outer product that you're looking at, and you can just read it. And like if you have learned enough about it, you can just execute it in your head and see the result on the page, and it sort of maps.
00:44:25 [CH]
And so yeah, the papers and the essays that have come out of Jsoftware and the array community at large, in my opinion, are the most readable, sort of, form of academic papers I've ever read, which is a huge testament to the work that, yeah, Roger and Ken did.
00:44:44 [BT]
But they are very much academic papers because they're very precise and they… I find they go to great depths, as I said, you can follow your way through it, but they are not they're not skims. At least that's not the way I look at them. They're well thought out and they're, as I said, the communication is very clear that's Roger and Ken as communicators. In fact, one of the again, I watched the HOPL video last night and there was a question posed by one Conor Hoekstra, I think, who's asking about combinators. Amazingly enough, all this time ago, and question about combinators and whether this was a combinator and whether this was the S-combinator and why they decided to use the phrase "trains".
And Roger said he found "phrasal forms" a bit scary in terms of vocabulary. "Trains" were a lot easier to deal with, and he rode one practically every day, so that that there was very much about keeping things really simple, the language being very simple and straightforward. So that I think that also contributes to the ease of reading, is that they aren't throwing a lot of jargon at you, although I mean to be fair, they're making some of this stuff up, so they're making up these words that stand in for other words in other areas, but they're all often very simple words, they're, once defined, you're not trying to… I don't know how to speak German, but my understanding of German is quite often they conglomerate words together and that isn't the way that a lot of Roger's writing goes. It's more about taking a simple word, making it stand for something else, and then using a simple word all the way through.
00:46:34 [CH]
So, I feel like maybe we should ask for some inside knowledge or some, you know personal or, you know, company anecdotal stories about Roger, for the last, you know, 10 or so minutes that I'm not sure if there's any off the top of folks' heads, whether that's from some conference or… I'm sure there's some you know tribal lore, that's only known amongst the inner J community or array community.
00:47:06 [MK]
Yeah, but I mean Roger wrote all this stuff down, right? I mean, one of the interesting things… I mean, Roger is a very funny guy, you know. Rob had this "clear, firm, intelligent, decisive, kind and gentle." And Gitte and I were looking at that saying, "yeah, that's actually perfect", but actually he's funny. Roger is really funny. One of the problems was, you know, his humour is so dry, I mean, it's like he's writing: it's so precise and so on, but very often, yeah, it sails over the head of 95% of the audience. They didn't get the joke, although it was very carefully planned and executed it still… And Roger's daughter Rachel noticed this, I think, watching some of his recordings, and she suggested that he try to tell some ordinary jokes. And that's why one of the papers is this one called "Jokes We Told Each Other".
So, you know, there's the anecdotes about Ken and various other people in the APL community, but there's also a collection of jokes of that that Roger told, exchanged with his family and his friends, for use in presentations and other situations as well.
00:48:20 [MK]
And Gitte said "well, you have to also say he's a gourmet." Right, because although again, Roger would joke and he says, "well, I'm on a seafood diet," he loved puns, right? "So I see food, I eat it."
But in fact, I was so fortunate, Canada opened its borders a month ago to vaccinated travellers and I was able to go and see Roger about a month ago. And of course, I came home with a to-do list of stuff I should do, and a not-to-do list. And two recipes for Gitte, because Roger remembered the meal she cooked come at the Dyalog Towers as we call it jokingly, in Basingstoke, where foreign guests are put up. So, we also have two recipes now that we can remember Roger by. It's going to be great.
00:49:16 [CH]
Do we have the jokes we told each other paper?
00:49:20 [MK]
Ah, it's on jsoftware.com, so I presume it's… we can link to that as well. Ah OK, what is that one? The one that made Roger really happy because he told it to his daughter Rachel when she was four? How's it go? "What does silly Billy call his pet leopard", right? Is it, "you have it in front of you; 'Stripe'", I think. And then he asks Rachel, four years old, "what does silly Jilly call her pet zebra?" And Roger writes, "And I was so happy that she immediately, without thinking, was, responded, 'Spot'", which is kind of like an empty array joke with knobs on backwards.
You have some more Bob?
00:50:14 [BT]
No, I was I'd read that one and I thought that was really cute that he was so impressed that she at that age could catch on to what he was saying and then flip it. And as, you know, as a dad, that's the kind of thing when you see that your kids do that, you just, you know, it's it just makes your you know you feel like your heart is going to blow out of your chest 'cause it's just like "wow"
00:50:38 [MK]
Exactly.
00:50:38 [BT]
This is, you know, that's a really cool little human being in there, and then I can just… that whole story I thought was so nice.
00:50:49 [AB]
Roger liked making jokes on pop culture and commenting on current events and past events. He was the one that that wrote up, we have it, it's a blog post – we'll link to it – called "APL Puns", where he uses APL symbols in various humorous ways, often relating to Star Wars. And I'd also like to read something that he wrote. He sends a link – we'll put that as well ― it was some oral histories from NASA and then he writes:
"According to the above, NASA used to have a division called Space, and of course the head of the division is the 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 showing my best code to the Galactic Emperor, I should show them to the Director of the Universe. I hope the Galactic Emperor would be amused."
00:52:03 [BT]
And that story you told here in the beginning, Morten, about meeting the Galactic Emperor, I think in one of the things, in one of his writings, he writes about Euler's formula and the fact that, presented with the Galactic Emperor, he would would hand Euler's formula to the Galactic Emperor, and they would look at it and respond, "Respect."
00:52:30 [AB]
Right, it's actually one of the things he was busy with at the very end. One of the last things that he was doing. In that formula, it comes up, the problem of multiplying by the imaginary unit. And J has a built-in function for this. It can either monadically, it just multiplies by i or dyadically, it adds the left argument to i times the right argument, and its symbol in J is J and a dot (j.).
00:53:14 [AB]
I know Roger very much likes this this identity, and I don't know if that's why it's called J dot. This seems like a special name in J, but so, we had some discussions back and forth regards to assume, what would the symbol for this be in APL, if –and the question is: should APL have this function built-in? – and then it also came up as a discussion with Guy Steele who was supervising this APL Since 1978 project.
And I just looked down on the J Wiki; he actually has a lot of edits on tiny little images of symbols that could be appropriate for this, so yeah, attention to detail that when eventually he presents this formula, written in APL to the Galactic Emperor or the Conductor of the Universe or whatever it might be, then he wants every symbol to be as fitting, as beautiful as possible.
00:54:27 [BT]
Yeah, I was looking through the wiki last night and he has over 1200 contributions, edits to it and what's really interesting is he doesn't often contribute onto other people's wiki pages, but what you see happening over and over again is, you know, he comes back to something he's written maybe three or four years later, and he'll come back and add to it and refine it. And so, it wasn't just about, you know, his expectations maybe of other people to think more deeply, but that was his practice. He would come back and look at something he'd written and go… And it's little stuff like changing a character or changing a colour. Or "this is more clear" and he would be refining all the time to make sure that what he was putting out there was, you know, highest quality as it possibly could be. And it's humbling to see somebody's writing that way, to realize you know how much time and effort and thought goes into what you put out, and then how important it is that you communicate to other people accurately. 'cause that's something the, I mean, I guess, I don't recall whether integrity was one of the list of Rob Hodgkinson's attributes, but it's certainly they're in spades with Roger.
00:55:54 [CH]
I have a huge grin on my face right now 'cause I'm reading through these APL puns.
And like there's two different… there's a bunch of different sections, but one of them is sort of like representing little quotes. Like for instance "row, row, row, your boat" is 3 rhos and then the string 'your boat' which is pretty simple. But then there's…
00:56:24 [AB]
No, you know, no hold on, wait! You know where this comes from, right?
00:56:28 [CH]
(sings) "Row, row, row your boat gently down the stream."
00:56:31 [AB]
No, no, this is something Richard Stallman wrote, long time ago, and it there's a whole text for it, that's…
00:56:40 [MK]
Oh right, yes. Yeah, Stallman wrote a whole poem.
00:56:43 [CH]
Pretty sure Stallman didn't write that poem! So, what are you trying to say?
00:56:47 [MK]
I think he did. I think he did.
00:56:48 [AB]
Yes, he did. Yes, he did.
00:56:49 [CH]
What‽
00:56:50 [MK]
I remember something about Stallman writing, that being a line of a poem that that Stallman wrote. You must find it!
00:56:56 [AB]
It goes like this:
Rho, rho, rho of X
Always equals 1
Rho is dimension, rho rho rank.
APL is fun!
00:57:04 [MK]
Stallman!
00:57:04 [CH]
So, not the original "Row, row, row your boat" poem.
00:57:08 [AB]
No, no, no. So, this, the APL version of it, and so it is true, right? It's true that rho rho rho of any array is always one.
00:57:21 [AB]
Right, and so that's why… that's where Roger picks it up from, that ⍴⍴⍴'your boat'.
00:57:28 [BT]
Your boat is a string. Rho rho rho of your string is 1, yeah.
00:57:31 [AB]
That's it.
00:57:31 [BT]
Yeah, yeah.
00:57:32 [AB]
Yeah, it's a vector.
00:57:33 [AB]
It doesn't matter; any array would have given 1.
00:57:34 [BT]
These are the rabbit holes you go down with Roger. You start to find out things while you're laughing.
00:57:44 [AB]
Yeah, he would take it all the way.
00:57:46 [MK]
And then we need to understand what it is about Edmonton, Alberta, because Norwegian Iverson's came there, Hong Kong Hui's, Whitney's, I guess, from Ireland. And as a result, Roger has influenced J, APL and K 'cause he also talks, you know, communicates a lot with Arthur.
So, Roger's had a fundamental impact on so much in the array community, that's… And all from Edmonton!
00:58:18 [CH]
For those for those that aren't local to Canada, or you know, aren't familiar: Edmonton and Alberta. Edmonton's – I actually could get this wrong – pretty sure Edmonton is the capital of Alberta. Might be. Is that right?
OK, Bob, my fellow Canadian, is nodding his head and Alberta is one of the provinces in Canada, so… It's right next to British Columbia, where Bob is located and where I grew up.
00:58:43 [BT]
And Edmonton is fairly far north, not super-far north, but for a major Canadian city, it's very far north. And as a result, it's got very cold weather, so I think, well, I have a feeling: My parents were both Prairie people. They both my mum came from Saskatchewan. My dad came from Edmonton, actually, in Alberta.
And there's a – I'm trying to think of how to put it – there's a culture, I think, of Canadians who've lived through cold weather, v generation after generation. And a lot of the things I see in the array programming languages, and I don't think it's only Canadians, but I think cold climates tend to build very strong communities and a very strong sense of reliance on each other.
00:59:32 [BT]
And my sense is, the family I grew up with had that kind of an ethic, and just… it was like, you know, fish swimming in water: you don't even know you're in water. You're a fish you've never known any different, but as you get out into the wider world, you see there's a lot of different ways of looking at things. Well, the array programming community to me, at least the older array programming community, it's always evolving, and it should evolve. But the older wave programming community always had a really strong sense of its culture and people working together.
01:00:05 [BT]
It is very collaborative, and you don't always see that with programming languages because people who are really, really smart don't always work together that way, and they seem to, a lot of times, in the array programming languages.
01:00:18 [AB]
Roger just had his last kick at me. I was stupid. I it says it says in the list of APL Puns, it's turtles all the way down, and there's an expression that I pasted into my APL interpreter and it put my APL interpreter into a tight spin I can't get out of because he literally says it's turtles all the way down and it says: ⍎turtles←'⍎turtles'.
It's just stupid, but Roger, you got me!
01:00:58 [CH]
Yeah, this… I'm probably going to make a YouTube video on this. At least parts of this article. But the part that made me smile the most is when it gets down to basically creating glyph… compositions of glyphs or even just single glyphs that represent Star Wars characters.
And so, the little comment character (⍝), which – it's hard to describe it sort of looks like a stylized "A", is R2D2 – it's a single symbol. And then down towards the bottom is Ewok and Wookie, which I think is hilarious, which is like one's a small circle with two dots on top of it (⍤) and once a big circle with two dots on top of it (⍥). And I may or may not just start referring to those symbols as "Ewok" and "Wookie", for kicks, 'cause that is hilarious!
01:01:51 [AB]
Originally, they were called "Paw" (⍤) and "Hoof" (⍥).
01:01:54 [MK]
"Mama bear" (⍥) and "baby bear" (⍤) and "hoof" (⍥) and "paw" (⍤).
01:01:59 [CH]
What‽ Oh man, is this in an article somewhere?
01:02:02 [MK]
Yeah, they've had all kinds of names. Oh, I don't know. But I mean, now you have a way to describe what the APL comment symbol looks like: Looks like R2D2!
01:02:14 [CH]
This is fantastic. "Paw", "Hoof"! Like, I gotta say…
01:02:19 [MK]
And Each. Each (¨) is just claws.
01:02:22 [CH]
Oh yeah, that makes sense 'cause it's just the two dots. Oh yeah, there… We'll have to have a special episode where we just talk about… 'cause that was… I know there's another article to mention of Rogers: his favorite APL symbol, which is the, yeah, logarithm, which is a circle with the power symbol, which in APL is a star (⍟). So, you can think of sort of like a five-prong star inscribed in a circle, which you might think, "How does that represent logarithm?" But if you think about the profile of a log cut, it's not exactly 'cause you're going to see rings instead of a star, but it's somewhat symbolic of… As soon as you see someone, it's one of those things where, as soon as someone points it out, it's not something you're ever going to forget that oh yeah, that is kind of like the profile of a log, cut.
01:03:13 [CH]
So yeah, maybe we'll have to do a special episode of the… It seems like there's a lot more – I don't want to say jokes – but sort of, yeah, the meaning or the nicknames of all the different symbols.
01:03:28 [AB]
There's also… But there's so much detail in it, about the the log symbol, right? It connects the logarithm, connects power, exponentiation with all the circular functions, right?
01:03:42 [MK]
As one should be!
01:03:43 [AB]
And so, it's the circle (○) and the power (⋆) together (⍟). And Roger was very engaged in these kind of things. It had to be had to be right.
01:03:52 [AB]
So, Conor, for your information, when you use RIDE, you can type ``hoof, ``paw. That'll work!
01:04:01 [CH]
I think we need to add Ewok and Wookie now too.
01:04:06 [AB]
01:04:07 [CH]
I think that's really the future of the array paradigms, now that I'm all excited about combinatory logic, but I think what we really need is Star Wars references so that people can go ``ewok. Who doesn't want to type Ewok and see a little Unicode symbol pop up? Maybe we should actually make a – oh my goodness –I have the best ideas! But I apologize for the hubris, but we need to get little emojis, actual emojis of like little Ewoks and Wookies. I'm sure they already exist out there, they've got to be and then we can just replace those in some RIDE editor version where you type Comment, and you see a little R2D2 symbol.
01:04:49 [BT]
Do you remember what I said about language design?
01:04:57 [CH]
Yes, there's a reason Roger was doing it and not someone like me, yeah.
01:04:57 [BT]
Yeah, or me because I'm the same way: "Oh, like I could play with this!" But you, when you're doing those things, you're playing on a foundation that's so solid that you can play that way with it which is the magic of it.
01:05:14 [CH]
Oh my goodness, imagine if we went and replaced all of the combinators with the birds as well. We changed the little Ewok symbol, which is also the B1-combinator, we changed that to a black bird. Oh my goodness! Alright Adám, we've got a side project we got to work on.
01:05:31 [AB]
I'll log an issue.
01:05:36 [MK]
I think we may be straying from today's topic a wee bit, so…
01:05:40 [AB]
No, no look, look this is Roger is alive! He's with us.
01:05:43 [MK]
You're right!
01:05:44 [AB]
His article on puns is contributing…
01:05:45 [MK]
You're right!
01:05:46 [AB]
… contributing to the interface. It is very much making sure Roger is alive.
01:05:51 [MK]
He would be laughing.
01:05:52 [AB]
He will be alive.
01:05:51 [MK]
He, yeah.
01:05:52 [AB]
He will be with us, for sure.
01:05:55 [MK]
Yeah.
01:05:56 [AB]
Not going anywhere.
01:05:57 [BT]
He's consistently drawing us down the rabbit hole of deep thought, no matter what we read of what he's written, he sucks this into us makes us think about things and we come out the other side transformed. It's quite impressive!
01:06:11 [AB]
And my interpreter just came out on the other side. It's transformed into a "workspace full" (WS FULL). It was turtles all the way down.
01:06:14 [BT]
So, it found the last turtle? Is there a bug?
01:06:19 [MK]
No, it wasn't turtles all the way down, is what it's telling you.
01:06:25 [AB]
No, no, it was, but it says it can't handle another turtle!
01:06:34 [BT]
Ah, that's good!
01:06:36 [CH]
Well, I have to say, if, yeah, if ever I… If someone were having a podcast to remember me, and it ended with people laughing due to an article that I had written, I think that would put a smile on my face. So yeah, potentially this is the best way to end it, is us joking about an article he's written on APL puns, but just clearly, you know having fun and being passionate about what you've spent your life working on, and that, inspiring others and making others, you know, in the best case, you know, laugh about what you've done. Which is, yeah, he's definitely put a smile on my face today, and I'm not sure if we want to close out with any last, sort of, statement or if there's anyone that wants to say anything, or we should just leave it there.
01:07:28 [BT]
He's going to be remembered for an awfully long time, like, I feel, in the future, he's going to be one of those people that we knew about, but the wider world didn't know about. But in the future, the wild wider world is going to know about him. Because that's the kind of… Those are the kind of things he was thinking about. Those were the kind of things he was doing. He will have a lasting impact on our world, which is really… You don't meet too many people like that.
You meet people that are popular now, but popularity is different than a lasting impact. I really believe he's going to have a lasting impact.
01:08:06 [MK]
Yes.
01:08:07 [CH]
On that note, our one last announcement is that our next recording of Array Cast is actually going to take place live at, I believe, the second day, the last day, of the Dyalog '21 conference that we mentioned at the beginning of the episode. So, if you do end up going and signing up for that, you do have the opportunity.
We're still ironing out the details, but there will be the opportunity to participate in some form, whether that's just as, sort of, a live audience member… I think there'll be some form of a Q&A, so if you've got questions that you want to ask, you should be able to do that. But yeah, in order to do that, just head to the link in the show notes to register for the Dyalog '21 all-night conference. Once again, totally free and you don't have to, you know, attend the whole thing if you just want to pop in for a couple sessions or just specifically for that recording, you're more than welcome to do that as well.
Yeah, and I think with that we will say "happy array programming".
01:09:06 [all]
Happy array programming!
01:09:08 [Music Theme]