Transcript

Transcript prepared by

Adám Brudzewsky, Bob Therriault and Sanjay Cherian

Show Notes

00:00:00 [Bob Therriault]

I guess my takeaway would be don't do it for the clicks. Do it because you want to do it. Do it because you're interested in it. You might have a small audience. You might have a big audience. And community is not something you can make happen. Community is something you can let happen. That's what I would say.

00:00:18 [Music]

00:00:28 [Conor Hoekstra]

Welcome to episode 93 of ArrayCast. I'm your host, Conor. And today with us, we have a reduced set of panelists. But we are going to go around and do brief introductions. Anyways, we'll start with Bob and then go to Marshall.

00:00:41 [BT]

I kind of feel people may be getting used to different ArrayCasts by this time, having our last two episodes be pre-recorded the way they were. But yes, I think this is ArrayCast Lite. And I'm representing J.

00:00:55 [Marshall Lochbaum]

What Conor meant to say is that there's a select elite panel. And as part of this panel, I'm Marshall Lockbaum. And I represent BQN, but I have another language called Singeli. I've worked with Dyalog and J in the past.

00:01:09 [CH]

And as mentioned before, my name's Conor, host of ArrayCast, enthusiast and fan of all of the Array languages, and excited to be back, even if only, you know, what is this, 60%, 50% of the regular folks are here. And we're going to have, I think, a fun episode. We're going to talk about a number of different things. But before we get to those number of things, I think we've got a couple of announcements, I think one from each of us. So maybe we'll start with Marshall, then we'll go to Bob, and then we'll finish with me.

00:01:37 [ML]

I've got a cool BQN announcement. [01] We have a new blog poster on BQN. And there are actually surprisingly many people. I think I never announced Ramon either. So maybe I should give him a shout out. Ramon Pinedas something has been blogging in BQN. But I have a collection of the people who do BQN-oriented blog posts on our community page on the BQN website, which will be linked in the show notes. But our new poster is Tony Zorman. I don't know if that's his real last name or he just picked that to be the perfect kind of last name to be somebody who works with BQN. Very spacey sounding. He's done this really long post covering Advent of Code 2017, I think, in BQN where he goes through-- and the great thing about it is not only he explains how his solutions work, but he's building up from assuming that you know hardly anything about BQN. So he explains how BQN works in the process. So it looks to me like a pretty cool introduction to the language. Some of you might like to check it out. It'll be in the show notes.

00:02:44 [CH]

And it is very lengthy. I was scrolling and I was like, holy smokes, this is like a mini book. And then I tried to figure out if at the bottom it had how many minutes it takes to read. It's not at the bottom, it's at the top. And it estimates it's a 90 minute read. So that is-- it's not just a short blog post. I'm pretty sure if you've got a question about Advent of Code, it is answered somewhere in that 90 minutes worth of reading. Although it's hard to say with the code how to estimate.

00:03:06 [ML]

There's no way you're going to get through it and understand it in 90 minutes. Because you have to think about a lot of these things.

00:03:07 [CH]

OK, so even longer than 90. The code that you are not going to have to read-- maybe actually reading code takes longer.

00:03:20 [ML]

I mean, it takes-- it doesn't take much time to go across the characters. But to figure out why it's written the way it is. I mean, it's-- I mean, they're just measuring the time it takes you to process all the words and, you know, pronounce them in your head or whatever. But that's not what you should be doing.

00:03:36 [CH]

All right, well, link in the show notes. And over to Bob for his announcement.

00:03:39 [BT]

Well, there's so many different ways I can go with this. To start with, my announcement is not about J, even though I said I was representing J. My announcement is the Dyalog recordings. Many of them are out. I'm not sure whether all of them are out. But there's at least been two batches and maybe another one that I haven't noticed yet that have come out. So there's a lot of talks from the recent Dyalog conference. They're already out. And have I seen-- I don't know if you even had time to see it. Because, you know, I went to Italy. That's why you had those last two episodes. I had a wonderful time in Italy. What a wonderful country. Wonderful trains. And honestly, I understand the Italians, too many tourists. And I was a tourist there. But man, you get these tourist groups going through. But that's another thing. And that's not part of my announcement. Dyalog videos are out. And as you can imagine, it's going to be kind of a weird episode. But it should be fun.

00:04:28 [CH]

And that brings us to my announcement, which actually is probably going to parlay into like three different announcements. But the main one, the number one, the one that was referred to, is that on top of the Dyalog Limited-- I think it's Dyalog Conferences is the YouTube channel that those videos are hosted at. There are the videos from Lambda World that was held in Cadiz. Both Stephen and I spoke at that conference. And both of those videos, his was called, I believe, "Hooray for Arrays." Mine was called "The Power of Function Composition," both about array languages. And all of the other videos, I believe-- I think they're all out now-- we will link to both of ours plus the YouTube channel where you can find the other ones. Or maybe there's a playlist. If you're interested, there are some great talks that were given at that conference. Hope to be back there again in the future. And the other announcement that I figured I'd say, seeing as Marshall mentioned that Advent of Code blog post, Advent of Code right around the corner, folks. November 19th is when we're recording this. That means we are less than two weeks away from the beginning of December. So by the time the second-- or not the second, but the follow-up episode from this is released, not only will it be a couple of days in, it'll be, I think, a whole week in because we'll be recording--

00:05:48 [BT]

I think it'll be five or six days in.

00:05:51 [CH]

Yeah, so there'll be roughly a week's worth of Advent of Code problems done. And as, like, all years past, I will plan to make videos for as many as I can, at least in the first 10. Sometimes I don't love the problem, and it does not inspire me to make a video. But as long as the problems are decent, I'm hoping to pump out a bunch of Advent of Code videos. My goal is to primarily focus on BQN, and I've been writing some tooling. I don't know if there'll be a formatter out by the time, a lightweight formatter, but I definitely have a unit test thing, which will make it nice. But on top of that, if the problem is nice enough for array languages, I might do a kind of-- what do you call it-- like array language off, where we put J versus BQN versus Uiua versus KAP versus Dyalog APL, and then crown a winner for each problem. But anyway, link in the show notes, or I guess a link to my YouTube channel where you can find those videos. And with that, we are now going to discuss a bunch of things. So I think the first thing that we talked about was we were going to talk a bit about the J Wiki updates and maybe some community stuff around there. But we'll see where this goes. So I'm not sure if we want to throw it over to you, Bob, and get a J Wiki update and start there and see where we end up.

00:07:10 [BT]

