Transcript

Transcript prepared by Bob Therriault and Igor Kim
Show Notes

00:00:00 [David Zwitser]

I just wanted to say quickly, if you're on the brink of wanting to learn one of these languages, go do it. It's really worth it. It's such an interesting world and it really opens your mind to more ideas.

00:00:21 [Conor Hoekstra]

I'm your host, Conor. And today with us, we have our four panelists and a special guest who we will get to introducing in a moment, but first we're going to go around and do brief introductions. We'll start with Bob, then go to Stephen, then go to Adám and finish with Marshall.

00:00:32 [Bob Therriault]

I'm Bob Therriault and I am a J enthusiast and season's greetings to everyone.

00:00:39 [Stephen Taylor]

I'm Stephen Taylor, an APL and q enthusiast.

00:00:43 [Adám Brudzewsky]

I'm Adám Brudzewsky. I do APL, but I'm interested in other array programming languages as well.

00:00:49 [Marshall Lochbaum]

I'm Marshall Lochbaum. Someday I'm going to make a language called enthusiast and really just mess everyone up.

00:00:57 [CH]

And as mentioned before, my name is Conor. I'm a polyglot programmer, research scientist, and massive fan of all the array languages, which makes me very excited every time we get to record one of these. But before we get into introducing today's special guest, we've got a few announcements. I think we're going to go to Bob first, then we'll go to Marshall, and then we'll finish with Adám.

00:01:16 [BT]

Well, my first announcement is actually a thank you to our two transcribers who once again this year, this is our last podcast of the year, have gone through and worked diligently to provide all our podcasts. So thank you to Sanjay Cherian and Igor Kim. You guys do great work. Of course, an assist to Adám, who provides a time-stamped version of the transcript that needs to be cleaned up. And I guess me as well, because I often work on it, but I also have a whisper transcript that actually provides some amazing transcripts now. So thanks to all those things. And my second announcement [01] is I mentioned the J Viewer last episode, and there's been a lot of people take it on. It's really an amazing tool. And right now, my announcement is, I mean, we'll put links in the show notes for people who want to look at it. It really is astounding. In fact, I guess I've got a couple of comments. The people have favorite quotes of Ed's are, wow, the viewer's working now. It looks excellent. No sleep for me tonight. And still loving the J Viewer, more rabbit holes than Watership Down, for those of you who knew about Watership Down. And the other, I guess the final part of that announcement is Ed is looking to take transcriptions of videos of J and actually include those in the searches of the J Viewer, which is very cool. And that means that there'll be searches. If you have a term or something, you'll actually see videos pop up or links to videos that might pop up. So if you have a video that you've done in J, you can send it to contact at ArrayCast.com and I will make sure it gets to Ed and then we'll grab it and transcribe it and put it as a link or put it as a place to search in the viewer. So that's actually, this thing is just growing out and encapsulating the entire world. So it's, it's amazing. It's really cool. That's my announcements.

00:03:18 [CH]

Awesome. All the links will be in the show notes as per usual. And with that, we'll go to Marshall.

00:03:22 [ML]

What I have is this existed, actually, the last podcast we recorded, but now it's even better. So I'm going to go ahead and show you the next one. So this is a new BQN editor that I announced it now. What we have in BQN is a new BQN editor that is called BQN editor. It's made by a user called Funmaker and it's it's a lot like the one on my website, but it's also better. And it's influenced by Uiua as well. So it's a little more like that in some ways. It's got syntax highlighting as you type. That's really hard to do in HTML. So I just didn't bother with it. And another really cool feature it has is if you want to type a BQN character, and you're looking at where it is in the key map, what you have to do for mine is you have to click it probably, or I guess you can hover and see how to type it. In the BQN editor, what you do is you look at the character and then you type backslash and then under all the characters, it shows what you have to type after the backslash. So then you just type what shows up. And that's a really cool way of entering these special characters that I haven't seen before. I think it works really well. And so yeah, if you like to write your BQN in an HTML, you can do that. And then you can type in the characters that you want page this is something to check out.

00:04:31 [CH]

Wow this is fantastic folks we're gonna we're gonna interrupt the announcements we've basically got an editor war within the BQN community we've got BQN pad now what do we actually call this you're just calling it the BQN editor you gotta have a that's

00:04:48 [ML]

I asked what um so it's on the page on running BQN and I asked what do you call it and this person said BQN editor so that's what it's called

00:04:57 [CH]

All right.

All right of course I mean mine is I just call it the BQN repl the web repl or something like that I will I'm gonna spend some time stay tuned listener at the end of this episode I host of ArrayCast will give this a better name than the BQN editor but this is uh this is super cool we've got multiple editors competing with each other and uh yeah this the the backslash is very neat I mean and I love the fact that because we discussed this when we had uh Kai Schmidt uh I actually maybe it wasn't that episode or maybe it was the one after it after I'd played around with a bit more where you type things in and then it auto completes on the prefix and uh my remark was that was like it's a novel way and it does remove like a small barrier to entry and I think this is kind of the same thing now like as long as you know backslash is your you know uh combination key now you actually can just like very quickly look and uh that is super helpful because I know like 50 of them but every once in a while there's some less well used one anyways back to the announcements this is great uh link will be in the show notes and we were we're gonna have to have some editor off at some point because the j playground we've got tryapl uh we've got multiple BQN ones now I'm sure we was going to respond uh very quickly with another editor so that they've got multiple competing ones.

00:06:17 [ML]

But their actual one is so good that's the issue I mean you know if you make something good that other people don't try to improve it.

00:06:24 [CH]

Yeah, that's a good point I mean we'll we'll see I'm sure kaI's listening right now and he's already making plans uh their their their discord is probably figuring out what their next step is uh all right back to the announcements link will be in the show notes over to Adám.

00:06:36 [AB]

Okay so two things for me uh one is that the last missing videos from the Dyalog 23 user meeting are now available for your viewing pleasure on youtube and on Dyalog.tv and then in this gift giving season of ours and why not treat yourself or somebody else to some apl or other array programming merch I suggest you go to apl.wiki/merch and choose something really nice from there and at least the things that I've set up selling for I don't make anything of those nothing at all so don't worry about that it is purely for your service dear listener and I can offer you things that you can use in your own way so I'm going to go ahead and show you some of the things like uh merch saying that you're setting quad IO to zero or to one or to both and many other interesting gifts.

00:07:31 [CH]

Adám has failed to mention that we were in like a five minute argument about indexing and quad io before this recording started and then we said oh we gotta do a whole episode at some point in the future on indexing and that's what led us to think about uh the quad io merch so check it out if you haven't links to everything we mentioned are going to be in the show notes and that finally brings us to the introduction of the quad IO merch of our guest today we've mentioned him multiple times on the past few episodes he definitely came up on the previous one with Brian our guest today probably you know by the title of this episode is David Zwitser [02] I'm not sure how close he can correct my pronunciation uh in a second but David as we have mentioned before is probably most well known in the array community for having a youtube channel I think the handle is David Zwitser 156 but if you search his name you will find it but don't do any of that stuff just go to the show notes it'll probably be in the description box and you'll be the number one link at the top seeing as that this is the point of today's episode and like we've mentioned before I think we mentioned the snake video so David has been making short videos some of them longer basically implementing small games using the raid BQN library that we talked about in the previous episode on episode 68 but it's not just the snake one he has videos on tic-tac-toe I think a multiple multiples uh he also has one I believe a little bit further back a couple months ago that was on the asteroids game anyways we're going to talk about all the different games that he's implemented his thoughts and feelings on what you know makes BQN and array languages so great for this kind of thing but before we do that I will throw it over to David he can correct my pronunciation and maybe give a brief introduction we started doing this with Brian when Brian mentioned that he was from the Faroe islands maybe if you want tell us where you're from and uh yeah a brief background on sort of how you got to you know programming in array languages today and then we'll go from there well.

