[00:01.260 --> 00:04.320] So I'm going to be talking about esolangs as a cultural form. [00:04.960 --> 00:10.680] And this is kind of a challenge because there are a lot of esolangs that are really interesting as art. [00:11.180 --> 00:26.160] But if we apply the way that we talk about conceptual art, it can be very misleading because of course the people who first invented esolangs and kind of created this form at the beginning were not thinking in terms of that sort of art mentality. [00:27.040 --> 00:28.720] But esolangs do have an aesthetic. [00:28.720 --> 00:30.260] So how do we understand it? [00:31.140 --> 00:33.200] So let me introduce myself a little bit. [00:33.780 --> 00:34.560] I'm Daniel. [00:34.860 --> 00:37.560] I made this programming language, Folders, about 10 years ago. [00:38.000 --> 00:40.860] This is an annotated version of the Hello World. [00:41.220 --> 00:41.540] Yeah. [00:42.760 --> 00:43.280] Thanks. [00:45.240 --> 00:45.760] Yeah. [00:45.920 --> 00:49.020] So this gives a little bit of an idea of how Folders works. [00:49.260 --> 00:54.440] And more recently, I made this language called Rivulet, which was very confusing for people on Hacker News. [00:55.800 --> 01:08.920] And this was basically me thinking about what an esolang might look like if it was a natural language that had developed over generations with its own internal logic and idioms and eccentricities that didn't really connect very much with other languages. [01:09.220 --> 01:10.340] And this is what I came up with. [01:10.500 --> 01:20.220] And you can see the notes from people on Hacker News who are very confused about why there's no line number four and no line number six and various other things about it. [01:21.860 --> 01:26.480] So when we talk about esolangs, there's sort of certain terms that get used a lot. [01:27.260 --> 01:31.180] They're described in their sort of formal aspects and their technical aspects. [01:31.420 --> 01:41.720] Of course, it's very useful to talk about the language's computational class, formal features, like whether it's self-modifying code, whether it's non-deterministic and so on. [01:41.920 --> 01:47.980] But a lot of this doesn't really get at what the idea of the language is, kind of why it exists, what it's up to. [01:48.400 --> 01:59.800] And then it gets put in these buckets of things like the Turing tar pits, which actually that's a term that is very useful and we'll get to the tar pits in a little bit because that is sort of a particular style of esolang. [02:00.320 --> 02:12.100] But then these other ones like parodies of existing languages, many esolangs sort of exaggerate some strange feature of programming in some way and start off as a parody. [02:13.180 --> 02:20.380] And my least favorite category, joke, because basically any esolang you could argue is in the joke category, at least to start with, right? [02:20.660 --> 02:28.880] Like if we didn't have so many people having produced brain fuck programs, you know, if there was only a handful of them, we would still think of it as sort of a joke programming language. [02:29.080 --> 02:34.260] And there are a lot of people who are not really that interested in esolangs who kind of see all esolangs as joke languages. [02:34.520 --> 02:37.400] So it doesn't really tell us very much about what they're up to. [02:39.200 --> 02:54.220] I started a blog about 2011 or so called Esoteric Codes where I interviewed people who make esolangs and really tried to focus on less technical aspects of the work to sort of understand more of what they're up to. [02:54.820 --> 02:58.920] And there are a number of sort of major themes that came up in esolangs. [02:58.920 --> 03:01.020] And that's what I'm going to be talking about today. [03:02.380 --> 03:05.280] So the first one is what I think of as humbleness. [03:07.120 --> 03:17.600] And this refers to the essay by Dykstra, which I think of as sort of a foundational piece about modern code aesthetics, even though it wasn't really argued as that. [03:18.140 --> 03:20.400] And that essay, of course, is The Humble Programmer. [03:20.700 --> 03:22.940] Are people familiar with The Humble Programmer? [03:22.940 --> 03:23.700] Have people heard? [03:23.800 --> 03:23.940] Okay. [03:24.240 --> 03:31.840] So basically, in 1957, Dykstra was asked to state his profession, apparently to get a marriage license. [03:32.240 --> 03:35.660] In the Netherlands, you had to say what your profession was. [03:35.840 --> 03:40.520] And at the time, they did not recognize computer scientist or programmer as valid professions. [03:41.800 --> 03:44.800] And so he kind of mulled this over for quite a long time. [03:44.960 --> 03:56.800] And about 15 years later, he wrote this essay, The Humble Programmer, which is about kind of like, how do we make programming a serious profession instead of just a bunch of people kind of like fooling around with computers? [03:57.280 --> 03:58.840] How do we professionalize it? [03:59.540 --> 04:07.060] And his answer is usually what we now think of as just good code, that which emphasizes clarity and structure above everything else. [04:07.660 --> 04:16.520] And the main goal, the main thing he gets at in Humble Programmer is that he wants to close the cognitive distance between how code reads and what it does. [04:16.720 --> 04:20.680] So you can look at a piece of code and it's easy to understand how it's going to perform. [04:21.500 --> 04:23.320] This seems like sort of an obvious goal. [04:23.880 --> 04:25.820] So why does he have to write this? [04:25.980 --> 04:30.360] Why was this a necessary thing to write a whole essay about in the early 70s? [04:31.200 --> 04:41.880] And the reason was, there were a lot of people who were still functioning the same way that they did at the beginning of programming, where efficiency was essential. [04:42.200 --> 04:46.100] When computer cycles were very expensive, everything had to become as efficient as possible. [04:46.540 --> 04:55.740] And so the part that I've highlighted here, he says, the one opinion that was really was that a really competent programmer should be puzzle-minded and very fond of clever tricks. [04:55.740 --> 05:00.840] Or that programming was nothing more than optimizing the efficiency of the computational process. [05:01.640 --> 05:04.140] And Dykstra is basically saying, this kind of thinking is over now. [05:04.540 --> 05:08.640] We're no longer about trying to make the computer as efficient as we can. [05:08.820 --> 05:10.840] We're trying to make code that'll work with other people's code. [05:10.840 --> 05:14.460] We have to work... we're basically making widgets now that have to work with other people's widgets. [05:14.680 --> 05:18.680] And if we write code and we come back to it a year later, we want to understand what it is. [05:18.880 --> 05:21.460] We want other people to be able to understand what we wrote. [05:24.100 --> 05:28.860] And this is something which was talked about quite a bit by John Backus of Fortran. [05:28.860 --> 05:39.280] He said that many programmers of the freewheeling 1950s began to regard themselves as members of a priesthood, guarding esoteric skills and mysteries far too complex for ordinary mortals. [05:39.860 --> 05:45.060] So this is the way that a lot of programmers thought about themselves in the 50s. [05:45.180 --> 05:50.040] And some were not very happy that code was moving towards something that was easier to understand. [05:51.540 --> 05:57.220] This language, Flomatic, was created by Admiral Grace Hopper, and it's a precursor to Fortran. [05:57.480 --> 06:03.240] And her vision was that code could be written by managers, by a colonel or an admiral like herself. [06:03.900 --> 06:07.500] It was a move that made code more accessible to more people, which is great. [06:08.060 --> 06:13.240] It's the democratizing as code, but what comes along with this also is the de-skilling, right? [06:13.420 --> 06:17.620] You no longer have to be this kind of technical wizard in order to write sort of basic programs. [06:20.480 --> 06:23.720] So there's often been some kind of resistance against that. [06:25.320 --> 06:27.340] And of course, we're seeing that again now with AI tools. [06:28.440 --> 06:41.180] But anyway, okay, so basically, the programmers were no longer encouraged to kind of show off technical wizardry to do this sort of like, I can write the same line of code that you did, but I can use a few characters fewer and that sort of thing. [06:41.520 --> 06:43.660] But of course, that stuff still exists in hacker culture. [06:44.360 --> 06:50.720] And it came back in a big way through a number of different things, code golf, demos, and SLGs. [06:51.720 --> 06:53.920] So are people familiar with the language false? [06:54.540 --> 06:56.040] Is this the language that people have heard of before? [06:56.160 --> 06:56.300] Okay. [06:56.780 --> 07:05.020] So false was not the first SLG, but it started a conversation that really sort of began what I think of as the SLGs movement. [07:05.520 --> 07:10.980] This came out in 1993, is written by Wouter von Wart-Mersen. [07:11.840 --> 07:16.000] And he was basically attempting to make the smallest possible Turing complete language that he could. [07:16.540 --> 07:17.780] The compiler is 1K. [07:18.300 --> 07:23.660] And he said, to keep it simple, to parse, I knew that each operation had to be a single character. [07:24.100 --> 07:26.840] Then it dawned on me just how unreadable this language would become. [07:27.040 --> 07:31.480] And it was at that point that I thought it'd be fun to use more obscure symbols to make it crazy looking on purpose. [07:32.200 --> 07:33.840] So this was the starting place. [07:33.840 --> 07:44.520] And you can see that it results in this character salad that we see here, which is sort of the visual style that a lot of people associate with SLGs, especially with the Turing Tar Pits, which I would argue this is one of the first. [07:45.520 --> 07:52.000] Now, the thing that's interesting about this is that van Wart-Mersen didn't skimp on features. [07:52.240 --> 07:54.320] He stopped as many commands as he could in this language. [07:54.520 --> 07:56.720] There's only a partial list of the commands. [07:57.500 --> 08:05.340] But it basically recreates the conditions of early coding in a way that demands programmers disregard all those things that Dijkstra wanted from us. [08:05.560 --> 08:08.220] Clarity, neutrality, and modularity. [08:08.420 --> 08:10.820] So all the Dijkstrian virtues are now impossible. [08:11.260 --> 08:19.580] And it's the minimalism of the language that gives us the excuse to show off technical wizardry that sort of lost its place in professional code. [08:21.440 --> 08:34.200] The term Turing Tar Pits comes from the mythical man month, which has all this kind of like pseudo biblical imagery in it of these great beasts thrashing around in tar, entangled in inexplicable code. [08:35.960 --> 08:43.980] So the same year, another programmer created an answer to false, which might be more familiar to people, BrainFuck. [08:44.140 --> 08:45.420] So this is also 1993. [08:45.420 --> 08:46.700] It's also for the Amiga. [08:47.160 --> 08:48.740] It was created by Urban Mueller. [08:49.060 --> 08:53.780] And what Mueller did was basically he tried to create false, but even more so. [08:53.780 --> 09:00.800] So instead of 1k, it's like under a quarter of... it was like under 256 bytes. [09:01.400 --> 09:10.040] And he just got rid of all the features that he considered unnecessary, which was basically everything except for sort of the bare Turing machine expressed in these single characters. [09:11.200 --> 09:19.660] And it's really the quintessential tar pit, and that his commands are all easy to understand on their own, but so bare bones that even the simplest tasks require complex programs. [09:20.100 --> 09:25.100] So basically, he gives you tools that are actually not that difficult to understand. [09:25.300 --> 09:29.140] I mean, we move back and forth through memory, we add one, we subtract one, and we have this looping structure. [09:29.360 --> 09:34.180] But there's no way to build anything with this without getting yourself into trouble almost right away. [09:36.020 --> 09:40.200] But it's not just the complexity that's the issue. [09:40.460 --> 09:43.020] It's also neutrality, right? [09:43.100 --> 09:48.980] One of the things from Dijkstra was that you're supposed to write in a neutral style so that other people will be able to understand what you wrote. [09:49.140 --> 09:51.080] The code isn't the place to show off, basically. [09:51.680 --> 09:53.840] But BrainFuck gives you no choice but to show off. [09:54.440 --> 09:56.760] You have to make all kinds of arbitrary decisions. [09:57.240 --> 10:00.280] So these are five different ways to write the number 35. [10:00.780 --> 10:04.000] So even if you want to store a single number, you have these choices. [10:04.180 --> 10:08.800] The top one, you're basically multiplying five by seven through this looping structure. [10:09.060 --> 10:11.900] And that's the only one that can easily look at and understand. [10:12.180 --> 10:13.780] And I've looked at it like a lot of BrainFuck. [10:14.280 --> 10:18.840] The other ones here all get to the same number in some way. [10:19.060 --> 10:24.400] Most of them say wrapping next to them, which means that it wraps past zero, usually many times. [10:24.980 --> 10:29.080] And then that last number, so it's 18,2, 17,2. [10:29.300 --> 10:32.160] The two is how many memory cells it uses to get to that number. [10:32.380 --> 10:37.560] So the top one only uses two memory cells, and the bottom one uses 12 to ultimately get to that. [10:37.560 --> 10:47.620] And so from there, we get more and more sort of strange languages that give a place for this kind of technical wizardry to take off. [10:47.840 --> 10:52.040] The king of the right only languages is perhaps Unlambda by David Medore. [10:53.440 --> 11:02.980] And that brings us to what is perhaps the most complex of the esolangs, which I'll introduce with this short clip from General Hospital. [11:05.880 --> 11:07.240] Oh, but we don't have any sounds. [11:08.300 --> 11:09.620] Can anyone hear this? [11:10.040 --> 11:10.420] Okay, wait. [11:10.860 --> 11:11.580] All right. [11:11.720 --> 11:12.000] That's okay. [11:12.100 --> 11:12.380] Hold on. [11:13.020 --> 11:15.700] I've rarely met anyone as brilliant as Damien Spinelli. [11:15.980 --> 11:16.940] It's not his fault. [11:17.060 --> 11:18.360] He doesn't know Mal Bogle. [11:20.040 --> 11:22.360] There's a computer language that Spinelli doesn't know. [11:23.920 --> 11:27.300] Fortunately, I picked up just enough of it to disarm the destruct sequence. [11:28.460 --> 11:33.420] So the main thing to get from that is number one, Colonel Sanders is a recurring character in General Hospital. [11:34.700 --> 11:39.780] And number two, he's an ESO programmer who's an expert in Mal Bulge, but doesn't know how to pronounce it. [11:41.720 --> 11:50.540] So Mal Bulge basically is the Turing tar pit language that gets rid of all the excuses for being as complex as it is. [11:50.720 --> 11:53.600] It doesn't have the minimalism of false or brain fuck. [11:53.920 --> 11:57.280] It was just designed to be as difficult to program in as possible. [11:57.820 --> 12:00.560] And there are many things that it does to get to that. [12:01.020 --> 12:02.440] It's self-encrypting. [12:02.540 --> 12:05.780] So as the program runs, it keeps changing its source code in a very complex way. [12:06.400 --> 12:09.880] But my favorite feature of Mal Bulge is actually a very simple one. [12:10.700 --> 12:15.520] Mal Bulge does not offer an operator for addition or multiplication. [12:16.080 --> 12:19.040] The only arithmetic operation that it has is called crazy. [12:19.400 --> 12:22.260] And if you want a crazy two numbers, it works like this. [12:22.480 --> 12:24.660] You have to think of the numbers in base three. [12:24.960 --> 12:27.620] So we think of them not in bits, but as trits. [12:27.920 --> 12:32.520] And this is a tritwise operator with a sort of random combination of different numbers. [12:33.080 --> 12:37.120] And I just love the idea that you can crazy two numbers. [12:37.340 --> 12:38.380] And this is your only choice. [12:38.600 --> 12:41.740] And I always want to sneak crazy into all of my languages somewhere. [12:43.420 --> 12:51.360] But so the main thing about Mal Bulge is that it was like all the pretenses that we had of why these languages were difficult are gone. [12:51.500 --> 12:54.580] Now it's just a place to kind of show off that you're able to do it in some way. [12:54.580 --> 12:59.760] But it also sort of underscores this sort of alien-ness of the machine. [13:00.320 --> 13:06.400] The way that the kind of relentless logic of the machine feels irrational to us. [13:06.940 --> 13:10.300] And Mal Bulge keeps popping up in weird places in popular culture. [13:10.800 --> 13:18.780] It was on the show Elementary, which is the picture to the right where this, you know, some bomber left some clue in Mal Bulge code. [13:19.260 --> 13:27.120] And then for a while, there was a website called code.attorney that claims that it had like hundreds of these Mal Bulge programs. [13:28.640 --> 13:29.960] And none of them worked. [13:30.160 --> 13:33.600] It was like we very quickly were able to figure out that it was all bullshit. [13:33.760 --> 13:36.200] I mean, there aren't that many programs written for Mal Bulge. [13:36.240 --> 13:37.300] It's only like a handful of them. [13:37.420 --> 13:40.700] So it would have been like a treasure trove if there were all of a sudden hundreds of programs. [13:41.240 --> 13:46.440] But it was just page after page of these like generative images and the strange text. [13:46.680 --> 13:49.340] But it only really makes sense as Mal Bulge. [13:49.480 --> 13:52.280] It kind of has this mystery to it. [13:52.400 --> 13:55.360] And like, I think it's great that we never figured out who did it. [13:55.640 --> 13:57.700] Like, I think it ended up being some kind of crypto scam or something. [13:57.900 --> 14:07.580] But like, you know, it was sort of a great tribute to the beauty and mystery of the language and its inscrutable logic. [14:08.860 --> 14:11.380] All right, so that is humbleness. [14:11.640 --> 14:18.240] So we kind of think of most SLX as pushing back against humbleness, especially about the clarity of code, right? [14:18.580 --> 14:20.440] The next thing is elegance. [14:20.740 --> 14:24.520] And elegance is sort of a strange thing because people can't really agree on exactly what it is. [14:25.220 --> 14:39.220] This is Matthew Fuller writing for in software studies that he describes elegance as the leanness of the code, the clarity with which the problem is defined, sparedness of use of resources such as time and processor cycles. [14:39.900 --> 14:43.600] But mostly stuff about elegance sounds kind of bullshitty. [14:45.580 --> 14:48.960] It's something that people aspire to, but it's not very clear why. [14:49.300 --> 14:55.140] And I think of elegance as something that was sort of smuggled into computer science from math. [14:55.380 --> 15:02.960] Like in mathematics, the idea of a very short equation that tells us a lot about the world is considered elegance. [15:03.120 --> 15:08.320] And for some reason, because the first computer scientists were mathematicians, they sort of brought this in as this goal. [15:08.580 --> 15:12.880] So now we have this idea that a very short program that does a lot of something is elegant. [15:13.860 --> 15:15.720] So like one of the things... [15:15.720 --> 15:18.340] This is the Yarmiel's fork bomb. [15:19.620 --> 15:21.160] I have the real version at the top. [15:21.620 --> 15:22.620] At the bottom I have... [15:22.620 --> 15:25.700] So the colon is just the name of a function. [15:25.940 --> 15:27.900] If you switch it to F, it becomes much less mysterious. [15:29.560 --> 15:33.760] But it's basically like, do you find this piece of code beautiful and elegant or not? [15:34.060 --> 15:36.640] I think it's sort of arguable one way or the other. [15:36.960 --> 15:45.820] But going back to the brain fuck example, nearly all of the different ways that are given to us of how to get to 35 are elegant in some way. [15:46.000 --> 15:49.680] They're either the shortest or they use the fewest number of memory cells. [15:49.980 --> 15:57.820] And there's kind of a sense that brain fuck to some degree is an invitation to try to create stuff that are elegant within a very chaotic system. [15:58.240 --> 16:00.120] And that's what's exciting about working within it. [16:05.040 --> 16:07.440] But then you can also push back against it. [16:07.540 --> 16:11.560] So this is a code poem that was written by Daniel Holden and Chris Kerr. [16:11.660 --> 16:15.780] And it uses the golden spiral, which is sort of like the universal symbol of elegance. [16:16.460 --> 16:22.440] But it's written in possibly the least elegant JavaScript program that you could write to generate it. [16:23.800 --> 16:25.960] And it's also written as a code poem. [16:26.460 --> 16:31.360] So essentially, it's meant to be read aloud as English, but it also works with JavaScript. [16:32.100 --> 16:37.000] And it's full of references to chemtrails, leptons, and the lies of Washington. [16:37.940 --> 16:42.480] And this was written during the first wave of disinformation that would later crest as QAnon. [16:42.980 --> 16:50.220] So it sort of ties into like, you know, like all those photography tutorials online that tell you to use the golden spiral in some way and all that kind of bullshitty stuff. [16:50.780 --> 16:55.160] It's basically kind of connecting that with this other kind of conspiratorial thinking. [16:57.080 --> 16:59.520] I created a language in 2010 called Entropy. [17:00.440 --> 17:11.980] And this was sort of intentionally about forcing programmers to give up any sort of illusion that they actually have control over the machine by having data randomly change as their program runs. [17:12.300 --> 17:16.740] So you have like a little window to get an idea across to people before your program falls apart. [17:17.340 --> 17:25.200] And you end up with a 99 bottles of beer on the wall program that looks like this, starting with 98.99005 bottles of beer. [17:25.460 --> 17:28.780] And by the time it gets down to 67, it's basically all nonsense. [17:30.640 --> 17:33.900] So this is one way to sort of push back against this idea of elegance. [17:35.580 --> 17:36.820] Okay, multi-coding. [17:38.460 --> 17:43.360] So false did not just inspire brainfuck, it also inspired Bfunge. [17:43.640 --> 17:45.720] Is that a language that people are familiar with at all? [17:45.860 --> 17:46.240] Yeah, okay. [17:46.420 --> 17:47.520] So a few people. [17:47.740 --> 17:49.360] So Bfunge also came out in 1993. [17:49.840 --> 17:51.540] All this stuff happened very close together. [17:51.540 --> 17:52.920] It was created by Chris Pressey. [17:53.520 --> 17:58.000] And it was the Bfunge mailing list where the term Esselang was first coined. [18:01.480 --> 18:08.800] And what he got out of false was that now that we're working with commands that have one letter, why do we have to read them left to right? [18:08.980 --> 18:09.940] We can go up and down. [18:10.300 --> 18:11.280] It's now a grid. [18:11.540 --> 18:13.440] So we can move any direction we want. [18:13.580 --> 18:16.740] And so he made a language where the code flows in all different directions. [18:16.740 --> 18:18.020] It keeps turning as it goes. [18:19.000 --> 18:20.980] So this is sort of a pseudo-quine. [18:21.140 --> 18:23.280] The code on the left produces the output on the right. [18:24.480 --> 18:30.000] But then there was an answer eight years later, which is the language Pete, which does the same thing. [18:30.100 --> 18:34.940] And it functions in a very similar way to Bfunge, except that it uses color instead of text. [18:36.460 --> 18:40.820] Once you have code that flows in all directions, you know, you can switch this visual lexicon much easier. [18:41.960 --> 18:49.040] And so Pete is really sort of the one of the first and still really the best known of what I call the multi-coding languages. [18:50.220 --> 18:53.720] These are languages where the text of code can be read in multiple ways. [18:53.900 --> 18:55.480] As code, but then as something else. [18:55.680 --> 18:56.940] In this case, an image. [18:57.200 --> 19:03.540] But to really be multi-coding, the two different systems that we read it through must impact each other in some way. [19:03.960 --> 19:05.780] So the design of the program comes from both. [19:06.320 --> 19:09.760] And here with these programs, they don't really that much yet. [19:12.320 --> 19:18.080] Like this is sort of a very basic Pete program, which is sort of just kind of shows how to write something in Pete. [19:18.320 --> 19:22.220] The middle one kind of shows two different variations of a very simple program. [19:22.460 --> 19:27.400] And then the one to the right is a computer generated Pete interpreter written in Pete, which is an amazing feat. [19:27.600 --> 19:29.060] But of course, it's computer generated. [19:29.320 --> 19:32.040] It's not really playing with the idea of the image that much yet. [19:33.160 --> 19:41.700] But then like a few years later, you started to have people who were using the constraints of Pete to create code that did something else. [19:42.420 --> 19:56.660] So this is the Hello World by Thomas Scotch, which is one of the first so-called artistic Pete programs, meaning basically that it had a more considered aesthetic, more deliberate, while working within the constraints of the language. [19:57.000 --> 20:04.000] And what starts to happen here is that you kind of see what the aesthetics of Pete are more generally. [20:04.220 --> 20:06.580] It has a certain set of colors that it uses. [20:07.140 --> 20:12.520] It creates certain types of shapes in general, but now you have people sort of creating their own style within it. [20:12.640 --> 20:18.940] And it's that conversation between the Isolanger and the Isol programmer that things get really sort of more interesting. [20:20.580 --> 20:22.800] Of course, Pete is named for Pete Mondrian. [20:23.200 --> 20:29.500] And so some people made sort of Mondrian looking images, but it doesn't really work that well because of course Mondrian worked with primary colors. [20:29.780 --> 20:32.260] And Pete asks for all these other colors that are very different. [20:33.440 --> 20:42.140] So we can kind of think of multi-coding as similar to the idea of the polyglot program, which is a program that functions in two different programming languages. [20:42.760 --> 20:49.400] This is one that we can see it highlighted for two of the four languages that it appears in. [20:49.680 --> 20:58.580] And we can also think about it in terms of other artistic and writing movements such as Aleppo. [20:58.940 --> 21:12.880] So the Aleppo movement of mathematicians and writers from the 1950s, 1950s Paris, these were people who sort of created, they created constraint systems, and then they designed work that fit within those constraints. [21:13.740 --> 21:17.980] So the most famous example is the piece by Georges Parec. [21:17.980 --> 21:20.940] This is a novel written in French without using the letter E. [21:21.180 --> 21:23.400] And so we've seen variations of this come up a lot. [21:23.520 --> 21:25.700] This is lipogrammatic writing. [21:26.080 --> 21:30.440] So basically they call themselves the rats who design their own maze. [21:30.900 --> 21:34.600] So they create the constraint system and then find some way to work within it. [21:34.740 --> 21:46.320] And in these cases, it's the Esselanger who creates the constraint system by connecting the visuals of the PEAT program to how it functions as code. [21:46.620 --> 21:51.200] And then turns it over to other people to find their own style within it. [21:52.140 --> 21:59.340] So these multi-coding languages are the ones that really make it the most clear, this conversation happening between the Esselanger and the Essel programmer. [21:59.840 --> 22:09.800] But the most interesting of these languages like PEAT, allow the Essel programmers to push that aesthetic much further than the person who designed the language could have foreseen. [22:10.300 --> 22:13.880] So an example of this is the PI program by Richard Mitten. [22:14.400 --> 22:22.440] It calculates PI by walking through all the pixels of the circle and then dividing it by the square of the radius, which is that red line to the left. [22:22.720 --> 22:35.300] And so it flattens the circle as symbolic representation with the circle in the actual code, meaning that the larger you draw this program and the less pixelated it gets, the more accurate the calculation of PI will become. [22:35.980 --> 22:39.700] You need obviously an infinitely large version of the program to calculate it perfectly. [22:41.040 --> 22:47.720] But this relationship between the circle's image and the circle's code is something that could only really happen in PEAT in this language. [22:48.260 --> 22:52.140] And it's not something that David Morgan Marr, who designed PEAT, really could have predicted. [22:53.260 --> 22:57.580] And then people realized that you could hide PEAT programs in other sort of pixelated images. [22:57.960 --> 23:00.360] So this is a piece by Katerina Sick. [23:00.840 --> 23:03.420] The basic program is all the way to the right. [23:03.420 --> 23:10.600] And then she sort of drew this tree around it and she filled it in with sort of non-PEAT colors to basically really hide the PEAT program. [23:12.020 --> 23:16.580] And one of my favorite examples is this painting by Barbara Moss. [23:16.580 --> 23:25.800] So a programmer whose name happened to be PEAT, spelled the same way, a Dutch programmer, saw this painting and wondered if it could work as a PEAT program. [23:26.100 --> 23:29.180] So he took a picture of it, translated it into the thing to the right. [23:29.520 --> 23:39.120] And it turns out that it actually is runnable and it prints the corresponding numeric value to the ASCII letters provided to it, to the screen. [23:39.120 --> 23:41.720] So this is a, this is like a PEAT ready-made. [23:41.840 --> 23:46.400] It's a program that had no, no real author, an unintentional PEAT program. [23:48.540 --> 23:50.120] So a little bit more on multi-coding. [23:50.540 --> 23:51.720] Do people recognize this language? [23:54.660 --> 23:57.460] So it's like, I don't want to say too much about Shakespeare. [23:57.720 --> 23:59.460] It's really not a very good programming language. [24:00.600 --> 24:08.540] It's, but what's important about it is it's the first one that really worked with the idea of multi-coding into dialogue and poetry. [24:10.520 --> 24:19.200] You might be wondering why Hamlet is in a play with Juliet and what she's talking about, the square root of Romeo and how it all kind of sounds like Markov chains or something. [24:22.600 --> 24:27.840] Basically, if you have insults, they subtract value and compliments increase them. [24:28.080 --> 24:34.540] And these come from like a long live, like vocabulary list, but the insults are more fun. [24:34.540 --> 24:45.120] So we deal with a lot of negative values in Shakespeare and usually it's like somebody insulting someone else with like word comma, like just like hundreds of words in one line of code. [24:45.880 --> 24:49.140] So there's not that much you can do with Shakespeare as a multi-coding language. [24:49.360 --> 24:51.080] The aesthetic of Shakespeare is very narrow. [24:51.560 --> 24:57.720] What I mean by that is that if I write a Shakespeare program and you write a Shakespeare program, they're just going to look like Shakespeare programs. [24:57.780 --> 25:03.800] There's not going to be a lot of room to express something of interest within it. [25:03.800 --> 25:06.100] All Shakespeare programs basically sort of look the same. [25:06.420 --> 25:11.880] But it was sort of a really interesting idea to bring this into natural language. [25:12.060 --> 25:16.140] And so there've been a whole bunch of pieces since then that were inspired by Shakespeare. [25:16.980 --> 25:21.340] So one of the ones I find really interesting is Ash Paper, which was created by Will Hicks. [25:22.360 --> 25:30.000] Instead of multi-coding by vocabulary, it multi-codes by where capital letters appear, whether lines rhyme, whether they use alliteration. [25:31.360 --> 25:34.720] And so basically the things that we use more in poetry anyway. [25:35.480 --> 25:37.100] So it's very broad in scope. [25:37.560 --> 25:42.680] Its rules are more subtle to the point that it's more difficult to identify singular defining Ash Paper style. [25:43.300 --> 25:51.560] And then another take on this is Inverse, which is a shader-based esolang by Sukanya Anajah. [25:51.960 --> 25:55.920] And this pushes the same idea further, but now there's an extensible lexicon. [25:55.920 --> 26:01.500] So each programmer working in it can define their own vocabulary list. [26:02.320 --> 26:09.320] And so what happens there is that now it's up to the programmer to sort of relate the visuals to their writing in their own way. [26:09.500 --> 26:12.440] Because they're really given full commands of the lexicon themselves. [26:15.940 --> 26:22.500] So while this dialogue between esolangers and isa programmers is most visible and multi-coding, it's there in most esolangs. [26:23.080 --> 26:25.200] A language is this kind of dematerial thing. [26:25.360 --> 26:27.120] It's an idea more than anything else. [26:27.240 --> 26:30.300] And it doesn't always necessarily have an understandable set of rules. [26:30.600 --> 26:40.940] So going back to Malbolch again, there's a small difference in the implementation, rather in the documentation of Malbolch versus the reference compiler. [26:41.580 --> 26:47.600] And some people consider the bug in the documentation, and some people consider it to be in the reference compiler. [26:48.260 --> 26:54.420] And Ben Olmsted, who made it, refuses to answer which one is correct, which has basically created this schism in the language. [26:54.860 --> 27:06.660] And while he says that this is entirely accidental, in retrospect, he says that he wishes he had worked more small bugs into it to create more sort of arguments about how the language works. [27:08.640 --> 27:16.360] Okay, so the next type of language I want to talk about are ones that push back against cultural aspects of computing and programming culture. [27:16.800 --> 27:21.300] And a great example of that is the movement that's become ethnocomputing. [27:23.680 --> 27:31.580] Yeah, people often ask me if anything practical has come from esolangs, and this is definitely something that's expanded outside of the esoteric world at this point. [27:33.080 --> 27:42.000] So one of the things about programming languages that gets critiqued often is the dominance of the English language. [27:42.620 --> 27:48.600] And it didn't have to end up this way, where nearly every programming language that's widely used, uses English keywords. [27:49.140 --> 27:53.600] At one point we had APL, we had really cool keyboards that looked like this. [27:54.280 --> 28:01.980] And basically we used these Greek mathematical signs as symbols rather than using a lot of keywords in our language. [28:03.660 --> 28:11.140] So there's a sort of alternate computer history where we ended up with something that was much more international, but that's not really where we ended up in the end. [28:12.080 --> 28:18.320] But starting about 10 years ago, people started creating esoteric languages that sort of push back against English. [28:19.200 --> 28:26.140] One of the most noted, the one that's inspired most other languages is ALB, created by Ramzi Nasser. [28:27.440 --> 28:29.480] And this is an Arabic-based LISP. [28:30.060 --> 28:40.560] And it wasn't originally intended to be an esoteric language, but really a practical language that people could use who are comfortable with Lebanese Arabic to learn how to program in LISP. [28:40.980 --> 28:50.120] But he found many cultural biases in the tools that he was using, things that should have been compliant with Unicode, but really didn't work correctly with right to left languages. [28:51.300 --> 29:04.520] So it ended up becoming sort of a symbol of those underlying biases, ways to push back against it, and other sort of cultural questions that come up in creating a language like this. [29:05.220 --> 29:08.720] And it inspired a series of languages in response. [29:10.320 --> 29:11.540] And this is Yorlang. [29:11.780 --> 29:15.800] It was created by Karunwi Anulwapo. [29:16.700 --> 29:19.200] And during the day, Anulwapo... [29:19.200 --> 29:23.600] So he's a Nigerian programmer, and he worked mostly for European clients. [29:23.740 --> 29:29.780] So during the day, he spoke in English to clients encoded in languages that used English keywords, mostly JavaScript. [29:30.300 --> 29:33.520] And he decided that after hours, he didn't want to be thinking about English. [29:33.520 --> 29:37.880] And he created a programming language in Yoruba, and named it Yorlang. [29:38.320 --> 29:49.580] And the nice thing about Yorlang is that it went on to inspire more other indigenous African programming languages, like Swap in Swahili, and Igbolang in Igbo. [29:49.900 --> 29:51.760] But these languages are mostly... [29:54.140 --> 29:58.920] These two that I just showed are mostly sort of like keyword swapping with existing languages. [29:58.920 --> 30:01.440] They're very similar to existing languages. [30:01.700 --> 30:04.180] But that's not the only way that you can do this. [30:04.680 --> 30:11.160] We have Yorlang by Ling Dong Huang, which is not in a contemporary language, but in classical Chinese. [30:12.300 --> 30:16.640] The written form of Chinese used from 5th century BCE to the early 20th century. [30:17.660 --> 30:20.340] And we end up here with a kind of natural language programming. [30:21.520 --> 30:26.340] It's fully readable as classical Chinese, if only a subset of that language. [30:28.640 --> 30:34.980] And the hello world here is really saying something closer to greetings to heaven and earth. [30:35.500 --> 30:37.260] Here's the 99 bottles program. [30:39.100 --> 30:40.420] And how it's translated. [30:40.660 --> 30:45.540] This was written in the style of an 8th century poet, Li Bai, who... [30:45.540 --> 30:51.500] The person who translated this for me, Yidi Cao, calls the greatest poet in Chinese history. [30:52.380 --> 31:05.100] And basically, because this is written in classical Chinese, there's a lot of opportunity for plays on words and writing in more of a poetic style. [31:06.760 --> 31:11.980] So wine number, like wine and nine, I guess, are homophones in classical Chinese. [31:13.000 --> 31:17.860] So the nine number at the beginning is also the one number. [31:20.000 --> 31:23.560] And Li Bai apparently was famous for his drinking habits. [31:25.820 --> 31:29.220] Going even further than that, we have Cree Shart by John Corbett. [31:30.200 --> 31:36.040] It's written in Cree, which uses the Canadian indigenous syllabics script. [31:36.920 --> 31:44.740] And he decided not just to use the Cree alphabet, but also to use ideas from Cree culture in it. [31:44.940 --> 31:48.980] So for instance, instead of if-then, he has the idea of a splitting river. [31:49.280 --> 31:53.300] I guess in Cree, there are different words for the larger part of the river and the smaller part of the river. [31:53.460 --> 31:55.120] So it's all symbolized in that way. [31:55.340 --> 31:57.220] But there's multiple ways to write Cree Shart. [31:57.300 --> 32:01.440] You can write it in this alphabet, or you can write it as basically a transliteration. [32:02.060 --> 32:12.860] But he kept this unusual morphology that Cree has so that basically a keyword is not always a full word, but the first part of the word and the second part of the word can do different things. [32:13.460 --> 32:17.480] So this variable declarations, you have to decide on the scope of it. [32:17.600 --> 32:24.500] And based on the scope, it goes into a berry bag, which is sort of like the local scope, or then another type of bag. [32:24.620 --> 32:30.480] And basically they have very similar names, but all these word endings affect what actually happens. [32:30.480 --> 32:40.140] And he wasn't happy with the way that Cree sits on the Western keyboard. [32:40.160 --> 32:42.200] So he made his own keyboard for it as well. [32:47.560 --> 32:52.380] So pushing against received ideas and computing doesn't only mean cultural norms. [32:52.600 --> 32:59.920] We can push back against anything that feels like what are given as incontrovertible rules about what is or what isn't the language. [33:00.500 --> 33:07.020] I like to think that any definition of a programming language you give, someone will write an eslang that sits on that border. [33:07.580 --> 33:15.740] So I mentioned earlier that white space influenced my language folders, and both play on sort of hidden meanings and erasure of code, and a kind of dematerializing. [33:16.340 --> 33:19.640] But one language that goes even further than that is the language unnecessary. [33:20.820 --> 33:26.100] So the language unnecessary, you run it by giving it a file path to your program. [33:26.100 --> 33:31.520] And if it finds your program, then it rejects the program as being insufficiently unnecessary. [33:32.320 --> 33:35.700] The only program it'll run is the one that it can't find. [33:35.980 --> 33:43.960] And if it can't find it, if you give it a path that doesn't exist, then it runs the program and the program prints its own source code to the screen. [33:44.260 --> 33:46.660] But since there is no source code, it prints nothing. [33:47.300 --> 33:49.180] And that's known as the nullcline. [33:49.400 --> 33:54.020] So it's a very simple idea, but I find it very powerful. [33:55.340 --> 34:01.240] Going even further than that, though, we have the accidental languages, the languages that nobody designed at all. [34:01.540 --> 34:11.040] So to the left here, we have JSFuck, which is a subset of JavaScript using six punctuation marks that fully translate to JavaScript. [34:11.400 --> 34:14.280] And these are part of the JavaScript language. [34:14.280 --> 34:23.300] And the way that it works is if you give it an empty array, and then you put an exclamation point in front of it, it'll translate it into a truth value. [34:23.480 --> 34:25.380] And you can add that to other truth values. [34:25.580 --> 34:27.340] And then those can be converted to integers. [34:28.180 --> 34:30.240] And then you can get strings. [34:31.060 --> 34:34.860] And you can take the first element of a string, gives you a letter, and you can add to that. [34:35.040 --> 34:38.200] And basically, you can recreate everything that you want in JavaScript from just these symbols. [34:50.060 --> 35:07.240] And then you can add, let's get it back to you. [35:07.360 --> 35:15.100] And this is a It was used for a little while to bypass JavaScript filters for adware and malware until people started to check for it. [35:16.340 --> 35:21.080] In the middle is part of code in Minesweeper. [35:21.640 --> 35:24.980] Apparently, an infinite version of Minesweeper is turned complete. [35:25.600 --> 35:28.840] This is how you represent a wire in Minesweeper. [35:28.980 --> 35:35.080] Basically, either X or X prime is true, meaning it has a mine, and that'll carry through the whole thing. [35:35.080 --> 35:38.320] And this is how you carry information from one place to another in Minesweeper. [35:38.980 --> 35:49.880] And then to the right is the MOV, it's MOVfuscator, which is built on the discovery that the MOV commands for Intel is itself turned complete. [35:51.360 --> 35:55.420] So basically, once a system is recognized as computable, someone will find a way to code in it. [35:57.220 --> 36:02.380] So just to kind of sum up here, these are various... [36:02.380 --> 36:02.560] Oh, yeah. [36:02.780 --> 36:04.880] So I wanted to point out, I kind of forgot to mention this. [36:05.040 --> 36:21.580] So when we were looking at the non-English slangs, that idea of looking at the text of code and understanding how it runs, and having this big gap between how it reads and how it executes, that all goes away with those languages, right? [36:21.580 --> 36:22.800] As long as we can speak them. [36:22.980 --> 36:27.820] If we speak Arabic, it should be very straightforward to understand what the opcode does. [36:28.080 --> 36:32.360] So that pushes against one of the common things, that idea of humbleness. [36:33.780 --> 36:44.720] So that first category, that first kind of theme in slangs of humbleness is something that we sort of assume that most slangs break, but not always like with the non-English slangs. [36:44.720 --> 36:52.060] The idea of elegance is this thing that some slangs encourage and some don't. [36:52.900 --> 37:01.720] The idea of multi-coding languages and the fact that it is a community-based form with many interpretations of the same text and multi-coding. [37:02.360 --> 37:05.900] And then these ideas of dematerializing code and of ethnocomputing. [37:08.080 --> 37:09.780] So that's pretty much what I have. [37:09.960 --> 37:14.040] I'm just going to very briefly mention that I do have a book of slangs coming out next month. [37:14.420 --> 37:16.740] I have a bunch of postcards up here, if you want one. [37:17.500 --> 37:20.940] And then this is how you can reach me. [37:22.440 --> 37:23.360] StarCodes is my blog. [37:23.540 --> 37:29.100] It's been sort of... I'm not updating it very frequently at this point, but I'll be getting back to it once the book stuff is over. [37:30.840 --> 37:33.440] And this is my website in various ways to find me. [37:34.340 --> 37:35.160] So that's it. [37:35.260 --> 37:35.920] Thank you very much. [37:43.020 --> 37:44.740] So we have a few minutes for questions. [37:46.440 --> 37:48.260] Is that book covering Pete? [37:49.340 --> 37:49.820] No. [37:51.980 --> 37:52.460] This... [37:52.460 --> 37:53.060] My? [37:53.360 --> 37:54.020] Yeah, no, no. [37:54.140 --> 37:56.040] That's in one of my languages. [37:57.460 --> 38:00.480] It's a language called Light Pattern that's written in photographs. [38:02.080 --> 38:06.900] So it's a series of photos and it's the change in color and exposure from one photograph to the next. [38:07.100 --> 38:09.100] It gets translated into a ternary number. [38:09.320 --> 38:10.860] And those are the little numbers at the bottom. [38:11.120 --> 38:13.600] Those three digit ternary numbers. [38:16.320 --> 38:23.280] And it's a picture of a cloud because there's another language in the book that's really just about watching clouds pass and then constructing a language around them. [38:23.840 --> 38:24.320] Fabulous. [38:27.680 --> 38:28.220] Yeah. [38:28.480 --> 38:31.680] You kind of hinted on the democratization of code. [38:31.960 --> 38:37.640] So what's your take on it as writing code is so much more accessible right now? [38:37.820 --> 38:42.140] So what's your general sentiment as someone who's spending a waste during your decisions? [38:42.600 --> 38:43.140] Yeah. [38:43.340 --> 38:50.980] Well, so I mean, I think that there's always somewhat of a gap between human understanding and logic. [38:51.900 --> 38:59.040] I think that human beings are irrational and that programmers produce more bugs than anything else. [38:59.220 --> 39:01.340] And I don't think that that's going to change. [39:02.680 --> 39:05.480] I don't think it's a problem that can completely be overcome. [39:05.940 --> 39:12.320] But I'm definitely in favor of anything that encourages people to code more and that makes it easier for them to get started. [39:12.320 --> 39:16.800] I think it's great that we have AI tools that make it easier for people to start coding. [39:17.280 --> 39:24.000] But one of the great things about esolangs is that they don't have to be that hard to create. [39:25.040 --> 39:29.260] There are more esolangs made by high school kids than by anybody else. [39:29.940 --> 39:35.260] So one of the things that people complain about a lot in esolangs is like, why are there so many brainfuck derivative languages? [39:36.440 --> 39:38.080] Like, why are there so many versions of brainfuck? [39:38.200 --> 39:40.760] I mean, if you go to the esolangs Wiki, it's just like full of them. [39:41.160 --> 39:47.400] And the reason is because a lot of young people realize that it's not that hard to take brainfuck and add a few things to it. [39:47.520 --> 39:48.840] And it's like, wow, I've made a language. [39:48.980 --> 39:49.620] This is really cool. [39:49.620 --> 39:57.220] And I like esolangs as sort of a reminder that we can be in control of how code reads and how it functions. [39:57.220 --> 40:01.540] And we don't have to be totally reliant on these tools to do things for us. [40:02.000 --> 40:10.540] So I think of it as a kind of resistance to AI, even if there are some positives of AI with getting people started and coding. [40:13.100 --> 40:21.680] Because I think it's very likely that in a few years, programming languages are going to more and more assume that people are using AI tools and become... [40:21.680 --> 40:23.560] It's going to become very hard not to use them. [40:24.120 --> 40:27.320] That seems to be what's being pushed on us. [40:27.500 --> 40:29.780] And I think it's good for us to push back a little bit. [40:32.300 --> 40:33.080] Other questions? [40:33.960 --> 40:34.660] Yeah, go ahead. [40:34.800 --> 40:37.000] What was the bug that caused an announcement? [40:38.600 --> 40:39.400] Oh, yeah. [40:39.840 --> 40:42.320] So there's a whole bunch of different... [40:42.320 --> 40:52.500] So the location of where you are in code and what the current value of it is that combines and it translates into a number. [40:52.920 --> 40:56.940] And there's a whole bunch of numbers where it's not clear what's supposed to happen. [40:57.220 --> 41:01.600] So either it stops the program or it just ignores and it moves on. [41:01.760 --> 41:04.640] So that was the difference between the two different versions. [41:06.840 --> 41:07.440] Yes. [41:08.020 --> 41:08.620] Perl. [41:10.880 --> 41:14.160] Where does Perl sit on the Esolang spectrum? [41:14.960 --> 41:15.040] Yeah. [41:15.320 --> 41:17.700] So many people do consider Perl an Esolang. [41:19.240 --> 41:22.320] Not just the RegEx stuff, but just general. [41:23.400 --> 41:24.400] Sorry, what was that? [41:24.520 --> 41:25.820] It's not an Esolang. [41:25.920 --> 41:26.540] It's not an Esolang. [41:26.540 --> 41:28.680] It was used hard... [41:28.680 --> 41:31.200] Many, many people still use it. [41:31.320 --> 41:31.640] Sure. [41:31.920 --> 41:32.300] Of course. [41:33.080 --> 41:33.900] It's just... [41:33.900 --> 41:36.160] That's like calling Lisp an Esolang. [41:37.460 --> 41:38.500] But everything... [41:39.200 --> 41:41.760] Everything could be an Esolang if you misuse it enough. [41:42.760 --> 41:44.060] I guess that would be my answer. [41:44.060 --> 41:46.820] I have a deep respect for Perl as code poetry. [41:47.060 --> 41:47.520] Yes. [41:47.560 --> 41:50.660] My introduction to code poetry was Perl. [41:50.880 --> 41:53.020] And I have a deep respect for it as poetry. [41:53.240 --> 41:55.680] Less so to ruin my own systems, but... [41:56.380 --> 41:57.720] Yeah, there's a code poem. [41:57.800 --> 41:59.060] It's called Black Pearl or something. [41:59.360 --> 42:00.280] That was the... [42:00.280 --> 42:01.620] Like an early code poem. [42:02.800 --> 42:04.860] Yeah, Perl gives a lot of freedom. [42:04.860 --> 42:08.700] So there was a paper a few years ago that was... [42:08.700 --> 42:17.240] If you throw random paints on the wall and run it through OCR, a photo of it as OCR, will that translate into a working Perl program? [42:18.200 --> 42:23.300] And it turns out that like basically any string, as long as it's a single word, it will run as Perl. [42:23.780 --> 42:28.900] So like, you know, the paper was like 98% of random paint splatters are valid Perl. [42:29.900 --> 42:31.260] So it's... [42:31.260 --> 42:37.360] So to argue that that's not as it's hard, you know, it might be a tough call. [42:39.140 --> 42:40.360] Any other questions? [42:40.540 --> 42:41.000] Go ahead. [42:41.400 --> 42:53.300] Are there many SLAGs that have inspiration from array programming languages like APL, or variants using that kind of like lifts a lot more? [42:54.560 --> 42:57.280] That use like the far reaches of Unicode? [42:57.740 --> 42:57.780] Yeah. [42:57.780 --> 42:58.500] Yeah. [42:59.240 --> 43:00.520] I mean, I do that a lot. [43:02.880 --> 43:11.460] I mean, the one that I was showing at the beginning with the box drawing characters, you know, I do have a Cuneiform language in my book. [43:12.700 --> 43:13.940] People are playing with it more. [43:14.280 --> 43:16.700] I don't see a lot that do that. [43:17.500 --> 43:18.360] But there are some. [43:19.740 --> 43:22.200] Are there any emoji based languages? [43:22.300 --> 43:22.480] Yes. [43:22.960 --> 43:23.080] Okay. [43:23.180 --> 43:26.040] So people keep making emoji SLAGs over and over again. [43:26.040 --> 43:27.900] Everyone seems to think they're the first one to do it. [43:28.140 --> 43:35.220] You know, like there was sort of a wave for a while of, you know, there's at least a dozen emoji SLAGs at this point. [43:37.400 --> 43:39.680] So yeah, there's no reason to make a new one. [43:39.860 --> 43:42.880] But there could be a cool project bringing all those together in some way. [43:43.680 --> 43:46.820] Like maybe a polyglot program that'll run in all the emoji languages. [43:47.680 --> 43:48.900] That could be a cool project. [43:52.340 --> 43:52.900] Yeah. [43:53.120 --> 43:53.460] Yeah. [43:53.460 --> 43:57.520] What are the different ways that you learned about the SLAGs in the book? [43:58.540 --> 43:59.100] Okay. [43:59.200 --> 44:00.800] How did I learn about SLAGs? [44:01.100 --> 44:06.900] Well, so, you know, I really started the blog to learn about SLAGs. [44:07.780 --> 44:10.120] You know, so there's SLAGs at work. [44:10.280 --> 44:12.080] There's SLAGs Wiki that has like everything. [44:12.900 --> 44:15.040] You know, it has hundreds of these brain fuck derivative languages. [44:15.680 --> 44:23.740] It has a lot of really great SLAGs, but it can be a little bit hard to find, you know, find your way through it and find things that are interesting. [44:25.260 --> 44:28.160] So at the beginning, I sort of spent a lot of time in that Wiki. [44:28.560 --> 44:31.060] And then I found people who are doing things that I found interesting. [44:31.400 --> 44:38.580] And then I started interviewing them for my blog to sort of get a sense of the history, get a sense of what people, how people thought about their own languages. [44:40.500 --> 44:48.400] And so, so my blog SLA codes, you know, I, I tried to get people to avoid technical language as much as possible. [44:49.020 --> 44:55.420] Although it is difficult with some people where it's sort of like, okay, well, I made a three strip Minsky machine. [44:56.120 --> 45:00.300] But like, there are a couple of mathematicians who were just like, it was just very hard to get them out of that. [45:01.180 --> 45:03.240] But then it's sort of like talking to them more. [45:03.400 --> 45:12.940] It's like, oh, their language is about removing things from an existing program and then reshaping it into the program that they want or something like that. [45:13.140 --> 45:18.220] And so like getting away from the technical language, I was able to get a better sense of what they were about. [45:19.640 --> 45:22.080] So anyway, yeah, basically you can find some stuff in my blog. [45:22.080 --> 45:23.660] You can find a lot of stuff on the Wiki. [45:28.320 --> 45:32.520] And basically when I started interviewing people, one person would lead me to the next and so on. [45:33.620 --> 45:49.540] But I really tried also with the blog, not to just talk to SLAngers, but talk to people who were doing other kinds of computational art that felt similar, but wasn't in conversation with it, which was helpful because I think a lot of the SLAng stuff that wasn't being taken seriously as art at the [45:49.540 --> 45:49.820] time. [45:50.260 --> 45:56.080] We could see how it was doing some very similar things to other things that do function in the art world. [45:56.260 --> 46:02.040] And hopefully it brought sort of more acknowledgement of that to those designers. [46:03.240 --> 46:03.960] Yes? [46:04.300 --> 46:04.720] Yeah. [46:04.920 --> 46:13.620] I'm curious about how other non-commodational aesthetic scholars or art critics or literary critics apprehend this work. [46:13.800 --> 46:18.540] Do you find that they can readily comprehend the beauty in it? [46:18.700 --> 46:24.220] Or is it, like you said, it underscores the alieness of the machine. [46:24.220 --> 46:26.080] Is it just like too alien for them? [46:28.140 --> 46:28.540] Yeah. [46:28.720 --> 46:31.540] Some of the stuff really feels like conceptual art. [46:31.740 --> 46:34.580] And if you just reframe it a little bit, it really appears that way. [46:34.660 --> 46:40.440] But you really have to do it with respect to what the actual SLAnger was thinking about and what was important to them. [46:42.600 --> 46:47.120] And that's really why I put this talk together and just be like, okay, here's sort of the framework. [46:49.460 --> 46:55.540] It's an aesthetic form, but it's reacting to aesthetics of code, not aesthetics as it's thought of in the art world. [46:55.720 --> 46:59.600] Because most of the people who are making these languages are not really, they don't really care that much about the art world. [46:59.760 --> 47:00.900] That's not what they're reacting to. [47:02.360 --> 47:07.640] So I'm trying to sort of move the vocabulary towards something that's actually more about how SLAngers think about the work. [47:08.020 --> 47:14.300] But it's, yeah, there's a lot of opportunity to sort of present it in those terms. [47:14.620 --> 47:21.100] But what's sort of interesting about SLAngs is that, because I, you know, I'm an artist who makes SLAngs. [47:21.660 --> 47:26.000] But the thing about SLAngs is that they're not, they're not really sellable. [47:26.120 --> 47:27.740] They don't really function in the art market. [47:28.400 --> 47:32.360] And so that's going to sideline them immediately in a lot of ways. [47:34.520 --> 47:39.420] But what's really exciting about it for me is that collaborative aspects. [47:39.960 --> 47:44.380] It's putting something out in the world and having someone come back and do something really interesting with my language. [47:44.580 --> 47:46.440] It's really like totally unexpected. [47:46.440 --> 47:47.660] Like that's really fun. [47:47.780 --> 47:52.540] And it just reminds me of what early net art was like before everything got monetized. [47:52.680 --> 47:55.580] And people start making money and it's really not that much fun anymore. [47:56.520 --> 47:58.680] SLAngs don't make any money and probably never will. [47:58.880 --> 48:00.900] So it's always like just really fun. [48:02.520 --> 48:03.620] So I think that's it. [48:03.700 --> 48:06.160] I don't think I have time for any more, but thanks everyone. [48:06.900 --> 48:07.540] Thank you. [48:07.540 --> 48:07.600] Thank you. [48:07.620 --> 48:08.660] Thank you.