Yeah, so the J Wiki update-- well, for one thing, Advent of Code adjacent, there's an excellent page in the J Wiki. I think-- and I know it's Henry Rich has done a number. I think Raoul Millage is in there. And I think it's Jan-Peter Jacobs is the other one. I might have that wrong. It might have been somebody else. But there's, for a number of years, they've basically taken the problems and they've solved them in J annotated. So they're explaining the process. And they're really good. It's called Share My Screen. It's what they called the page because I was looking at it recently as I was working on the J Wiki. And it's a really neat way. And not saying that-- it's not how you would learn J. But if you've worked with J, it gives you a real insight into how other people might approach a problem. And you may approach it differently. There's nothing wrong with that. But because they've broken it down, it's really interesting to see why they've done the things they do. And quite often, I found with Advent of Code, one of the big things is being able to get the format they give you into a format that you can use and bring into an array language. It's one of the first steps you take. Sometimes it takes as long as solving the problem, depending how array easily the problem is. But they do-- I learned a number of tools that you can-- oh, I didn't even think you could do that. That's excellent. That's a lot easier. So there's always things you can learn out of it. But the J wiki-- getting onto the bigger thing-- I've actually been working on the J wiki. This is embarrassing to admit for me. Not the people who've been working with me. I've worked so hard on it. But me, because it's been four years I've been working on that wiki. I look at it. And we've been recording meetings and talking. And you think, wow, what did you guys accomplish? And well, we did get it organized. But the really cool thing about the wiki is there was a number of adjacent things that got created because we were having meetings about the wiki. And the short version of where the wiki is going is I'm going to wrap up some of the organizational things I've been working on for so long in the next couple of months. And then at that point, I'll still work on the wiki. But it won't be the main focus. But the adjacent things that have come out of the wiki-- one was J Playground. And that was Joe Bogner, Will Gajate. Aw. I'm trying to think of the other guy that worked on it for a little bit. And there may have been others have worked on it since. So I'm probably missing people. But the whole J Playground, which was essentially being able to run J on your browser, came because of discussions in the J wiki. It just evolved. We said, well, that sounds cool. Joe had worked on it a number of times. Will jumped in and said, I think I can make this work. Couldn't make it work. Talked to Joe. And then together, they got it up and running. And now you can use the J Playground to run J on a browser. You don't have to download anything. And there's labs. And there's some really cool things on there that are in other places. But that was one big thing that happened. And there was a lot of encouragement from Adam and Marshall and Conor as well because J didn't have a way to do that. Dyalog had TryAPL. And BQN had its various-- Is it BQN Pad, Marshall? Is that one of the ones? And there's a couple of others.

00:10:27 [ML]

That's apparently the best named one. I have no idea where the name comes from. But people will call-- so like, Uiua thing is called the pad. I guess it's the Uiua pad. So yeah, people just use this term now. And it doesn't really make any sense to me. But it's gotten popular as a--

00:10:43 [CH]

Well, and probably it's like a playoff of Notepad, right?

00:10:46 [ML]

Oh yeah, I didn't think of that. So that makes sense.

00:10:50 [CH]

I didn't think of it until now. But I just was like quickly trying to think, like, there's no way the-- I can't actually remember. I think I knew their GitHub handle, the individual that created it, came up with it. But yeah, there's a couple. There's iPad. There's Notepad. Yeah. I wouldn't say it's a term of art. But it's definitely-- I think they borrowed it from one of those two things. And shout out to the J Playground. It gets demoed in-- I've given the Power of Composition talk a couple times, three times, I think now. And I use the J Playground each one of those times. And in fact, I used all of the online web editors because it's just a nice way to be able to demo the languages. And then also you can say, by the way, what I'm doing right now, you can just go to this URL after the talk if you want to play around with any one of these languages. And one of the nice things that BQNPad has too that I've really started trying to appreciate more and use in videos is the tab autocomplete, where if you hit Tab in BQNPad, it gives you a dropdown list and you can fuzzy search, which I don't personally need. But in terms of people getting started, I think that's a bridge towards UIuaS. Just type the prefix and then format and it converts to the symbols. You still need to know that it's called undo instead of inverse and the right names for things. I discovered when giving my workshop back in October that I didn't know half of the name of the glyphs. What is not equal? Or there was a couple of them where--

00:12:17 [ML]

Well, it's funny because people often use an imprecise name or a different name for something. So even I'll do it. I mean, I've picked what term I want to use for BQN, but then I'll find myself using an APL or a J term instead. And I mean, sometimes-- so one reason to call it undo instead of inverse is that it's not really an exact inverse. But if you're undoing reverse, [02] that is an exact inverse. So well, reverse is a bad example because it's a self-inverse. But say you're undoing transpose, then it makes perfect sense to call it transpose inverse because it is the inverse of that for that primitive.

00:12:55 [CH]

Yeah. But it is a neat tool that I think from a pedagogical point of view is really nice. The key thing is that you need to know the name. I think assign, that was one. Assign is the wrong name for the assignment glyph. It is called define. And so I was trying to type assign. Then I was like, oh, that's not right. And then I typed equal. And I was like, well, clearly it's not called equal. And so then I just had to go to the little glyph bar and then hover. And it's like, oh, define. OK, that's what it is. But--

00:13:22 [ML]

Well, and for that, assign is the collective name I use for define and modify together because those both assign a value to the variable that's on the left.

00:13:31 [CH]

So probably what we actually need is we just need-- they probably have a one-to-one matching of the substring that you type. But it probably should be more like bqn_crate, where I think they have Intuit built a couple different things you can--

00:13:45 [ML]

Yeah, it's like ask whatever you want. Well, and of course, you can have a BQNcrate, BQNcrate tab open and check. I'm not sure if assign's in there. If it's not, I should add it. But if you throw in assign, maybe you'll get-- you want define, define. And then you can choose which one.

00:14:04 [CH]

If you type assign, define is the number one match. So bqn_crate has--

00:14:11 [ML]

Well, it doesn't do relevance matching. It always just keeps-- it's got a fixed order that's supposed to kind of track the complexity of each expression.

00:14:19 [CH]

Oh, OK. It's just lucky. Yeah, yeah. Anyways, J Playground, bqn_pad, Uiuapad, tryapl.org. KAP also has one. They're all great.

00:14:29 [ML]

Yeah, and so does TinyAPL. Well, I think this is getting a lot easier to do for one thing. But it's good that new language-- and Goal should have one, too. I'm not totally sure about that, too. It's good that new language developers are starting to see that as something that-- because especially if you're a totally unknown language, that really helps you get off the ground with people trying the language. Because they don't want to do whatever your weird install thing is, especially if you've written it in a sort of less popular or less language that needs some setup. If you can open it in a browser, it's so much easier to try out this language. And then even people who only have a casual interest, you know, there's this new language, what's its deal, can pretty easily figure out what is its deal.

00:15:18 [BT]

Well, and it's the sort of thing where if you've developed a language-- like the first people through it would have been probably TryAPL, I'm guessing, that had that.

00:15:28 [ML]

That was before even a lot of the stuff like Python and Ruby would have had online editors, probably.

00:15:36 [BT]

But then when somebody shows it can be done, there's a period of time where everybody goes, we should do that. And you get people out saying, well, it can be done, so I should try it. Because I know one of the things that for J was Henry said, well, it can't be done. Yeah. It's not-- you can't take the J and put it in there until Joe did it. And Henry went, wow, I can't believe you could do that. Because he literally didn't think it could be done.

00:15:59 [ML]

I was a little surprised, too. But if you're building your language from scratch, it's a lot easier to just-- when you've got a language that's one source file, check to see if WebAssembly will build it. And if not, adjust how you develop things to make sure it'll do it.

00:16:14 [BT]

But also, if you've got a new language you're bringing in and everybody else has that thing, I think that becomes one of your to-do lists. You can't introduce it and have people use it unless you can provide that, because everybody else has it now, too. And so I think that's why a lot of them have it now is because it's part of what you do. And there's a model. And you can talk to people who have done it already, so it's a little easier to do. But it's now the, I guess, the state of the art. If you don't do that, you'd stand out. And why aren't you doing it?

00:16:41 [ML]

Yeah. Well, I would even say one thing is that the Array community has strengthened so much in the past few years that people who make new languages now actually have an expectation that somebody is going to want to use them, which I don't think was really the case 10 years ago. So you had a lot of people who would develop their own language for themselves and then eventually put it up in a repository somewhere with minimal documentation. But now we've had a few people who are doing the development much more in the open and writing documentation as they go, like Madeline Vergani is doing her blog posts on TinyAPL. So even giving more insight into not only what the language is, but how it's been developed over time.