00:09:15 [DZ]

So I'm David in Dutch you'd say Daffid Zwitser so not Switzer but Zwitser and I'm going to be talking about the BQN library and um yeah so I'm making these videos in BQN uh so a bit about my background maybe I actually studied game development uh when I was 15 I did that for four years uh and then actually moved on to art school because I felt like game development was too still restricted for me and there I did new media arts and I actually became an artist but games are always in my heart like programming games maybe I should talk about how I got into BQN.

00:09:53 [CH]

Or well, so I already have questions lined up you've only you know been chatting for a sec but I've already got a couple so 15 you went to game programming school uh when I was 15 I was in high school so how how does that calculus work out did you drop out of high school to go to some you know game programming institution or or yeah how does that work?

00:10:12 [DZ]

That work? Yeah, that's a bit of the Dutch school system I was quite a young student or an early starter and um if you do um what you call more practical sports or something like that you can do a lot of things in a very practical way and then you can choose uh more applied school so I went to game development quite young then and that's how I got there and that's also where I first learned to program as well it's the first interaction with that yeah.

00:10:38 [CH]

Holy smokes is this a is this a common thing in Europe or is this specific to to holland that you can graduate high school if you choose like a specialized path and then you have sort of a an option of like where you go from there?

00:10:51 [DZ]

I'm not sure actually but I just know the system that we use.

00:10:54 [CH]

Yeah okay well very cool so at 15 basically you you graduate high school and go to specifically a a school or institution for game programming and then you do that for four years and that's where you started to learn how to program is that is that where you also discovered BQN and array languages or was that uh that was later?

00:11:11 [ML]

I don't think it was four years ago.

00:11:13 [CH]

Ohh yeah, that's a good point. That's a good point.

00:11:16 [DZ]

No. So after that I did four years of art school and now I'm actually a freelance artist uh I'm a freelance artist and I'm a interactive installations if you know those terms so I create art installations and tell stories or I try to find frictions and interesting things and pour them into interactions and installations that's like the main thing I'm doing.

00:11:37 [CH]

That is so cool is this I have only seen I haven't seen all of your youtube videos because I know your channel dates back uh from before when I first discovered the first video that I watched which was either the snake or the asteroids one uh do you have any uh are showing any of these installations or art installations or like do is there some page we can link the listeners if they're interested in uh seeing some of your work.

00:12:01 [DZ]

Yeah I have an instagram account where I upload experiments I'm doing so um I'm also doing just programming experiments and visual experiments and I also have a portfolio um called David Zwitser at gmail or no I mean dot com David Zwitser dot com um and there you can see some artworks.

00:12:18 [CH]

OK. Yeah that is super cool um and also I was thinking my when the my one of my first thoughts when you said artist I was like oh what I wonder what his thoughts are on uh you know the llm you know situation right now because there's lots of you know people with thoughts but if you're doing interactive art installations yours is like the safest art of all because currently they're just doing you know uh image generation and text generation as far as I know the AI's are not uh building actual interactive art installations that I know of at the moment.

00:12:47 [DZ]

Yeah so but it's like I'm kind of in my own niche uh there is of course a lot of interactive art uh but I'm trying to explore the things I find interesting so you're always in like a new area and I think I'm quite safe from ai in that sense because I'm exploring the the own like philosophical trial of things I'm interested in.

00:13:06 [BT]

David what what's the difference between a game and interactive art like I mean it seems to me there's a bit of a crossover between is it just you're in a game you've got a goal is that the difference what do you think?

00:13:17 [DZ]

Yeah there's definitely uh there's definitely overlap a game is usually for making a game there's quite some set ideas like uh there's a menu which like not every game has it of course but there's like a mentality where you need to have a start menu and a game over and some rules of course and in interactive installation you're totally free like you can uh one artwork I did was literally a machine with a button and if you press and hold the button then there's a loading bar popping up and it'll start loading as long as you hold it down and there's a sound that gets louder and louder louder but it'll never end so it's a little bit of a challenge but I think it's a good and that's the whole point like you're there with the sound come becoming very annoying and very harsh but you're still holding the button because you want some reward and it's like so some in some way an anti-game like you're trying to play into those intuitions we have built up uh and trying to poke that a little bit.

00:14:09 [CH]

Little bit where was this? Where was this our installation set up? Was it just like at the corner of a street like irritating the passerby or like?

00:14:19 [DZ]

Yeah it was actually next to the toilets in uh the exposition room and I was like oh my god I'm gonna have to go to the exposition room and I was like oh my god I'm gonna have to go to the exposition room and I was like oh my god I'm gonna have to go to the exposition I did for my graduation so I i hope that when people wanted to go to the toilet but they saw this machine with this blinking button they started pressing it and then they got stuck because they wanted to have some result yeah.

00:14:35 [BT]

And they couldn't let go.

00:14:38 [DZ]

Yeah, because we're programmed too.

00:14:39 [CH]

Yeah wow that is amazing and how does it does uh I'm assuming if it never ends does that mean you just like decelerate the rate at which the progress bar is completing so that it just will never it never finishes or does it just like freeze like what is it what is the user experiencing they're like why is it slowing down you know this should have been done 10 seconds ago?

00:14:58 [AB]

Uh but nobody would notice that all progress bars are like that every piece of software yeah.

00:15:02 [DZ]

Yeah it's a very simple piece of code it's just you calculate the distance from where you are to the end and then you divide it by some number so you never get to the end it's like the infinite slice.

00:15:14 [CH]

Right right yeah asymptotically going on forever yeah okay so you go to you go to game programming school then you go to art school and then what happened after that so it's it's and you're you're you know a freelance artist now at some point somewhere I guess there was a big BQN convention that we don't know about and uh you had a display there and that's where you discovered it how did that come across your radar ?

00:15:36 [DZ]