00:17:26 [BT]

Which I think as well, especially when you talk about what Madeline's doing, it gives so many other people who maybe have been thinking about it, it's sort of giving them a lay of the land or a blueprint of how you would go about it. Because she's exploring so many things in such a proliferate-- and I'm just trying to think of the word to describe it. But I'm just so impressed by how much she puts out and how much she explores. She really is an explorer. She's looking for new things and hits dead ends occasionally. And it doesn't matter because she knows that. She just goes off to something else.

00:18:05 [ML]

Yeah, well, that's one of the huge advantages of keeping the source code small and not-- in particular, not working on optimizing things too much before you know which things you're trying to optimize. Knuth has some words about that.

00:18:19 [BT]

Yeah. First get it right.

00:18:20 [ML]

"Premature optimization" is the famous quote. Yeah.

00:18:26 [CH]

So was that both things? I think you mentioned--

00:18:28 [BT]

Oh, yeah, no, sorry. That wasn't--

00:18:30 [CH]

That there was two things that came out. And then we got so hyper excited about-- hyper excited, maybe just excited-- about the online editors and how great they've become. But yeah, there was a second thing you mentioned.

00:18:42 [BT]

There was a second thing. And that second thing is the J Viewer, which is Ed Gotsman's project, which is just amazing. It's in the JQt IDE. He hasn't taken it into the web yet. But essentially, not only does it give you a way to search the wiki for J terms that are no longer like periods and semicolons and adjacent to letters and stuff, aren't text to it anymore. They're J terms. He's actually converted them into something that the-- he's using SQLite, I think, or SQLite to do it. But it's recognizing those as J terms, separate J terms. You can do a search by code across the entire wiki. Also, the old forums. So when you had to go into the old forums and do an archive and try and figure out what the topic was, you can do a search on code and see all the forum posts that have come up. As I say, you have to be in JQt, which right now is-- a lot of people use J in the J console, which is just essentially the terminal. Or the other version is JHS, which is the Eric's web version of J, which you have to download it. It's not like the WASM, like the playground where it's in your browser. But you can use your browser to use J. And it doesn't work on that. The viewer doesn't work on that either. But within JQt, in fact, it's worth firing up having that part of the environment, that IDE working, because you can keep that as a separate page and just use it as a resource. And as I said, it does the forums. It does Rosetta code. It does Quora, Quora questions. I'm trying to think of the other-- oh, it does the GitHub, the J GitHub, the source code on J GitHub, which includes all the add-ons. I mean, if you're looking-- I use it all the time. Because if I-- there's something-- I know this was mentioned like five years ago. You click on it, and it just drops down. And you've got all these forum things. And you can narrow the search down. You can set bookmarks for stuff you hit all the time. It's just an amazing resource. And that came out of the Wiki discussions. Because we've had, essentially, weekly Wiki meetings.

00:20:57 [ML]

Yeah, which he sends very nice minutes on every time.

00:21:00 [BT]

I send minutes out. And it was my way to try and engage the community. I'm not sure how many people-- how useful it is. But I still do it, because I think it's important to-- if people are interested, to keep them posted. And occasionally, somebody drifts in and is up to date on everything, I guess, because of those. But it really-- the J viewer is something that grew out. And I think it's probably going to be the most-- aside from the Wiki itself, it will probably be the most powerful thing that comes out of the J Wiki. Because it just gives you access to this amazing tool that can-- I really appreciate things like APLCart or BQN Crate. And the way you can type in things in it, it will cross-reference code for you. But this is wider than that. This is just-- literally, you can look at discussions and posts and things that relate to either that piece of code or topics that you've put in. You can do a search, an exact search. Or you can do a search just by terms that have been mentioned. And it just takes you-- well, it's the ultimate rabbit hole. You can spend hours playing with that thing and diving into areas. And of course, it takes you into people like Dan Bron, who isn't as active in J anymore, but had an amazing view of what the J language was and wrote really well about it. And of course, Roger Hui and people like that that are no longer with us. And their contributions just sort of pop alive. So you don't just see something Roger wrote as an essay, but you can see discussions Roger had with people. And because it goes back to, I think it's 1998, the original forums, there are things that Ken Iverson pops up on. He was on those forums. He was talking to people about that. So all that information is there. And it's much more accessible. And I think that was the other really big thing that came out of the wiki. And that probably leads us a bit into communities, because that's the other thing I think that was hopeful that the J wiki might have taken off as. And it hasn't really. There's been a group of people that have been working on it, but it never really got widespread in the community. And that probably is the next step for it. If I was to continue to focus on it and work on it, that's one area that I haven't worked on enough. But these things are big, challenging things when you work on them. If you go in thinking, I'm going to do this, and it doesn't work out, if anybody gets in that situation, don't be disappointed. Do not be disappointed. Don't be frustrated. Because it's a big thing. And these big things have lives of their own. And they don't necessarily evolve the way you would like to see them evolve. Go along with it and let them happen.

00:23:43 [ML]

Yeah. I mean, I think the wiki format in particular, a lot of people feel kind of intimidated by it, maybe. Which the APL wiki, [03] I would say, has this worse than the J wiki. Because the J, I mean, at least it has the format of, here's an essay written by one person, and this is just their thoughts on the topic. And so a lot of people have contributed in that way. The APL wiki, we do allow that sort of thing. And so if you want to write this kind of an essay on APL, that's a pretty good place to do it. But when we switched over to the new design, there was an older APL wiki, which was using some kind of outdated software. And it just had random people stuff that wasn't very coordinated. And at Dyalog, we moved this over to Media wiki, Wikipedia's software, and kind of focused more on historical accounting of APL. So I mean, then we're trying to provide the authoritative info. What was APL 3000, for example? And that, a lot of people feel like they can't contribute so much to that, which I think is one thing early on Wikipedia really tried to do was to fight that by saying, well, no, you should-- they have this sort of slogan, Be Bold, go ahead and make the change. The thing is, if you can improve the page at all, if enough people are just doing whatever they can to improve the page, it doesn't matter if your grammar is not the best or you haven't really organized your thoughts on the topic. If you can improve that page in some way and enough people keep doing it, eventually it comes up to this very nice, polished product that you can see on pretty much any Wikipedia page now. I mean, they're not all perfect, but they're very high quality for things that are just written by random people on the internet. So this is-- people have trouble getting into that mindset, I guess. And I wish there were some way to kind of encourage people to just write more about whatever topic they find out something that's not covered on the APL Wiki page about that and add some more detail.

00:25:47 [BT]

Yeah, and if there are things you can do, and there are things that-- when you're working online-- because I actually did education within online groups and online teaching, and there was so much that I learned there that most people who do extensive stuff online don't know about. That, for instance, how important onboarding is when somebody comes onto an online platform-- and I think this is something that BQN does really well. UIua does a great job of it. And if you want to be successful with something like this, focus on bringing new people in and bringing them in in a really-- you would think, so this is so obvious. Why would I spend my time doing this? If you do that right, you will grow a community. The thing I used to do when I-- I used to be a volunteer coordinator on television stations, and the thing I learned doing that was-- it's what I call the rolling boil-- is when you're working with volunteers, they're always going to be changing. They're volunteers. They don't have to stay there. That's just the nature. It seems obvious, but you're volunteering, so people move on. And some people I was working with who was volunteer coordinators got very upset about that because they made a big investment in that volunteer. They've done a lot of training with that volunteer, and that volunteer moves on. And that's-- there's a sense of loss there, I think, for some people. But what I learned was you don't focus on that because people will move on, and that's going to happen, and there's nothing wrong with that. And in fact, if you think of the greater good, you've trained some skills into somebody, and now they're going on and using those someplace, or they're developed a bit further, or they've learned something. It's all good. It's fine. Don't worry about the fact that you lost them. It's all good. But what you focus on is how many people you can get in because that's how you grow the program. You'll always have people leaving. You'll always have-- in the television station, you probably always have two or three people leaving every month. And if you bring in 10 people and three people stick every month because you're going to lose seven, some-- I'm interested, but I'm not that interested. I don't stick around. You don't worry about that either. That's going to happen. But if your input is three and your output is two, it's going to grow. It just grows. And then the key to that is once it's growing, you get critical mass. And when you get critical mass, you no longer have to grow it because it's growing itself.

00:28:19 [ML]

Then you got to slow it down.

00:28:20 [BT]

So that expectations of communication, respect, and those kind of things. And you have to actually-- that's one of the onboarding things. You work really hard on that too. So that if somebody comes in deciding they're going to disrupt, well, everybody knows. There's a name for them. They're trolls. But the point is if you bring your whole community in with expectations about understanding that whatever is going on in those people's minds, that disruption is their goal. So don't feed the trolls because don't give them the chance to disrupt. And have good people moderating so that they don't get a chance to get in and actually cause damage. And essentially inoculate your group so that if somebody comes on and starts saying hurtful things, the attitude is that you actually feel sorry for them because there's something in their makeup that they require to do that. And that's very sad. But it's not something that can hurt you because you realize you may not be dealing with a person who's fully functioning or is a healthy person. So it's regarded as an illness more than anything else. But it's not something-- the same way if you're in a hospital and somebody-- a patient lashes out, no doctor is going to say that patient is bad. Thing the patient is dealing with is bad. Patient is not bad. And so anyway, that's part of the ongoing onboarding process. But also when you get to that critical mass, that's part of your moderators and the people that are organizing it to try and allow it to grow in ways that are healthy and productive. And as I said when I was talking about the Playground and the J Viewer, those are initiatives by other people. I'm taking absolutely no credit for all the work they did. That's theirs. They did a fantastic job. There's nothing I had to do with it other than I had this weekly environment where discussions were open and there wasn't a bad idea. That's all I did. But that's not insignificant because that's how you grow things.

00:30:44 [ML]

This isn't your part, but having a community where it's known that if you contribute something, people are going to use it as opposed to everybody just staying quiet. And even if they find stuff useful not saying anything, that's pretty important.

00:31:00 [BT]

You're absolutely right. That weekly meeting was built on the forums [04] and people having discussions anyway. That's how I let people know they were going on on the forums. That's where the minutes show up first on the forums. It's not coming out of nowhere. I'm using tools that already exist, communication. And then based on that is the shape you put it in. And it's, well, as I said, the big thing out of the J Wiki meetings is there are-- I really made a point at the beginning. There really are not bad ideas. People go, well, this is going to sound stupid. Well, man, please say it because-- [LAUGHS] You know, the early days of the Playground, I know I heard that more than once. This is going to sound stupid, but what if we did this? I don't know. Why don't you try that? You really should try that. I would really be interested. And I think-- I guess the other thing that I had at that point is I had some connections with the community. So when Will said, this is going to sound stupid, but I think we could do it this way, I said, I think it was Joe Bogner who started that out. I haven't seen him for a while. I'll get in touch with him, see what's going on. And that connection-- and they worked on it together. And that connection-- actually, I think it was more Joe got more interested in it again. And I think he got interested enough and saw there might be some-- I think he saw some critical mass there and thought, if I do this, it'll-- and then he got into it, and it flowered. And so it's like fertilizer in a garden, right? If you get the right mood, the right fertilizer, the right people into it, then it grows. But if you try and make it grow-- again, getting back to people who think they're controlling things too much-- if you're trying to make it grow, it's unlikely that it'll happen. Because you have to kind of watch for something happening and then jump on board and fertilize it if it's a good thing. And I think the garden analogy is not a bad one. As you're-- when you're dealing with these communities, you're much more a gardener. You're trimming some things. You're fertilizing others.

00:33:02 [ML]

You have to have something to play off of. So I mean, I get this when designing language features a lot. I mean, if I don't know how a language feature is going to be used, then I don't know how to design it. So I need to have-- I need to be able to see the kind of demand for something before I really feel confident in saying that I can do anything that's useful at all.

00:33:23 [BT]

Sort of adjacent to that, the stuff that Henry's been doing, where with-- and I believe the most recent beta, he's actually now coded bold into C. Yeah. So that it's as quick as anything else. Whereas for two or three years now, it's been written in J. So it's functional. But he-- because he didn't know where it was-- he didn't even know what was going to be used. But he didn't know how it was going to be used so much. And so he didn't-- if it wasn't going to be used, he didn't want to put the effort into coding it into C. But I think he also wanted to get a model for how it was going to be used. But I was playing with it actually when I was in Italy a little bit. And it's-- for certain things, it's so useful. And there wouldn't have been a really easy way to short circuit out of things the way it can now. So if you're dealing with something-- and essentially, it's expanded reduction or scan or whatever you want to call it. So it's that on steroids. It's got so many different versions. But the real powerful thing I find in it, it's got a way of-- if you can explore something and shortcut out, it's easy to do. And it jumps right back out and then jumps back in again. And there wasn't really a nice way to do that before. And now he's got a way that you can do that. So if you're dealing with some of these problems where you're searching at depth and trees, but you'll know two steps in that it's not promising, Fold will jump up and continue on your search in the rest of the tree. You can do that kind of stuff much easier now. And I know there's Apter trees and parent trees and stuff like that that you can do similar things within array style. But Fold allows you to do it maybe more with the traditional way, but allows quickness because it short circuits out.

00:35:07 [ML]

Yeah, I mean, if you have something where you need to short circuit, that's-- traditional array programming really doesn't get it there. So I mean, I try to avoid those sorts of problems. But some of them are unavoidable.

00:35:18 [BT]

Well, as I said, it's because Fold can do that. So it is built into that part of the language. Because you can do it, I think it opens the scope for what you can do. And again, I don't think anybody's-- well, I know we have said many times array languages aren't for everything everywhere. That's not how they work.

00:35:36 [ML]

Well, array programming isn't. But I feel like array languages should be.

00:35:42 [BT]

Yeah, that's true.

00:35:43 [ML]

I mean, they can't-- there will be a better language, but they should be at least suitable for anything.

00:35:49 [BT]

Exactly. And I think that's that aspect of Fold is that by introducing the short circuiting, you now open the scope on what it's more suitable for. May not be the best project, but if you like working with the languages, now you've got something that isn't completely out of its scope. When you get into that situation, you go, I could stay in the language and do this. And it still works. But I'm going to turn it over to Conor, he said, as he's been lurking back in the famous community lurker, because honestly, I've seen you do a huge community thing. Now, you do it more individually rather than-- I'm trying to think of how to phrase this, because you definitely have grown a big community, lots of followers. But I don't get the sense as much those followers feel like they're part of the core community, if I can say that. They're part of the community, and they react to what you do. But I haven't seen the kind of interaction that you would see, say, between Henry Rich, Raoul Miller, Eric Iverson, Chris Burke. I'm thinking of all the other guys that-- the names that you see on the forums, they're talking to each other and going to the community. That's not your type of community. You're more the driver of it, I think. And it's a different type of community. Do you have any thoughts on that?

00:37:09 [CH]

I'm not sure. I mean, I think there's a difference between being the quote unquote "Gardener," as both of you referred to it, of a programming language community, where you are the, in Marshall's case, sole creator of a language. And I say sole, but then also he has folks that are--