Well to explain how I got into BQN [03] or array programming there's a bit of like it was one of my research tracks I did during being a freelance artist because I give myself this space to go on these explorations and um the motivation dates back to when I first started learning programming because I was 15 and learning to program really helped me shape the way I think and look at the world because when you're building systems you're sort of creating like around you are also lots of systems and things interacting and with programming you describe them and mechanize them and I really like that aspect of programming so for me it was always about sort of expressiveness and the beautiful thing is when you write it down that you can look at it you can iterate on it and So I took this programming with me through art school and it became like my main thing. But I always like the first languages I learned were ActionScript, C Sharp and JavaScript, Unity C Sharp. And those, like mentioned here before, have lots of ceremony and lots of like arbitrary restrictions, I feel like. And those weren't part of these ideas I wanted to express. Those were like mandatory things you need to do before you could get something running. So I was always interested in getting rid of that and looking into other languages. I found the functional languages like Haskell and I used Elm a lot. But then I saw your video, Conor, of the code report. Those were amazing because they laid out these languages step by step. And it was sort of a gradual step towards expressiveness. And that's what I programmed for. So at the end of this range was more these array languages, these weird character esoteric languages for me back then. And it seemed like this holy grail. It was a real expressiveness. And when I saw it, I was totally convinced. But I walked around it for a bit because they are very scary looking. But eventually this summer I knew like I just have to learn them because, yeah, this is what I want to program for. And I bit the bullet and I chose BQN and I went through all the documentation and it was very hard. It took a lot of time because I was, my mind was programmed a bit functionally, but mostly imperative. What's the name? Yeah. The general languages.

00:17:54 [ML]

Procedural maybe.

00:17:55 [CH]

Procedural. Yeah, yeah, procedural imperative.

00:17:57 [DZ]

Yeah. And but I got through it slowly and I was slowly starting to be able to write. And of course, what I wrote were games because that's what I was used to. It's my comfort zone. So the first thing I wrote was rock, paper, scissors. That was quite easy. And then I went on to tic-tac-toe, which took a long time because there are lots of things I needed to know. And then I found Raylib because like this graphical library. I like my language in programming is visual and interactive. So it was, it was perfect. And Brian made the library so that I like it doesn't didn't really have any barrier. I could just use it and it was quite intuitive. And I started doing some visual experiments and yeah, that's where, where it grew.

00:18:40 [CH]

That is awesome. I mean, I feel like I'm hogging all the questions here, so please feel free to interrupt other panelists. But you know, you said that you, you, you saw BQN code at the end of one of these videos. But didn't immediately like you appreciated how beautiful and expressive it was, but you didn't immediately go and, you know, start learning them. And then you finally, this past summer took time aside, but it sounds like it wasn't like super, you didn't like instantly. Cause some, some of the stories we hear, like people find the language and they instantly fall in love and it just, you know, it's, it's easy breezy, but it sounds like for you, there was a little bit of like a learning curve. Like, so tell us, I'm curious to hear more about like what it, what, what the experience of learning this, like kind of, you know, what it was like. Yeah. So I think it was more like kind of being, um, looking at the language as something daunting, but then finally like approaching it and tackling it. Cause I'm sure there's other folks out there. Like most folks will see it and be like, oh, this is really cool, but then not ever finally take the step to go and learn it. So I'm curious. Yeah. To hear more about like what that was like for you.

00:19:34 [DZ]

Yeah. Um, I think I, I don't really have a very formal programming background and also not a math background. So I think that's why, like I looked at Haskell for a long time as well, and I tried to learn it, but it was very hard for me. So it was more like, um, having given myself the time and, um, and the motivation to do it. So this summer I had time and then learning it, there are just a lot of concepts which are very new. You need to start to speak this other language, which you're not used to, but also along this way, there are like lots of small victories, which are very rewarding. So I was, yeah, it was very enjoyable to learn as well. And for a long time, I was just reading documentation and the people around me, cause I, I have a studio with other artists. So I was like, okay, I'm going to do this. And then I started to work with other artists. Uh, and I couldn't explain to them why I was doing it. Like, this is such an abstract idea. And, um, I didn't even know what I would use it for. Um, but I was just in this, like, I, I, I intuitively knew I needed to learn it, uh, and just going through step by step by step. Uh, and eventually even how foreign it looks, um, you'll get there and you'll start to understand them and start to speak it. And yeah, it becomes easier and easier essentially.

00:20:49 [CH]

And is the ups and downs of, you know, trials and tribulations of working through a new concept that's very odd, but then mastering that you said there's a bunch of small wins. Is it worth it at the end of like, are you missing the days of C sharp and unity? And, uh, I think action script you said was one of the other ones in JavaScript. Like, are there things you miss or is it like, this is, you know, the garden of Eden and there's no other way you ever want to program again. I mean, and there's not a correct or wrong answer to this question, David. I'm just, yeah.

00:21:16 [DZ]

Well, the biggest thing I'm noticing is if I use another language, I'm very annoyed easily. So that's like a downside, I guess. But the upside is like I'm doing now with, uh, trying to figure out structures to write games in. It's, it's very fun to have this freedom with this language to, um, write things the way you think they are and, um, just have so much possibilities of, of notation. Uh, yeah. And I, I think it gives a lot of freedom if you want to program for, yeah. If you want to experiment and, and go through new grounds and, yeah.

00:22:01 [BT]

I was going to mention one of the most recent videos [04] that you did is actually sort of outlines the structure you've got for providing sort of a framework for building games. Which I thought was really cool because you kind of met meta on it and I can see where other people might be able to come in, look at that video, look at that structure. And then from there, just change the components about what's working within because the overall, well, as I said, you're, you're an interactive artist. You understand that process. So you know exactly how to order things, I think, to be most efficient.Is that why you produced that video?

00:22:23 [DZ]

Uh, yeah. I think that's what I enjoy most about programming is, like I said, having these structures in your head and iterating on it. So you write them down and you can see what can be even better. Um, and yeah, I think that structure, it can be even neater because there's just so much flexibility. Uh, and yeah, from that you can build other systems. So yeah. I, I just really enjoy doing stuff like that.

00:22:44 [BT]

I, I know from the video you said a number of times it's so verbose, but when I was looking at it, I thought, yeah, you know, we all talk about trying to make everything so terse. But I think in this case, verbosity is really what you want because you want some flexibility from the person who's using it. If you made it too terse, you'd have to be really discerning about how you compressed it because otherwise, you know, it's like a series of black boxes and it would be hard to work with. But what you put out doesn't look so much like an array language. But I can see the purpose of doing it that way.

00:23:15 [DZ]

Yeah. Because with game programming, you're trying to describe this virtual world with objects and interaction. And then you get a lot of names. Um, and also these, these examples didn't use a lot of logic and that's what the symbols are used a lot for. So yeah, I, looking back at it, yeah, it wasn't that verbose actually. I was just, I was working on it for so long and I wanted to push it out before this episode. And I was just a bit through it. But now that I look back at it, I, yeah, it's not that verbose.

00:23:44 [CH]

Not that for both. Yeah, well, that's something I always remark in my head silently when I'm talking to myself by myself at a computer.

00:23:51 [CH]

When I look at Marshalls code.

00:23:53 [CH]

It's that, you know, all the YouTube videos that I make just show these one line expressions, right. That's all you ever see. And like, you know, probably #7 top most popular comments that I get is like, how when are you gonna do something like actually substantive? That's not like a one liner, which is that's good feedback, you know. But it's a lot easier to make a, you know, 24 programming language is one problem when it's a single.

00:24:15 [CH]