00:37:26 [ML]

Don't leave Dzaima out.

00:37:28 [CH]

Yeah, Dzaima, who's implementing CBQN. But there's a difference between, in general, creating a community around a technology versus creating communities around, I don't want to say, like paradigms, like functional versus array, versus what I think I've been doing, which I don't necessarily say-- would say that I've been trying to cultivate a community or garden a community at all. My foray or entry into all of this was back in 2017 when I was trying to switch careers. And leet coding was the way to do that. And unfortunately, to a certain extent, is still the way to do that these days, depending on the company you're interviewing with. And at the time, in 2017, there wasn't a ton of YouTube content [05] that would walk you through solutions to these kind of leak code-esque videos. There was one guy, I believe, the YouTube name-- and I think it was also his name as well-- was Tushar Roy. I could be wrong about that. He's probably been not forgotten in the annals of leak code YouTube channels. But now there's a bajillion of them. There's Neat Code. There's-- I'm not going to go through and list them all. But there's tons of folks that not only started making these videos, but also started realizing if I put the-- it's gone through several different acronyms. It used to be FAANG. Now I've heard like Menomina. I've heard the Significant or Magnificent 7 or whatever. All of these like Netflix, Amazon, Apple, Google. The company DuJour changes. Google's falling out of favor now. But anyways, the point being is if you put the logo of these companies in your thumbnail and say, how to get a job, or like top five interviewing questions, these videos would kind of explode. At the time, this kind of content wasn't really all over the place. And so I just decided that like, well, I'll throw a couple of videos out there. But my goal was purely like the algorithm solving. I didn't care about-- like, it's obviously nice when your content does well. But every time I ever did something, I think one video, I put the logo of a couple of different companies in it. I just-- I felt-- I felt like bad. I felt like I was selling my soul. And like I was chasing views instead of just like putting the content out in the world that I wanted to see. And so after a couple of times, like I also made this video one time that was like, how to learn to code in five minutes. And it was like just showing you that they had these like online editors that you could go and get started coding in five minutes. And to this day, I feel bad about that. Because justifiably, there were some folks that came out and like left comments on the videos that were like, you know, what are you doing? Like, this is clickbait. Don't sell your soul like this. I don't know. So I'm not sure if someone actually said don't sell your soul. But that's how I took it. And to this day now, my goal with my content is just like I put the content out that I want to put out. And some people are irritated with that because I hop all over the place. Sometimes I make a video about Rust. Sometimes I make a video about C++. Sometimes I make a video about making code presentations. And it makes me happy to put that content out there, whether or not folks actually enjoy watching it. It depends on the person and the video. But that's been basically my goal is that like, sure, I would love to have a million subscribers. But if having a million subscribers means that I have to go and make every single video a one problem, 30 programming languages video, those are fun to make every once in a while. But it takes a ton of work. And it also means that I have to go and write code in like 20 languages that I'm not like totally jazzed about, which like it does well on the internet.

00:41:21 [ML]

And then people are asking, you know, all these languages are great, but why do you include BQN?

00:41:26 [CH]

Yeah. And then that's the actual one. And anyway, so to get back to the cultivating community, like I think community is fantastic. And maybe at some point, if I ever decide to do something that it would be beneficial to have like a more kind of focused community, I might look into doing that. But I kind of just like I'm all over the place. I have podcasts. I have the YouTube channel. I've got the meetup that hasn't really been active, but I plan to reboot in either this month, the next month. And there's discords. There's Twitter. There's Mastodon. And my kind of thing, I'm just like it's like the fire hose. You know, that's the way I prefer to learn. I listen to like a ton of podcasts. I watch a ton of talks. And it's also the way I prefer to like release content out into the world. And I'm sure there's some people like, you know, how many podcasts and YouTube channels does this guy need? And it's not about like I'm trying to like build an empire or anything like that. It's just like I started Tacit Talk because I wanted to talk to Elias about KAP. And I didn't get to do it for like five months because we had so many people on our list of people that we wanted to talk to on a raycast. And I was like, that's it. I'm doing Tacit Talk. And I can like talk to people sooner if I need to. And then also I can just talk to people purely about Tacit programming. If like I had Zach Smith on talking about just an article that he had combinators on, I don't think that like the net that I'm casting out for folks that might be interested in this stuff is like tens of thousands of people. But I know that, you know, if this content were put out by someone else, I would like consume it immediately. So like, that's who this content is for. It's, you know, there's a Venn diagram of my interests. And for certain folks, it overlaps to a certain extent. For some folks, it's like almost one-to-one. So they're just like, they love all my videos and all my podcasts. Other people, they prefer the C++ only stuff. Anyways, this is a very long-winded answer to saying, yes, I don't really feel like I've ever tried to cultivate a community, you know, and do any gardening to the extent that I think it's very beneficial if you have a programming language or if you have a technology, like Django is a great example. Like it's a technology associated with Python. There's whole conferences and stuff built around like Django. And there's a whole Django community, but I don't want there to necessarily be like a Code_Report community where I just wanna put my content out there. And if you enjoy it, you enjoy it. Anyways, you had a question a couple of seconds ago.

00:44:04 [BT]

Code_Report content to me is like a playing field. It's wide, there's lots of people come on and play it, enjoy it, and it doesn't feel like a garden 'cause it's a playing field. There's a lot of content, there's a lot of things you can do on it, and people come in and come out. So it's a different type of space for people. And you're the one that provides the content. So it's like you put the lines on the field, they do what they want. They take what you give them. But what I would say is you are a gardener because of things like ADSP, which you do make choices about who comes on and how you do that and where we go with this. And even more so with Tacit Talk, because you're even more selecting people you wanna talk. That is a garden. You've been working a playing field, you discovered a garden, you're working in a garden now. You've got all those choices. It's smaller, you have more control over what's going on, but it's not so much you control it, it's where you let it go, which I think is probably Tacit Talk, 'cause it's new, you probably haven't hit that so much, but I know in ADSP you have. You've made choices about how it's grown, what trims, what doesn't get trimmed, what gets left out, what gets 10 timesed. That's all indications of gardening. And timesing a discussion on furniture is gardening.

00:45:43 [ML]

I see it's kind of a lesser scale. I mean, if you choose people who to interview, that's not choosing who's in the community, that's choosing who's highlighted out of the community, which is not--

00:45:56 [CH]

Who's platformed.

00:46:04 [ML]

And you're not telling them in what ways they should interact with the community, you're asking them what they do. So I don't know what plays that role in a garden, but I don't think it's quite the gardener.

00:46:09 [BT]

Okay, so Tacit Talk is a very, it's just starting out. It's in its initial stages.

00:46:15 [ML]

Yeah. And I mean, I can't speak to the future.

00:46:17 [BT]

And it's built on the ArrayCast. Your first interviews were either with panelists on the ArrayCast or people we had interviewed on the ArrayCast. And that's a choice of the gardener. I'm putting this plant in this area. It doesn't mean that that person is now, I mean, a plant is kind of the wrong way to refer to them.

00:46:38 [ML]

Everybody you interviewed was a plant.

00:46:41 [BT]

Was a plant, yeah. I know, there's a point at which the analogy just gets offensive. But the point is, is that you make a choice about what goes into what you're creating. And you were making those, you didn't go out and just interview Bartosz Me lewski. You could have, I think you probably will at some point. It would make sense. He would be Tacit Talk adjacent for sure. But you didn't go that route. You went with people you'd talked to, but you wanted to expand what you were talking about. I think was your main goal there. That's a choice. That's how you're building it.