Well, that's something I always remark in my head silently when I'm talking to myself by myself at a computer. When I look at Marshall's code, it's that, you know, all the YouTube videos that I make just show these one line expressions, right? That's all you ever see. And like, you know, probably number seven top most popular comments that I get is like, how, when are you going to do something like actually substantive that's not like a one liner, which is, it's good feedback, you know? But it's a lot easier to make a, you know, two line. It's not like a, you know, 24 programming language is one problem when it's a single line in each language versus like, you know, actually doing something that's involved. But when you look at Marshall's code or actual, like, you know, programming some kind of application, like I remember looking at the markdown parser, I think that you wrote Marshall. Yeah. And a lot of it, it's, it doesn't look anything like that kind of just like glyph, glyph, glyph, glyph, glyph. It's a bunch of glyphs, but then the other 50% or 75% of the code are named functions that you've written in like utilities that you built up. And even when I went and tracked down for the event of code, the STR, you know, two Nats function, like that whole file, like a lot of glyphs, but also like a lot of names. And I think that is like the, it's maybe jarring to go from looking at just like, oh, one line or one line or one line or one liner. Like you do the Dyalog APL contest only like part, you know, the section one or whatever, where they're all one liners. But then if you look at the second part, it's a lot of named things, right? Because you can't just, I mean, if you look at, I guess, AirDrop. I guess Aaron Hsu's code, you know, his kind of does look like that. It's just the one liner blown up into a whole screen. But for the most part, it looks more close to actually like, you know, Python or Java code where it's just everything is either from a library or stuff that you wrote, right?

00:25:28 [ML]

Yeah. Well, the Aaron Hsu comparison is interesting because this is very relevant to the Markdown parser. So the Markdown parser was my first kind of effort in BQN to be deliberately verbose. So I was really trying to make it, you know, expanded out, well explained. I didn't like fully comment everything, but I tried to like, there are some parts that I didn't really finish is how I'd say it. But I tried to, you know, fully explain how things are doing, you know, and show that you can write BQN in this style that's more expanded. That was, you know, immediately following my work on the BQN compiler where I was trying to test out, do Aaron's ideas really work? So I copied his style for the compiler. And yeah, in a way, yes. The interesting thing is that after I did the compiler, I've just left it. I've fixed bugs and, you know, extended things as necessary, but left the style in place. And Aaron's rewritten his compiler to be in a more verbose style. Jury's still out on, you know, I guess what I'd say is that you don't have to pick any particular style. That's pretty clear to me now. So the Markdown parser was doing the same, semantically the same sort of code as the compiler. But in a very different presentation. And I think, you know, basically it's a, you're thinking about the same things. I mean, it's just a matter of how you write it. And it's, it becomes different in how you approach the code when you don't know what it's doing. But if you do know what it's doing, you're really not even thinking about, you know, what's actually on the page anyway. You're thinking about, you know, what are all these arrays and where are they moving? What are the properties?

00:27:00 [CH]

Yeah, I've always, there's multiple different styles. And I think the Markdown parser is the same. I think the Markdown parser is very readable. But I also have found that the dfns code that ships with Dyalog APL, it, I think, I'm not sure if John Scholes wrote most of that. But like they have these, you know, small functions with very short local variable names. And then the lamp comment with like a short comment after each line. So it's usually, you know, like you're looking at a five to ten line function. But like every variable name is like max, you know, one to three letters long. But like there'll be a comment, you know, 30 characters. You know, 30 characters to the left or 20 characters to the left explaining it if you need to know what S stands for or whatever. But a lot of the times, like very quickly, having those short variable names enables you to keep the code so tight and so small. And it's, anyway, so it's just to echo that, yeah, there's more than one way, one style. Yeah. And, you know, people will prefer different ones.

00:27:55 [ML]

I think actually a really interesting direction is that you can mix them together. So a lot of the Singeli compiler looks like this maybe. Where, you know, the really technical stuff that's, you know, just shuffling a lot of parts around and implementing something specific. Like I have a topological sort that I just put on one line because nobody really cares how you do a topological sort. Because what you want is that the result comes out topologically sorted. And that's much easier to understand than how you did it. So array programming is nice because it lets you, you know, pile all these details into this place where -- and it's not unregulated. And it's not unreadable, right? It's a style that many people, you know, intentionally use. But this very compact style. So if you want to know the details, you can read it as an array program. But if you want to know, you know, the high-level picture and be, you know, working with the big ideas and saying, you know, what's this program really doing? You can look at -- you can zoom out and look at the high-level picture, kind of just gloss over all the implementation stuff and look at all these long names and descriptions and figure out, you know, what's really happening.

00:28:59 [CH]

Yeah. It makes me wonder, David, because you mentioned that when you went to the game programming school, I think that it was ActionScript, yeah, C# and Unity and then JavaScript. Do you still program in those languages? And if so, has having all this experience in BQN and array languages, like, affected the way that you program in those languages?

00:29:21 [DZ]

Well, I use Python in another program, I use TouchDesigner, [05] which is a visual programming language which uses Python. I use Lua for other stuff. But not necessarily these other languages anymore. But like I said, mostly I want to do things in an array way. And it is possible in Python, for example. And, yeah, you do get different ideas or directions to think in when you're doing an array language. So, yeah, it definitely influences the way you program, or for me at least, yeah.

00:29:53 [CH]

Yeah. It definitely resonates. The main thing is that I'm irritated when you're doing it. The main thing is that I'm irritated when using other languages. And it's not that irritated because I can't do something. It's irritating that I can't express something as quickly. You know, I'll have to pull in some more iter tools library to make use of some chunk function or something like that, which in BQN is just going to be literally like the combination of two or three primitives. And then, like, once he said, you're back to having all this ceremony, which it's -- Python is amazing. You can always get things done in Python. It's just it's going to be more verbose and, yeah. So does that mean -- so you said it's a designing program that you use or that you've written in Python or that uses Python as a part of it?

00:30:41 [DZ]

It uses Python as a part of it. It's called TouchDesigner, and I really recommend looking into it. It's a node-based programming language. But it's not that they use nodes to represent, like, classes or anything. They really try to think of nodes as, like, a practical -- as in the nodes actually have value. You can see 3D objects in them or pixels or channel data. And it is very handy for making installations because it is very good at talking to hardware and linking things together. And inside of this, you can write Python. And I would really love to make a way to write BQN in it. But I'm not sure if that's going to be possible.

00:31:25 [CH]

Interesting. I mean, there's a lot of those. Isn't Excel -- I know that -- is it Chris Pearson? He has a program. I want to say it's called Mesh. But this is from, like, a couple years ago, so I could have that wrong. But he was designing a kind of Excel-like thing where instead of the functions you had, q or an array language as, like, your quote-unquote formula language is -- there are many times where, yeah, I'm in some kind of thing and they've got some formula language or whatever. Like, Excel is the best example. Because it's so painful, the stuff you're doing. And it's always inside out because it uses, you know, parentheses for function calls. And at the end of the day, you're doing something that is literally, like, one or two characters and any array language. And the monstrosity of a thing that you end up with in Excel, it's -- yeah, it's very sad.,Anyway, so Touchdesigner. We will put that in the show notes. Bob?

00:32:14 [BT]

Well, I was -- you were talking about Excel being -- and Eric Iverson, when he created JD, that's one of the things he talks about. The JD. The JD is -- it's not an Excel. It's a database. But you can use J within it. So all those cells -- all the things you do, you're writing J, which makes it quite flexible and quite easy to work around. And if you're a J programmer, it just feels quite natural. So you do get a real buildup of the kind of power of that experience. And one of the things I was going to say about the terseness of the language is when it does work for you, where I find it really works for me, is the fact that you don't have that ceremony. So if you want to change something, you can change something quite radically if an idea isn't working out and change it in a whole new direction very quickly. So to me, that's where the real use of the terseness comes in. But, of course, once you've actually created something like that, if you want it to be reusable or other people to work with it, you do have to put comments in. And at the extreme end of this, Dissect, which was Henry Rich's inter -- well, not interactive, but basically a viewer of -- of the language. It's a really good example of operations in J. So it's really useful for people who are beginning in J because it breaks it down and shows you a whole tree of what it's doing. That particular program, I think, is over 10,000 lines. Now, a lot of them are comments, but still -- and it's actually, if you're into programming, it's worth reading it because it's just amazing the way he's documented it. You can have these huge programs because that is the purpose of them. And, you know, Henry will probably end up -- you know, I've often referred to people, if you want to learn about coding something like that, it's a good thing to read, almost like a novel, because it's closer to literate programming where you're explaining what you're doing as you're going through it. There's no way -- I can't even imagine 10,000 one-liners together doing -- I don't know what they would do. Maybe that's AI. Maybe that's what AI would produce.

00:34:11 [CH]

I mean, I don't think the AIs, the LLMs have mastered the array languages yet. They're not bad at explaining. But when you ask them to write stuff

00:34:21 [DZ]

It's very funny to use Copilot with BQN because then you get random APL in between and lots of suggestions that don't make sense. And sometimes it does make sense, but yeah.

00:34:31 [CH]

Interesting. So do you have -- do you actively use Copilot just whenever you're programming in any language?

00:34:37 [DZ]

In Python, definitely. Yeah. I think it makes sense to use because oftentimes what I feel like is Copilot fills in those things that array language is always -- it's always a good thing to use. Because array language is always -- already take away. So all the ceremony and verbosity, it fills that in for you. And you just sort of approximate what you try to do and then it will generate this outer structure sort of, I feel like.

00:35:02 [CH]

Interesting. Have you experimented with ChatGPT? [01] Because I actually have not to date used Copilot. I don't mind the -- I like having a conversation where I describe what I want, then it just gives me a whole Python script, and then I modify. And I know that the Copilot one, it's, you know, you put a comment or the start of a function name and then it just -- it says, "I'll take it from here," and then puts a bunch of stuff. And I've heard from some folks that it kind of feels like it interrupts your flow because it's kind of like, "No, that's not what I wanted." And then you got to -- so like, yeah. Tell me what your experience with Copilot has been and if you've contrasted that with just talking with a ChatGPT system.

00:35:40 [DZ]

You got to learn to ignore bad suggestions, of course. Because it's going to suggest a lot of things you don't mean. And I've not used it that much because I've been programming BQN as well. But you can sort of ask it questions in your code. And oftentimes, for example, in Lua, I work in a system which is very verbose and it has lots of, like, template stuff. And it can read this template in other parts and then just fill it in for you or give you the structure. And for those kinds of things, it really makes sense to me. Because, yeah, I'm otherwise just typing things which are not that hard. It's just a lot of labor, essentially.

00:36:16 [CH]

Copy, copy-pasting, copy-pasta. Yeah. They say that a certain percentage of coding is not actually, like, coding something from scratch. You go and find some similar thing, copy and paste it, and then you change the pieces you need, right?

00:36:31 [DZ]

Yeah. The beautiful thing about, like, BQN or the array languages is that you really. I think it's more personal, I think. Because, yeah, you can, of course, have the standard functions. Which do certain operations. But for me, it's like there are lots of explorations into areas which there's, of course, not that much Dyalog as with Python, for example. I mean, all nine foreign posts. So there's just. I don't know. It's a very personal, subjective exploration of ideas, I feel like, in these array languages more than other languages.

00:37:04 [ML]

Yeah. One of the nice things you get is that. I mean, a lot of people this is also a problem in that a lot of people have you know, they see a primitive and they say, yeah, this is a primitive. And they say, yeah, I understand what it does. But, like, what is it doing? Like, what does it mean? And one of the really nice things is that, you know, a primitive can mean so many things. So it's sort of up to you, Dwell, or maybe up to the documentation to enlighten you about them. But also up to you to, you know, find out what are you going to use the primitive for in this application? You know, what's a new use of this functionality?

00:37:38 [DZ]

Yeah. Because I feel like the APL languages are I think they're very important. Because they are a sort of like distillation of all the noise. And they got to the core of, like, logic in a sense. Not like in their own way, of course. But I feel like there is some sort of truth if you write a very beautiful piece of code. There is some sort of deep truth to it. And that's actually also a thing I want to do with these languages. I want to do an installation or more of an artwork of pieces of -- beautiful pieces of code. And show that to people that don't really know how to code. Because the only thing about programming languages or the beauty in it is that you need to be able to read it. But my idea is that I will create a program which visualizes what's happening. And I think array languages are very good for this because they are about shapes. And you can represent them in 3D. Like transforming data, shapes. And so my idea is that I have this line of code which you give some data. Maybe you even input it through actual physical dials or buttons. And then you can see it going through the code. You can see the different parts interacting with it. And then see the actual data being transformed. And I think that can give people who don't know how to code some intuition about, like, the beauty that's in there. And the sort of truth. And these pieces of code can be, like, functions which create these beautiful graphical things. But also maybe even pieces of code that describe structures in our normal world. Like, for example, my project with this ramp going up and infinitely getting slower. These very simple structures, they dictate a lot of how we operate and how things in our outside world work. Like addiction. Yeah, so, like, finding pieces of code that represent these systems we all know. But then you see them in code. You see the interaction happening. But they still affect you in that, like, truthful way. That's an idea I'm having. That's something I really want to do with the languages. The big thing I'm learning.

00:39:40 [CH]

That sounds super cool. Like, I'm picturing, like, I know J has a trace function. But I think there are several different, you know, language features or tracing capabilities in the different array languages. But, like, if you have the trace of some, you know, random ten integers. And then you're, you know, filtering just in the odds. And then summing those up or something. Like, you can, if you had some little dial that, like, increases. What's the starting number of random integers? And then as you do that, like, you have some interactive display somehow that, like, shows that. Like, even if you don't completely understand what's going on there. Like, you'd understand that, oh, I turn the dial up. It increases the number of random numbers. And I can kind of follow the trace. And at the end of the day, I see the number get bigger. I'm sure your version of this interactive would be much more. I'm just picturing, like, a computer screen that, like, you have a little dial. And then it's like, ooh, the number gets bigger. The number gets smaller. And then the trace changes. But that still is, like, a super cool idea. Because, you know, what kind of other languages so easily would that be able -- Because, like, in a language like Python, everything is so verbose. And it's kind of hard to pick apart because you don't build up these composition of functions linearly most of the time. It's like, you know, a method on a string or a built-in function or a collection from some random library. Whereas in PQN and APL, a lot of the times it's just like a stack almost. You're just popping an operation off of it. And you're just putting the operation off evaluating it. And, yeah, that is super, super cool. We'll definitely have to make sure to put a link to both your portfolio and your Instagram so that whenever this materializes at some years in the future or months in the future, people will be able to see it. And be sure to let us know when it happens because we will let the listeners know in our announcement section of a future episode. Adám?