00:47:17 [CH]

Yeah, I guess I just, I have like a reflexive flinch towards the word gardener because I think if I am a gardener, then I'm a bad gardener because I neglect my gardens for like months at a time and let everything die off. Like maybe not everything die off, but like there was times on my YouTube channel where I just don't feel like, it's not that I don't feel like making videos. I always feel like making videos. I'm just very busy. And so there'll be like months at a time where either I'm moving or I'm looking for a new job or et cetera. And like, there's things that need to take priority. And as important as my YouTube channel is to me, it's gonna be there when I come back, even if it's years. If there's subscribers that are concerned that I'm not gonna post something for a couple of years, I'm not saying that. I'm just saying that like you can neglect it for a while. And I think that is the appropriate term. And then just come back. And that's the thing is if you talk to other YouTubers, they'll talk about like, oh, my views will drastically go down if I step away from my regular. I don't care about that. Like I understand that if I was a better gardener and I posted a weekly schedule and every video went out at 5 p.m. on a Monday and the YouTube algorithm recognized that and fed it to people. Like my videos probably would do better. I'd probably have more subscribers, but like, guess what? The folks that wanna find my content, maybe not globally, not 100% of them, but like a decent chunk of the folks that are interested in that content know that it's out there. And I mean, it's sad if YouTube doesn't recommend regular watchers when a new video comes out because I haven't posted in a while. But hopefully they follow me on Twitter where I post that I posted a new video and they'll get it some way or they listen to one of my podcasts and I'll mention that I made a new thing. Anyways, my point being is that I have a reflexive like flinch when I hear the word gardener because a good gardener doesn't neglect, like always waters, make sure there's sunshine, you know, he puts a little umbrella. I feel like I'm a bad gardener. And maybe not for ADSP because like I have a special, I don't know what it is, like a relationship with podcasting because I am such a avid podcaster that I know what it means to have a regularly dropped episode once a week. And it becomes a part of like your weekly routine, not for everyone, but like definitely, I know folks that like they let their podcast cue for two months and then they listen to them all at the same time. But I am the kind of person that like for the podcasts that I really like that are weekly or monthly, I really look forward to a new episode, especially if they always drop like plus or minus a couple hours, the same part of the day, like CPP cast when it was in its first edition where they had the first 350 episodes, they're onto two new hosts now. It was always released either Thursday night or Friday morning. And like, it was awesome. Like I was a C++ programmer at the time, they're kind of acting like a voice of the community, giving you updates on libraries, conferences, and then they bring on guests and you get to hear about what they're working on. And you get to hear like from the same people every week. It's like, I think that there's an immense amount of like social value and like, you're also learning stuff at the same time. The point being is that like, I really think that I put podcasting in like a different category. I don't do it for all my podcasts, but definitely for ADSP, I plan to like try and never miss for like decades if possible. I'm sure at some point I will be in the hospital and something won't be, there will be a reason I won't be able to post but until then. So I'm a good gardener maybe, but then even then I still, I feel like, I don't know, there's a sense of responsibility and don't get me wrong, choices that get made, you know, to who comes on and what content we cover, it definitely has an impact, but I don't know, maybe there's a different word we can come up with that allows for me to be neglectful at times and that not.

00:51:17 [BT]

It's called pruning.

00:51:18 [CH]

Well, pruning is just when you get the weeds out. It's not when you just let the weeds take over and kill everything [laughs].Yeah

00:51:30 [BT]

Okay, so you should widen your definition of what a good gardener is. I think good gardeners do neglect. I mean, fields are left fallow, right? So they regenerate. Unfortunately, that's one of the things with agriculture now; people fertilize every year and they're sort of pumping nitrates and stuff into the soil to try and do what should be a rotation of your crops. But that's what good gardeners do: things do get neglected at a time, but you're making choices about what gets neglected and why it gets neglected. And again, you're not so much driving a bus; you're riding a wave. You can't control where it's gonna go. So even when you say neglect, you can't know what's gonna get neglected, but as things go along, they will get neglected. And as long as you realize you're putting your efforts where they should be put, I think is the important part. Not that you worry about where you're not putting your efforts, because you don't have that many efforts to put [laughs]. There's too many things in the world to put effort into everything. So there will be things "neglected", but I think of that as more pruning or you're just letting things go beneficially. You're just letting it lie fallow for a while and it can come back, but that doesn't mean you're bad at it. And that part of the community might feel remorse over new stuff not coming in, but I guess when I'm thinking of things like volunteer coordination and actually coordinating groups of people and keeping them interested and enthused about doing something, then you're right: you don't wanna neglect because you're taking a whole army of people who are interested in that and taking it out. But you have to set something up where they can do something and feel like something's going on. But in that case (when we were talking back towards content creation) they're not creating the content. So honestly, neglect is just gonna be [present]; they're not gonna get new stuff as much.

00:53:26 [ML]

Yeah, well, I can say on that, this sort of the whole emphasis on newness is really not something that when I write, I take into account. So one thing I've thought about is, [a lot of] this stuff that I put on the BQN website would make reasonable blog posts. So if I were to format that as a blog and have: "here's the new post on this date" and stuff, people might follow that blog and read the posts when it comes out. But for the website, I don't really have this goal of community building or building a following or getting the most views. What I want is good solid material that I can rely on in the future. So one thing that's great is when somebody comes onto the BQN forum [06] and asks a question and I can point them to: "I wrote a page about this and here's all your answers". And then I've written out better than I would even be able to respond to them then; like much better than I can do off the cuff basically. That works much better as a resource. So I think there are some different goals you can have for making things and building a following is not the only good one. So what I try to do a lot is make lasting stuff that's going to retain its value for a long time.

00:54:45 [CH]

Yeah. When I first made my YouTube channel, I was obsessed. Social Blade, the site that tracks statistics, used to have [a rolling count] for every subscriber. And so anytime you made a video or something happened and you started getting an influx of subscribers, you could go and stare at this site and just watch the subscribers come in. And it wasn't like flying up, but you know, if you were watching it for 10 minutes, you'd see like "ding, ding, ding". And if anyone ever watched like the Mr. Beast versus that other YouTube channel, where it was the race to 100 million subscribers; they were always showing Social Blade. And the same thing on your phone: you get notifications. And my advice to anyone that's looking into content creation is [to] divorce yourself from the dopamine hits that you get. And it's hard, but if you just start chasing views for the sake of chasing views or trying to build stuff for [its] sake, you're just going to end up in an unhappy place. I think that there's a lot of folks; I think the number one job that younger folks want to do these days is to be influencers and have content creation. And I don't think that necessarily that in itself is a bad thing, but I think a lot of folks do it for the wrong reasons. They want to do it purely for the sake of being an influencer. It's not that they want to influence folks to learn something or they're passionate about something. If you prioritize whatever you're passionate about or whatever you want to share first, that is the path to a healthy road to success because otherwise you hear all these YouTubers [say]: "oh, I need a break, blah, blah, blah". Then the meta-ness of them posting that they need to take a break because they're still trying to like turn views and content out of that is just ... [sentence left incomplete]. I'm sure in a couple of decades or maybe even less, there's going to be studies being showing the adverse impact that social media and this attention economy and what it's done to a generation or more of folks' brains and mental health, is not great. So my point is that I agree with what Marshall said. Just put quality content out there. Don't try to optimize for click baity whatever and I think in the long run, that is actually the path to success. Because I've been doing YouTube for seven or eight years. And I've made, I don't know, close to 400 videos and I've never thought I needed a break, you know? Sometimes I didn't have time to make videos and sometimes I didn't want to make a video so I just didn't! Then the next time I wanted to, I made one. And then every once in a while people get upset. One time I had this this commenter come to my defense when I posted a video for the first time in a while. [One] person commented like: "oh, we need more content; you can't leave us hanging". And then someone replied to that comment like: "this guy has a life and works for a company; he's releasing them when he can; leave him alone". I was like: "oh, that's very nice". I don't know who this random [commenter is]. if you happen to be listening right now, I appreciate your defending me. Yeah, put the content out there that you want; don't worry about views and stuff.