00:41:28 [AB]

Did you see the presentations by John Daintree about talking by talking debugging? [07] That's something that's coming one day in the future to Dyalog APL. Hopefully sooner rather than later. And with the normal tracer goes line by line, executes that. But he's working on, he has demonstrated prototype for the system where you trace basically primitive by primitive. And then you can inspect the right and left arguments and the result of the primitive as you trace along. And you can even have some history of what was the previous thing that was evaluated. I think that will be a tremendous tool for people learning and trying to understand how is this working. But even to understand some fancy algorithm that somebody has put together, a one-liner if it was, I think will be a big thing. Though to be fair, we're working on this at Dyalog and our competitor, APL Plus, has had this since I was a little boy. Maybe before. I don't know.

00:42:29 [CH]

I did not know that. And APL Plus, trying to recall now from the Middlebrook conference, that's the, what's the parent company? Because they're the ones that it's not open source, right? Our listeners can't go and play around with it.

00:42:44 [AB]

Yeah. APL Plus is like the most well-hidden thing that you have to pay a fortune for to even try it out. But that's a descendant of, well, IBM's APL 360. And then Scientific Timeshare Corporation. Yeah. And then, you know, the scientific time sharing corporation and IP Sharp associates working together on some extensions to that, which is called an APL Plus. And then they fill out with each other and it's split up into a Sharp APL and APL Plus as its own standalone thing. And then Ipsa went away and the APL Plus continued and changed hands a couple of times and, or at least name and still called APL Plus Win.

00:43:27 [CH]

Right. So there's technically two companies. There's APL Next and-- APL Now. Yeah, something like that. Yeah, yeah. And one of them was a parent company for the sort of acquired technologies and the separate parent company was, or I'm not sure if parent company is the correct term, was for the future technologies. Anyways, it's all very confusing. We will find an APL Wiki link, put it in the show notes, and we'll also find a link to the website that when I was at Middlebrook, I was watching a presentation where this was being published. Yeah. And I was like, "Oh, this is a presentation where this was being talked about. " And the first thing I did was I was like, "I had no idea that there was like a whole other world of APLs. " And then I went to the website ready to like download it and play around and it was like, "Bap, bap, like enter your username. " And I was like, "Well, I don't have one of those. What is this non-accessible array language? " Which, yeah, probably is why it's less well known. And I think they were even saying that in the States, it's actually like got a bigger market share-- Oh, yeah. --than Dyalog APL. And I was like, "How is there this like bigger market share APL that like I've never even heard of? " And then they were just saying, "Oh, well, Dyalog just does a lot more sort of like evangelism and whatnot so that, you know, people know about them more. " And I was like, "Okay, well, that seems completely fair. " But still, I would have liked to known there was this other company that existed.

00:44:45 [AB]

I mentioned them on occasion. It's written about them on APL Wiki. But yeah, Dyalog makes noise and Dyalog makes extensions to the language. But definitely still, I think the commercialization. I think commercially, the small player compared to IBM's APL, which has now changed hands, APL 2 and APL Plus. Yeah.

00:45:04 [CH]

We might. I think, I mean, we still haven't had these guests on. But we've got all the guests from KX Con and all the guests from Minnowbrook. We were supposed to--I mean, speaking of artists, Stanley Jordan, [08] we mentioned right when I got back from that. Seems like an amazing next guest, although I think we've got like a month and a half of guests booked out. But at some point, we're going to get all these folks on. David, I think you were going to say--jump in there.

00:45:25 [DZ]

Yeah. Sort of a different direction. So if you want to finish or if you still have to say something.

00:45:30 [CH]

Now, now a different direction. This is a tangent that we can we can close up.

00:45:34 [DZ]

No, no. Different direction. This is a tangent that we can close up here. Yeah. I was going to hook into this idea of like a rarity maybe of array languages because always if I look at. I try to look a lot on YouTube for videos about programming languages. And array languages don't come up very often, like very minimally. And that's definitely why I also wanted to make YouTube videos. To spread some awareness and to also hopefully inspire other people to start making videos. Because like my first video, I just filmed myself programming what I was already doing. And it doesn't have to be anything fancy. It's just very nice. Like I really enjoy just looking at people doing things I enjoy or I'm interested in. If you like if there are podcasts where they talk about different array paradigms, but then array languages don't come up. And it's very sad. Yeah. So I would really love if there is more awareness. And also there is a creative coding community in the Netherlands. And I'm hoping to do a workshop there under the name of learning a weird language. Because people do find it like interesting and inspiring to see these weird characters. It's really triggering, of course, statically. It's like an alien language. It's always the first thing I show if I talk about I'm learning the BQN and I'm just showing these characters to them. And they're like, whoa. Yeah, so I really try to spread it and to make it into a bigger thing. But it is hard. Yeah.

00:47:00 [BT]

I think it's really important when you have different communities of creative people. And computer programmers or developers are definitely very creative people. But they're their own group. And often there's not as much crossover with communities like art communities. Which I think just hearing you talk about your perspective on art and how it affects. And when you're talking about installation. You went a different direction, I think, than most computer programmers would do. Is you weren't looking to actually explain what's going on. We all jumped into this. Well, you could take a function and it would show what was going on. But actually, what I heard you saying more. And I might be misinterpreting. But was more about letting somebody who doesn't know what's going on. See that there's an operation going on. So it's not the details you were going to show them as much. But to show the process that's happening. And that there is a process. And quite often I think when we work so much with machines. And we have this structural way of looking at things. We think, well, everybody knows that. But the fact is they don't. And then that's often what art does. Is it challenges you to think in new ways. And if you don't usually think in that way. It suddenly opens that up. And you think, oh, you mean this works like this? And something that you type in your ID number to get your bank machine. Suddenly becomes, oh, this is happening behind the scenes. And it changes your whole perspective on the world. Because if you really talk about empowerment. If you realize that's how these things are built. You realize they can be changed. And so the, oh, the computer does it that way. Becomes a very limited excuse. It's not the computer. It's the system that the computer is running under that does it that way. So I think when you get this wider view of different groups. Looking at the same challenges in the same. Positions in the same. Possibilities. I think that that becomes really exciting. So I think you should get more artists involved. Because I think just that new perspective. And across all groups. Musicians. Conor was mentioning Stanley Jordan. Who's an amazing jazz guitarist. That exploration changes the way you use these tools. So often we get locked into. Our thinking about these tools. And developing these tools. But the outside influence of other people. Changes how you can develop the tools.

00:49:28 [DZ]

Yeah, definitely. And I think the perspective art can give you more. Is that thinking about this in a very intuitive way. As in there's of course a lot of intuition for programmers as well. But programming is a lot about intuition. About how things are moving and structured. That's what I want to give with that idea as well. Making people feel that like using their intuition. They have about movement and structures. To give them a feel of what programming is. Instead of a logical step-by-step explanation. Because you have like this theory of the two sides of the brain. Almost being separate. And one is very rational. One is very intuitive. And there's a very like the intuitive part is very strong. And you can have a lot of knowledge. Which you can't explicitly explain. Or define. But you can really get a good feel. Or direction towards something. And using this intuitive part as well. For explaining code. Or explaining structures is really powerful I think.

00:50:33 [CH]

I'm just very excited. Because what you were saying earlier about. Part of the reason you started the YouTube channel. Was to try and inspire other folks. That you don't need to have this crazy production value or anything. It's just putting out what you're working on. Hopefully someone else will do the same thing. I really feel like the array language community. Is like. There's like a shift happening. That I don't see like in other similar communities. Like the small talk. Or like object oriented community. I think they're also like a bit smaller. And they also have like Pharaoh. Which is a you know newer IDE kind of thing. But they don't like. I would love there to be also like a you know. I don't know what you would call it. Object oriented cast. Or you know small talk cast. But like I love these like little niche communities. And like Haskell is doing well. But like Haskell is always like. Haskell has always been based in academia. And so they always have like a new set of graduate students. Or whatever. Whereas array languages and APL have kind of lived outside. The world of academia. Except for you know very rare instances of folks. Like Aaron Hsu who we mentioned earlier. You know he did his dissertation on co-dfns. But it's very rare that you know. People are actually doing you know. Dissertations and PhDs and graduate work. In the world of array languages. And just over the last two years. Like basically since we started this podcast. You know like. We're starting to see. People that we had no idea about. Like you David and Brian. And I don't know. I'm excited to see like in five or ten years. Like my hope is that like. The ecosystem that Python has. Like the array languages will be growing closer and closer to that. Because I think that's like the number one thing. That's like preventing more people from picking up array languages. Because it's like. Ah you know Python just has so much momentum. And they have a library for everything. But like there's so many tools that I write. Like my little. Little mapping tools for generating runs. So I can go collect street nodes. Like I would love to do that. In BQN or APL or something like that. But there's no like. Plotly. Map Plotly Lib. Or whatever library I use. And honestly I don't even know what library I use. Because I just go ask ChatGPT. And then it just builds me the script. And like I need to insert like one or two lines of logic. And it's done. But if like an array language can get to a point. Where the LLMs know what it's doing. I can write that one or two. You know lines of logic. Becomes like three characters. And like who wouldn't want to do that. We're just. I don't think array languages are at that point. I could be wrong. Maybe J does have like a map plotly. You know hook into. You know those. Geographical Python libraries.

00:53:03 [BT]

Yeah we haven't really explored that yet. I think there is an opportunity with that. But more. The fact that an LLM is working on patterns. Seems to be. To be a natural thing. To start. I mean. The same way you take a natural language. And you say okay there's a pattern here. And then suddenly the thing can. Produce information that makes sense. It's all based on this huge volume of. Corporate pattern. You think that. An array language would be a natural thing. The number of symbols is. Much more strongly defined. What they do. And the. Length of any particular text. Is much shorter so. I wouldn't think it would be as much of a challenge. As natural languages. But then again. If it hallucinates. I'm not sure what it looks like. When it hallucinates in J.

00:53:56 [ML]

Well I think the length. For the current models. Might be sort of a problem. Because it seems like they get. A fixed amount of thinking per token done. So with Python. They can get a bunch of tokens in. Or Java might be even better. Who knows. They can get a bunch of tokens in. Just like starting the definition of the function and all. And. By having so many. You know. Things to write. They're able to spend. More total time thinking about. You know. What am I programming. Whereas with an array language. It would have to jump right in. And have an idea of what it's doing. On the first token. Which is just not enough. Like there's not enough. Numbers going through the matrices. To get a high level picture of the language.

00:54:47 [CH]

It indexes on the ceremony. Because array languages have so little of it. Where we're at a disadvantage.

00:54:55 [BT]

But you could jump started on something like APL cart. [09] Right. Where you know what it's doing. And your phrases are the J phrases. Where you know what it's doing. And give it direction. And then kick it off from there. And that might be enough to get it going.

00:55:08 [AB]

But it might be a problem. That it doesn't get trained on that kind of data. Because the way Apple cart works. And I think all the forks of it too. Is they store all the code in a tab server. And then they just copy paste it into that file. So an algorithm might not realize. That that column actually contains code. You should be analyzing. And looking at the description that's adjacent to it. Maybe we should take all those databases. From those array languages. And post them somewhere. Just a comment next to the code.

00:55:41 [ML]

Well what if we convinced programmers. To you know when they're programming. They would take the problems. That they were thinking about. And they'd write them in on APLcart. Or BQN crate. And then copy paste. Into their code. Then it would be indexable. Yeah. I mean I think you're. If you're saying Apple cart's enough. You're vastly underestimating the amount of examples. These LLMs need to have any idea what they're doing. Because I mean they're not. They're not deeply thinking about algorithms or anything. They're recognizing patterns. So I mean. When I say thinking per token. In human terms this amount of thinking is very small. And it's a lot of you know. More memorization. In a fuzzy way.

00:56:22 [BT]

No I was thinking more Apple cart. But then you add in the APL wiki. And you add in the J wiki.

00:56:28 [ML]

I mean that's still just like such a tiny amount. Compared to you know all the Python code. These things have taken in.

00:56:35 [CH]

Millions if not billions of lines. Which is why it's this whole. Rich get richer right. Like the fact that Python was one of the top. Languages in the world. When like LLMs first came out. In whatever 2022 plus or minus. Like that could just be. It for the rest. Of like you know. Until we no longer need.

00:56:56 [ML]

Well but they're also very sharply diminishing returns. I mean the reason why you need billions of lines. Is that you know billions. Is only a fraction better than millions. But it's the only way to get that fraction better.

00:57:07 [CH]

Yeah. Anyways. Time will tell. Whether you know array languages survive. The LLM revolution. Anyways back to. Back to game programming. What is. What is next on the horizon for you David. You've mentioned a couple of different installations. That you know are. Future goals of you. Is that what you're going to be focusing on right now. Or are you in the midst of you know just continuing to work on. You know YouTube videos. And spreading the good word of BQN. And array programming.

00:57:40 [DZ]

Yeah I don't really feel myself as a YouTuber. Or anything. The reason I was doing it is so one to spread awareness. And two to if I do things. And I don't show them. Or don't share them. That I go crazy with them. So it's really nice for me to just show stuff. And then be able to look at it afterwards. But yeah. I'm not really sure. I work very intuitively. I feel very drawn to something. And then I study it a lot. And then now I have this BQN knowledge. I'm obviously going to use it. And this installation is one idea I'm going to explore. Yeah so I'm not sure. I don't really have a plan set out or anything.

00:58:18 [CH]