00:58:03 [ML]

Yeah, well, it's also a funny framing: "oh, I want to be an influencer". Well, then what do you want your influence to be? Uhhhhh... [Conor laughs]. So yeah, I think that kind of highlights the ... [sentence left incomplete].

00:58:14 [CH]

I just want to get paid!

00:58:15 [BT]

Yeah. And unfortunately, the one of the things about the influencers is the companies have ... [sentence left incomplete].

00:58:20 [ML]

Yeah, well, the real goal is the influence is going to be to promote whoever's products will want to sell through you [chuckles].

00:58:28 [BT]

Yes, and so if you've bought into the influencer "lifestyle", the thing I think I would say probably most people who are unhappy ... [sentence left incomplete]. There are people who are completely happy doing that [Marshall agrees] and that's fine. If you're happy doing it, that's great and you probably won't burn out. Or if you do burn out, you'll gracefully burn out and come back in because you like doing it. No problem. Well, I shouldn't say no problems with that; I have issues with a lot of the monetary capitalist approach to the world that way. Consumerism, I have issues with that, but I don't have issues with somebody being good at and liking to do it. If that's what you want to do, that's what you want to do; I'm not a fan of that area. But what I would say is I think a lot of people get into it and then when they come out of it not happy, what they don't realize is that by chasing views, you are handing over your agency to the audience and that is a huge loss of power. You're giving it to somebody, and you even see it in performers who end up performing too much for an audience and not so much for what they want to do for their own growth or what they want to discover. In the end, they're very unhappy people because all they're doing is trying to satisfy a group that will never be satisfied. It's just a cycle you can't get off of and you feel empty because you're just doing it for somebody else. You don't know why you're doing it. It's a lot of work; it's a lot of energy. I don't know why I'm doing this anymore. Nobody seems to care. Every time I put something out, some people like it, which I follow. Other people don't like it, which I hate. But there's no reason you're doing it because you're not doing it for yourself to help somebody or to communicate some thought or something. You're doing it because you're chasing the views. And you're basically (Conor used the term earlier) you're selling your soul. You're literally selling your soul.

01:00:25 [CH]

Well, I mean, that might've been a bit harsh.

01:00:28 [BT]

No, I think that's accurate. No, I think you get into that zone. You are doing that. You are giving yourself over to the audience. You will do what the audience wants you to do and there aren't limits to that if you're really chasing it. You are selling your soul.

01:00:42 [CH]

Yeah. It doesn't feel great.

01:00:45 [BT]

No, it's awful.

01:00:47 [CH]

[Sometimes] you put content out in the world that you are proud of, even though maybe less people care about it. It's a bit shameful to admit this, but there's some videos that I make that I'll go back and watch like five times over because I'm like: "I'm so happy". And then like, they'll have like 400 views; it'll be like my 270th most popular video. But like, the point about some array language technique that I'm showing, it's so beautiful. And then only 400 people will watch, but it doesn't matter because I go watch that and I'm like: "oh, if only more people knew about the elegance and the beauty of array languages". And that's what happens, slowly but surely over time. I think Marshall, you were the one that mentioned that over the last few years, there's been a change in, not the attitude, but ... [sentence left incomplete]. I think the thing that you said was, now there's more people that are writing these new languages with a kind of an expectation that there's folks that are gonna be interested in using them, which wasn't [necessarily] the case, maybe a decade ago. And I think it's great. I think part of the reason for this is that array languages are actually a lot easier compared to a language like Rust or C++. If you wanna write interpreters for a simple version of these, I think it was 4000 lines of Haskell code that Madeline said her interpreter was. I could be wrong about that, plus or minus, but you don't have to write like a quarter million lines of code to go and play around with this stuff. And yeah, it's great; it's great. Listen to all the content, ArrayCast, all the podcasts, all the YouTube channels. And that's the thing is there's now proglangcast; they have their YouTube podcast. In the Uiua community, there's someone with a YouTube channel called the Uiua Sanctuary, where they make 10 to 30 minute videos of solving different problems. There's all these different sources of content and different mini languages. It's great. It's a great time to be an array language. Honestly, I feel like the other communities with similar size, like Smalltalk and the Object Oriented or message passing community, I feel like if they knew what was going on in the array language community, they should be jealous, you know? I've always said that there's LambdaCast? Although they haven't posted a podcast in a couple years. It was one of my favorite podcasts. There's LambdaCast, there's ArrayCast, there's a bunch of functional programming ones. I think there is technically a type theory podcast called Type Theory for All.

01:03:31 [ML]

I mean, that's surprising because type theory is way more popular than array programming, I would say. Haskell is huge. Not everybody who uses Haskell is super into type theory.

01:03:42 [CH]

Yeah, yeah. I think type theory itself is a lot more academic and there are a bunch of Haskell podcasts. So, I mean, Haskell and functional programming, I don't think are jealous of array language.

01:03:52 [ML]

So you mean like actual mathematical type theory?

01:03:55 [CH]

No, I think it is type theory within the context.

01:03:58 [ML]

Because it's not exactly the same thing [chuckles]. The programmers like to gloss over this.

01:04:05 [CH]

Yeah, I know they're talking about it from a programming language perspective, like Idris and Agda, and there's a couple other ones and like dependent types and all that rage. But, you know, there's logic programming. There's Smalltalk and friends. Yeah, I would love there to be more these kinds of niche communities that are growing now because we live in the 21st century where, compared to the 1980s, I think it's a lot harder to do this kind of stuff. I mean, the internet wasn't even really a thing back then.

01:04:39 [BT]

It wasn't.

01:04:43 [CH]

[Laughs] I mean, technically DARPA, I think had ... [sentence left incomplete].

01:04:45 [BT]

Yes, there was DARPA, but, you know, if you weren't in the military, it didn't exist.

01:04:52 [CH]

Yeah

01:04:53 [ML]

Well, there was I.P. Sharp's instant messaging network [chuckles], which was actually huge, but of course you had to work at this particular company. So yeah, APL has always had a strong community. Their first APL conference was called the March on Armonk, [07] which is where IBM's headquarters was, because all these users who had become obsessed with APL were gonna get together and make all these demands of IBM: "support our programming language better". Actually, I think APL was the first subgroup of the ACM. It was the first specific programming language group that they created as a subset of [hesitatingly] SIG plan, maybe (programming languages something). And a lot of that was Alan Perlis's work, actually. But yeah, so APL was, even in the very early days all about (well, even more so in the early days, probably) all about community and people getting together. So it's really cool that the language encourages that. I don't know how it does it, but it seems to. I mean, you would think the language that's called Smalltalk and is about message passing would just have people constantly interconnect, right? And talk to each other, and that would be their primary activity, but I guess not.

01:06:23 [BT]

I think communities sort of start at a certain way with certain personalities. And from listening to those archival tapes that the last episode we had [on] Ken Huyversen talking, it's really clear that he's a very imaginative and open, good communicator. You hear stories about how argumentative he would be about certain things and how strongly he would hold to certain things, but also the same people, when I listened to some of those tapes about I.P. Sharp, would say, the next morning he would come in and go: "you know what? you're right, that's how we should do it." Once he'd thought it through, he had no problem with it. There wasn't ego involved. He would chase what was right; what was good. And as a result, there'd be very intense discussions, sometimes for months, about what was right or what was good. So he didn't hold those things lightly, but if it was decided one way or another, he also didn't hold those things. That was the choice. And I think when you have the seeds built that way, for one thing, who's gonna come in chasing an audience or chasing clicks if that's the way you develop your reputation?

01:07:40 [ML]

Yeah [chuckles].

01:07:40 [BT]

Because it's not gonna have any weight. It's just not. And as a result the group that comes around are people like Roger Hui and Arthur Whitney, who are their own people and very different personalities, but are all together chasing that same thing, which is what they think is best and their personal view of what is best. They're not gonna do what somebody else tells them they should do. They're going to do what they think is best. And that seems to be the thread that you build on. As a result, I'd say the newer communities, the Uiua community and stuff, I'm so impressed with how open and inclusive they are. But they're building on the seeds of trying to make things better. So why wouldn't they be that way? You always get trolls, but trolls don't survive in that kind of environment very well.

01:08:34 [ML]

I've said before that I ask these people on Hacker News who come across as very closed-minded and have all these arguments against APL that are just based on false ... based on stuff they must've made up somehow. And I say, come on the APL forum and ask how it actually works and you might get a better picture of it. And they never really seem to join. So even though there's a whole lot of really anti-APL sentiment out there, people don't feel the need to come onto the forum and act this out in any way.

01:09:16 [BT]

No, I think, you know, the guy who's famous for being anti-APL is Dijkstra, right? [Marshall agrees]. I don't know the people involved. I don't know how much of that was personal or that it actually was the way he looked at the language. I think he had some valid criticisms.

01:09:32 [ML]

Yeah, but I think he also had some personal ... I mean, he just met Iverson and didn't like him. [That's] kind of the impression I got from his writing. So he has one thing about how he was at a conference (so it was just this note from the conference) and he said: "well, I was sitting at a table with Iverson and this woman was between us". And he almost recounts proudly how he just wouldn't talk to Iverson and instead he monopolized [chuckles] the woman sitting between them. It feels like he never gave APL a fair chance to even see what could possibly be good about it. And I mean, APL is far from the only language that he just wouldn't say a positive word about.

01:10:13 [BT]

I think you're far more aware of Iverson's writings and stuff than I am, Marshall, but I don't ever remember reading anything that Iverson wrote about Dijkstra.

01:10:23 [ML]

I don't, I'm not aware of anything.

01:10:25 [BT]

I think he was the ultimate dealing with trolls at that point. He wasn't engaging it.

01:10:30 [ML]

He was at one of Iverson's very early presentations; there's a transcript of that. So you can kind of see like his [Dijkstra's] complaint against APL is: "oh, it's just this bag of tricks". So you learn the right trick for every problem, but you're not really deeply thinking. And so he asks Iverson, how would you approach a more complicated operation? It's something like summing all the diagonal elements of the matrix. There's some extra work in it. And Iverson, of course (I mean, it couldn't have taken him a minute) writes it all right out on the blackboard and that's the end of that interaction.

01:11:12 [BT]

Yeah, and for Dijkstra, that's probably QED.

01:11:16 [ML]

Maybe. I mean, yeah, it's very interesting that it seems a perfect rebuttal to his claim. So you can imagine him thinking: "well, I don't think there's anything to this; it's just a bunch of random convenient operations he heaped together". It couldn't deal with this problem. And he asks his question and Iverson has no difficulty with it at all. And you have to ask, what did he think after that?

01:11:38 [BT]

Yeah

01:11:39 [ML]

I mean, I guess he must have rationalized it away somehow.

01:11:44 [BT]

Yeah, well, my guess is that he couldn't read it.

01:11:45 [ML]

Yeah, but [laughs] so would he ... [sentence left incomplete]

01:11:50 [BT]

[Chuckles] how do you rationalize that?

01:11:51 [ML]

I mean, surely he didn't think Iverson couldn't solve the problem so he wrote up some nonsense on the board.

01:11:58 [BT]

No, but I think you're right.

01:12:01 [ML]

Yeah, so maybe he was thinking: "oh, well, it's still a bag of tricks". It's just, he knew this trick. He knew the trick here.

01:12:07 [BT]

Yeah, yeah, so he's got a trick for that one, okay [laughs]. Anyway, I'm guessing we've probably got to the point where we're landing the plane [laughs].

01:12:20 [ML]

Oh, I did want to say, what things should people who are trying to make a new language or support a new language be ... [sentence left incomplete]. What kind of things are the most value for the community with the least effort? Because I was thinking about [how] BQNcrate's really useful, but on the other hand, I had to translate over a thousand expressions from APL for that. So, it's really nice. I use it and you can see when I improve BQNcrate often, it's because I try to look something up and I didn't find it. So, I have to change the keywords so that they match what I looked for. Or I find a new expression that, I think that this should be in BQNcrate, but that's a lot of work. What are the really high value things? And what occurs to me is just the online runner, which we've discussed and having the documentation is really important. Documenting firstly, what's in your language is the most important. And then, how exactly it works.

01:13:23 [BT]

I guess my takeaway would be: don't do it for the clicks. Do it because you wanna do it. Good do it because you're interested in it. You might have a small audience; you might have a big audience. You actually can't predict that. I think if you stick to the things that you think should be going on and you're open to other people's input, you'll learn some really interesting things. And community is not something you can make happen. Community is something you can let happen. That's what I would say.

01:13:55 [CH]

And my takeaway is get ready for Advent of Code! It's gonna be awesome [laughing].

01:14:03 [BT]

And with that, we're very appreciative of our community and everybody who contributes and all the comments that come in. And some comments aren't appreciative. I appreciate those ones too because they give me a sense of [whether] we've missed the mark or where some people might feel we've missed the mark. I think those are all important. And somebody's taking the time to write something is very gratifying. If they're writing something nice, absolutely. I read one last night.

01:14:33 [ML]

It sounds like they really want Ken back on again. Can you do that? [others laugh]

01:14:36 [BT]

I wish I could. I just loved listening to him when I was editing it. Man, his voice and everything. I'm just thinking: wow! I was so envious of Whitney being able to sit in a room and ask him questions. And I'm so appreciative of Whitney allowing us to use that, because to me, it gives a different dimension of who he was. You can read what he wrote, but he speaks in a different way than he writes. If you haven't listened to that, the Ken Iverson episode (and it won't be for everybody) [08] but I would encourage you to go back and listen to it, because I just think you're going to meet a person that you haven't known before. I think that's just super cool and he's a very, very interesting person. But having said that, because we are appreciative of the information we get back and everything, you can contact us at contact@arraycast.com. You can email us that way. I guess now we're on whatever YouTube's podcasts are. So you can leave comments there too; I'm reading those too. And we don't respond to everything, because [chuckles] as we were talking about gardening, you can't respond to everything, but we do read everything. We do look at everything that comes in. So I absolutely appreciate the community that's here, because that's one thing that I think does keep us going; we know there are listeners and we know we are valued. And as a result, I enjoy doing it [laughs].

01:16:13 [CH]

Yeah, it is a blast. I think we all can concur. And I guess until next time, with that, we can say: Happy Array Programming!

01:16:21 [everyone]

Happy Array programming!

01:16:22 [ML]

We need a few more voices to edit in there [chuckles]

01:16:25 [MUSIC]