Okay well. Keep us informed of what your next projects are. Like I'll definitely. Like I mentioned a couple times. Be checking out your two different Instagram. And your portfolio. Because it's super cool when you hear about projects like this. I've heard of. When I was chatting with Richard Feldman. Who is the individual behind the Roc programming language. He was mentioning that someone had used Roc. To like program a physical clock. [10] Like mechanical clock. That was like made out of wood. And it's just like wow. Like it's. So I only ever do stuff that shows up on a monitor. I don't actually do stuff in the real world. So stuff like that is. It's like so cool right. Like people even that are not programmers. It's very easy to appreciate that kind of work right. Without even having to explain in too much detail. Like hey I made this clock. That's running on whatever. Like if it's physical in the real world. Whether that's art or some mechanical clock. It's super relatable for all folks.

00:59:16 [DZ]

And one of the things that was promised to me. In one of your videos I think. Was that I heard. Maybe I'm mistaken. But that somebody also used APL. I think for doing research. For example the way cancer cell grows. That's something I heard I think. And that always stuck in the back of my mind as well. That it's very powerful to. To write down ideas. And to think of logic. And that's one thing I hope. When I get better in the language. To be able to do more too. Because I really like philosophy and thinking. Or writing out my thoughts. And like I also said. With these pieces of code. That explain real life phenomena. To think in these languages too. I already have that of course. Like math and the logic. Tends to words. BQNified like math more and more. But I really hope to do that. More of that as well. Use it for my own thinking.

01:00:09 [BT]

If you were going to say something to an artist. A visual artist or an interactive installation artist. About how to approach programming. And how to approach programming. Languages. What would you say?

01:00:23 [DZ]

To someone that already knows how to program. Or just totally blank.

01:00:27 [BT]

No, no. Somebody who is primarily arts. And is working as an artist. And you say this is this tool. Like for instance if it was a painter. You'd say this is a paint brush. They don't know how to use a paint brush yet. But you have certain things you need to know. About using a paint brush. What would you say to an artist. Or a designer. About how you would approach that.

01:00:50 [DZ]

Yeah, I'm actually going to start to teach. At the school I studied in. So I should know that. I always really like. When something. Like when you see a visual. Thing happening. So you can get an intuition. You can explore and prototype very quickly. So if you can already get some input. And show something on the screen. For like a number going up. If you click on a button. That's already very inspiring. Or very triggering. And those. I think those kind of small wins. Building up from a very simple thing. And then making adding stuff. To make it more like you're envisioning. Or you're tending towards. I think that's a very cool direction. So with a paint brush. You dip it in some paint. And you do a stripe on the thing. And see what you feel. See what you see. And then iterate on that. And that's really hands on.

01:01:45 [BT]

And that feedback loop becomes really key. The shortness of it. I know that was one of the reasons. When I went into making visual media. Video. I took that over film. Because film you need to process. So you shoot what you've got. And then two weeks later. You get the film back. And you see what you ended up with. Whereas video. You shoot it. You look in the monitor. In this case. You're making visual media. Because you had this instant feedback. To the point where you could go interactive. And there were interactive installations. Where you were actually having the person. Play the video. In cases of. I'm trying to think. Was it June Park or June Kim. I can't remember, [11] but one of the early video artists. In the 50s, that's actually what they would do. You would come up and then you'd react to the video and it would just be a feedback of a monitor looking at a monitor and it would create all these patterns and you could control those patterns. That feedback loop is key, I think, to understanding, especially if your aim is to try and get that proficiency to be able to control the medium, you need a very quick feedback loop.

01:02:58 [DZ]

Yeah, I always find it very strange how people work in, for example, 3D, where you model the thing in a way different environment than you rendering it. And I always say work in real time, which I really love because then it's all instant and you can play directly with your steps. So I find it very interesting that people can work in this abstract world and then already feel out what it's going to be like when they render it. So, yeah, I really agree with that instant feedback.

01:03:26 [CH]

I feel like this is a fantastic way to end, but I also want to make sure that we don't have any final questions. From the panelists or anything that you wanted to talk about, David, that we didn't get to.

01:03:39 [DZ]

No, I don't think so actually.

01:03:41 [CH]

If not, I mean, this has been absolutely fantastic having you on. I'm so thrilled that we got to have back to back, first Brian and then you, because it's such a good juxtaposition of episodes. And yeah, I hope that there are folks listening that haven't heard of your YouTube channel, even though we've mentioned it a couple of times on the podcast before, that are going to go and check it out in the show notes. And yeah, I definitely look forward to, like I've mentioned, I think five times now. Checking out your portfolio and your Instagram. And it's super cool that we've got someone out in the community. I just also I love to now that we're asking where it's such a shame we made it, what, 67 episodes without asking people where they were based. Because for all we know, we've covered like all I don't know how many continents, what we can expect, you know, people to be recording from. But we've got, you know, folks in Australia, which is technically is it Oceania or is it Australasia? I never know which the actual name of the. Continent is. We've definitely got Europe covered now because we've got the Netherlands, Faroe Islands. I mean, America, definitely some North America, South America. Have we had?

01:04:45 [BT]

Was that? Oh, I've gone blank on his name. But yeah, it was a guy you knew. He was in Toronto. Oh ???(name) Yeah, yeah, yeah. He was in Rio, wasn't he? Or down? He was in Brazil.

01:05:00 [CH]

Yeah, I mean, he's from Brazil. But I can't remember.

01:05:03 [BT]

I thought we talked to him. He was in Brazil. And we had Tali from Africa.

01:05:07 [CH]

Yes, yes, yeah. So, yeah, we've we've. Yeah, we got to start like a little map. We're going to have to retrospectively go back and figure out where all our guests have been, because it's very cool that, you know, from week to week, we've got one person, the Faroe Islands, one person, the Netherlands. And I don't think we've done Asia yet.

01:05:21 [BT]

I don't think we've done Asia yet.

01:05:24 [CH]

Put it on. The list, yeah.

01:05:27 [BT]

There's lots of people live there who'd like to be on the show.

01:05:33 [CH]

Our next guest. Our next guest is specifically because they happen to live in Beijing.

01:05:41 [BT]

And if you do want to get in touch with us, contact at Arraycast.com [12] and you can reach us there and the show notes. And with that, usually I throw back to Conor, but I see David's got his hand up. So, David, what would you like to say?

01:05:54 [DZ]

Yeah, I just wanted to say quickly, if you're on the brink of wanting to learn one of these languages, go do it. Like, it's really worth it. It's such an interesting world. And it really opens your mind to more ideas. I think it really is worth it. So, and just go through it. It's going to be hard, but you'll go through it. You'll learn it.

01:06:11 [CH]

We'll have to put this. I always talk about this montage of clips because these clips to our listener, you know, don't really push people over the edge. Because if they're listening to this podcast, they probably already have dipped their toe. But if we put this on YouTube, I think it was when we had Rob Pike on as well. He had a bunch of amazing quotes. The same with Jeremy Howard. Anyways, we could go back through the whole backlog. And there would be a quote from everyone. We'll make that. That one will go in the montage. And we'll put it on, I don't know, my YouTube channel or somewhere on YouTube. So the folks that haven't dipped their toes in the array language world finally can. Anyways, with that, we will say happy array programming.

01:06:50 [ALL]

Happy array programming