WEBVTT

00:00.000 --> 00:06.000
Thank you.

00:06.000 --> 00:10.000
So this is going to be a very different talk in the last few in this room.

00:10.000 --> 00:16.000
Definitely don't take my advice on anything about regulations or anything legal.

00:16.000 --> 00:20.000
This is going to be about Essolangs as a hacker folk art.

00:20.000 --> 00:23.000
So I approach this as an artist.

00:23.000 --> 00:28.000
I have work which is more strictly visual art.

00:28.000 --> 00:30.000
Oh, good.

00:30.000 --> 00:32.000
Okay, it's still showing.

00:32.000 --> 00:33.000
Good, good.

00:33.000 --> 00:36.000
So for instance, oh, there we go.

00:36.000 --> 00:46.000
For instance, this dither generator where you can create dithering patterns with different types of different shape pixels like triangles and hexagons.

00:46.000 --> 00:49.000
And this is work that I also paint.

00:49.000 --> 00:55.000
And then I have work like my straightened trees where I compulsively straighten trees in a way.

00:56.000 --> 01:00.000
So it seems like I keep losing the video.

01:00.000 --> 01:04.000
So you just have to imagine, oh, there it is again.

01:04.000 --> 01:06.000
Some trees that are very straight.

01:06.000 --> 01:09.000
And as you can see, it warps everything around it.

01:09.000 --> 01:15.000
Both in the suburbs and the city taking on the opposite shape that the tree had.

01:15.000 --> 01:18.000
And then I also make work as Essolangs.

01:18.000 --> 01:23.000
For instance, this programming language where code is written as a labrant of folders and side of folders.

01:24.000 --> 01:26.000
Where files are ignored.

01:26.000 --> 01:32.000
And the names of folders are not considered apart from the alphabetical order in which they are read.

01:32.000 --> 01:39.000
This is part of the hello world program.

01:39.000 --> 01:43.000
So one of the nice things about folders is that in Windows.

01:43.000 --> 01:47.000
Windows will tell you that folders take up no space on disk.

01:47.000 --> 01:56.000
If you could see the screen, you would see a properties window that says that there are 352,449 folders.

01:56.000 --> 01:58.000
And that they take up zero bytes on disk.

01:58.000 --> 02:05.000
And of course, Windows is long to you, but this way you can pretend that you're storing all of your data and all of your programs as folders.

02:05.000 --> 02:09.000
And that you have infinite file storage.

02:09.000 --> 02:14.000
So for me, all this work is very connected.

02:14.000 --> 02:21.000
The trees, the folders, all of it comes from the same place, from a way of exploring human rationality.

02:21.000 --> 02:24.000
How we look at language and logic.

02:24.000 --> 02:32.000
But for this last piece for folders, I'm not just building on work by artists that are sort of better known in the art community.

02:32.000 --> 02:36.000
People like Yoko Ono who did instruction based work.

02:36.000 --> 02:41.000
But of course, I'm also building on a whole history of Essolang programming languages.

02:41.000 --> 02:49.000
In particular, when I made folders, I was thinking about the white space programming language, where we write code in tab space and return.

02:49.000 --> 02:55.000
And I started with the idea of what is more empty than an empty appearing file.

02:55.000 --> 03:00.000
And that would be a folder with nothing, it except for other empty folders.

03:00.000 --> 03:05.000
And so I wanted to sort of explore the history of Essolang programming languages.

03:05.000 --> 03:08.000
And I started a blog called Essolang Dark.co.

03:08.000 --> 03:10.000
It looks really nice.

03:10.000 --> 03:14.000
You'll just have to sort of imagine it because the video is cutting out.

03:14.000 --> 03:17.000
But you can, there it is again, as Dark.co.

03:17.000 --> 03:19.000
All right.

03:19.000 --> 03:25.000
And so I began interviewing other people who make these languages back in 2011,

03:25.000 --> 03:28.000
which eventually became this blog in 2014.

03:28.000 --> 03:35.000
And I'm going to share a little bit of what I found about a few different genres of Essolang's.

03:35.000 --> 03:41.000
And how we can think about them as its own sort of aesthetic history from outside the art world.

03:41.000 --> 03:46.000
And then I'm going to show you a little bit more of my work if I leave myself enough time.

03:46.000 --> 03:50.000
So we really need to begin with the turning tar pits.

03:50.000 --> 03:53.000
Are people familiar with that term turning tar pit?

03:53.000 --> 03:56.000
Is that something not familiar to anybody?

03:56.000 --> 03:57.000
Not so many.

03:57.000 --> 03:58.000
Okay.

03:58.000 --> 04:03.000
Well, the name comes from that book, the Mythical Man Month, Frederick Brooks.

04:03.000 --> 04:07.000
You know, he wrote this book that was very popular for a while.

04:07.000 --> 04:15.000
And on the cover it had these, this picture of these creatures that eventually got trapped in the library.

04:15.000 --> 04:18.000
Tar pits kind of struggling their way through.

04:18.000 --> 04:25.000
And this was a term that started to become applied to some of the very early Essolang languages.

04:26.000 --> 04:31.000
The first language that we can sort of properly call a turning tar pit was called false.

04:31.000 --> 04:35.000
And with apologies to the Dutch speakers.

04:35.000 --> 04:38.000
This was created by.

04:38.000 --> 04:41.000
The Vuter von Orton-Merson.

04:41.000 --> 04:50.000
Orton-Merson created this language as sort of a challenge to himself to create a fully functional programming language,

04:50.000 --> 04:54.000
a fully featured programming language with a compiler of just one K.

04:55.000 --> 04:57.000
For the Amiga.

04:57.000 --> 05:00.000
And this is a language which.

05:00.000 --> 05:03.000
It really looks like a right only language.

05:03.000 --> 05:06.000
It has this very sort of dense vocabulary.

05:06.000 --> 05:09.000
Almost everything is written with a single character.

05:09.000 --> 05:11.000
It's a stock based language.

05:11.000 --> 05:12.000
You can.

05:12.000 --> 05:18.000
Which is sort of something that he chose because it's a way of keeping the language very small.

05:18.000 --> 05:22.000
And one of the side effects was to make the compiler small.

05:22.000 --> 05:26.000
It's impossible the commands are all one character long.

05:26.000 --> 05:28.000
And this inspired a few other languages.

05:28.000 --> 05:31.000
One of them is be funged by Chris Pressie.

05:31.000 --> 05:36.000
Chris noticed that once you have characters that are one character.

05:36.000 --> 05:38.000
Command that are one character.

05:38.000 --> 05:40.000
You don't need to read them left to right.

05:40.000 --> 05:43.000
You can have lines of code that start moving towards the right.

05:43.000 --> 05:45.000
And then they turn up and they turn last and they turn down.

05:45.000 --> 05:47.000
And they can flow in every direction.

05:47.000 --> 05:51.000
And part of designing this was him thinking about designing a language.

05:51.000 --> 05:55.000
So it would be the most difficult language to write a compiler for.

05:55.000 --> 05:59.000
This also was for the Amiga and also 1993.

05:59.000 --> 06:03.000
And then the other language that was inspired by false was BrainFuck.

06:03.000 --> 06:05.000
Which.

06:05.000 --> 06:07.000
Basically.

06:07.000 --> 06:10.000
Urban Mueller said, OK, you've created a compiler that's one K.

06:10.000 --> 06:13.000
I'm going to make one that's under 256 bytes.

06:13.000 --> 06:18.000
And he did that by stripping down the code to the language.

06:18.000 --> 06:20.000
The language to basically attorney machine.

06:20.000 --> 06:22.000
And only has eight commands.

06:22.000 --> 06:29.000
And what's interesting about BrainFuck is that all the commands individually are easy to understand and easy to read.

06:29.000 --> 06:36.000
The whole cognitive gap between the text of code and his performance comes because of the complexity that builds up.

06:36.000 --> 06:41.000
As you sort of write any sort of complex algorithm in BrainFuck.

06:41.000 --> 06:47.000
And one way to sort of understand false BrainFuck and B.FUNs is by looking back.

06:47.000 --> 06:50.000
To the 1950s.

06:50.000 --> 06:53.000
We had a language called Flowmatic.

06:53.000 --> 06:55.000
That was created in the late 50s.

06:55.000 --> 06:57.000
And it was the first.

06:57.000 --> 07:01.000
I believe it was the very first language that brought natural language into code.

07:01.000 --> 07:04.000
It was created by Admiral Grace Hopper.

07:04.000 --> 07:06.000
It looks like the code to the left.

07:06.000 --> 07:10.000
It's what inspired Cobal and a bunch of other languages.

07:10.000 --> 07:14.000
And what happened when this language was created.

07:14.000 --> 07:20.000
Admiral Hopper wanted to create a language that would democratize code somewhat.

07:20.000 --> 07:28.000
To make it sort of take it out of the hands of what John Beck is a foretran called the high priesthood of programmers.

07:28.000 --> 07:32.000
The people who felt like they alone were sort of entitled to write code.

07:32.000 --> 07:36.000
And they alone had the understanding of what was necessary.

07:36.000 --> 07:43.000
It's our first sort of step towards democratizing code to make code available to more people.

07:43.000 --> 07:47.000
To make the active programming available to more people.

07:47.000 --> 07:54.000
But what happens with every time we try to democratize code is it also involves somewhat of deskilling.

07:54.000 --> 07:56.000
It makes programming easier.

07:56.000 --> 07:58.000
And there's always some push back to that.

07:58.000 --> 08:05.000
And as back as described, some of the early programmers were not happy that all of a sudden this was sort of being taken away from them.

08:05.000 --> 08:13.000
And there was a sense that this automatic was designed with the idea of turning managers into coders.

08:13.000 --> 08:17.000
That we wouldn't really need dedicated programmers as much.

08:17.000 --> 08:19.000
And we thought this happened over and over again since then.

08:19.000 --> 08:22.000
I think it was the original idea behind visual basic.

08:22.000 --> 08:25.000
And of course we're seeing it now with AI assisted coding.

08:25.000 --> 08:30.000
That all these things are supposed to make it so business folks can write code with less help from programmers.

08:30.000 --> 08:35.000
And that somehow it's going to solve the sort of underlying difficulty of writing code.

08:35.000 --> 08:37.000
And of course it never really works.

08:37.000 --> 08:41.000
But what happens instead is it creates a new kind of expertise.

08:41.000 --> 08:43.000
The people who are experts in the new system.

08:43.000 --> 08:48.000
And it's somewhat sidelines the expertise of the old system but that never really goes away.

08:48.000 --> 08:54.000
And we see evidence of this in the essay the humble programmer by Dykestra.

08:54.000 --> 08:57.000
Now this was written a bit later in the early 70s.

08:57.000 --> 09:03.000
Based on thoughts that he had going back to the late 50s.

09:03.000 --> 09:12.000
What Dykestra was concerned about is that there were programmers who still sort of wrote code in the old style.

09:12.000 --> 09:17.000
And he thought it was very essential at this moment to professionalize programming.

09:17.000 --> 09:26.000
He says, what opinion that he would run into a lot is that a really competent programmer should be puddleminded and very fond of clever tricks.

09:26.000 --> 09:32.000
The other one was that programming was nothing more than optimizing the efficiency of the computational process.

09:32.000 --> 09:36.000
And what he wanted was to get away from that type of thinking.

09:36.000 --> 09:40.000
Now that computer cycles were cheaper we don't need to shave off a few of them.

09:40.000 --> 09:44.000
We don't have to write more and more efficient code.

09:44.000 --> 09:48.000
Instead we have to write code in neutral voice that other people can understand.

09:48.000 --> 09:54.000
So that we can become widget makers that can fit with other people's widgets.

09:54.000 --> 09:56.000
Everything should be written in neutral tone of voice.

09:56.000 --> 10:02.000
We should not be trying to show off and everything should be sort of readable to other people.

10:02.000 --> 10:06.000
Is it kind of corporatizing of coding.

10:06.000 --> 10:10.000
One of the things he in particular did not like is the idea of the one liner.

10:10.000 --> 10:14.000
The idea that a programmer places a one line program on the desk of another.

10:14.000 --> 10:20.000
I'm proudly tells what it does and ask the question, can you code this in fewer symbols.

10:20.000 --> 10:26.000
And you know the whole essay just sort of he sort of makes the same points over and over again.

10:26.000 --> 10:32.000
And it's kind of typical dixtra where he's he's kind of bitchy and.

10:32.000 --> 10:40.000
So by going back to the touring tar pits, these are languages that invite the exact kind of thinking that dixtra wanted us to get to get past.

10:40.000 --> 10:52.000
So the idea of writing something in a neutral in a neutral voice or writing something with clarity as sort of the.

10:52.000 --> 10:57.000
The ultimate aim because it's very difficult to write clear code and brain fuck.

10:57.000 --> 11:03.000
So what I have here is five different ways to write the number 35 in brain fuck.

11:03.000 --> 11:06.000
The only one I can read at the top one.

11:06.000 --> 11:14.000
It is adding five to one memory cell moving to the right, adding seven moving to the left, subtracting one moving to the right,

11:14.000 --> 11:16.000
subtract adding seven again.

11:16.000 --> 11:19.000
It's basically this is how multiplication is done in brain fuck.

11:19.000 --> 11:22.000
The others are all more complex.

11:22.000 --> 11:28.000
They use wrapping, which means they go past 255 because in brain fuck a memory cell.

11:28.000 --> 11:44.000
The other example is that we have here do the same thing in fewer characters.

11:44.000 --> 11:56.000
So the first original example is 18 characters long, but the last one is only 14 and it does that by taking advantage of 12 different memory cells and moving back across them in different ways.

11:56.000 --> 11:59.000
You can see what it looks like now at the bottom.

11:59.000 --> 12:08.000
So Chris Pressie, the creator of BFUNGE, has described brain fuck as the 12 bar blues of SLX because there's so many variations of it.

12:08.000 --> 12:12.000
There's so many people who sort of made their own version.

12:12.000 --> 12:15.000
One of them that I like in particular is called body fuck.

12:15.000 --> 12:25.000
It is really sort of an early interface for brain fuck where you have to sort of physically carry out the labor of programming.

12:25.000 --> 12:29.000
And this was done before the connect.

12:29.000 --> 12:33.000
So this is all using a webcam.

12:33.000 --> 12:35.000
It's made by Nick Hunselman.

12:35.000 --> 12:45.000
If you want to move to the left and memory, which is what he was doing just there, he has to sort of stand there for a while until it picks up that left motion has happened.

12:45.000 --> 12:48.000
The next example is called TT type.

12:48.000 --> 12:54.000
It is sort of a hypercapitalist version of brain fuck where each of the symbols has a different value in the market.

12:54.000 --> 12:56.000
And they are constantly changing.

12:56.000 --> 12:59.000
It's made by the Canadian developer Edith Vow.

12:59.000 --> 13:03.000
And so you can start a program using a lot of plus signs because they're cheaper.

13:03.000 --> 13:10.000
And then they can sort of go up and value and you have to sort of move towards obstructing it differently.

13:10.000 --> 13:15.000
One of my favorite examples is the language Leninquidge.

13:15.000 --> 13:18.000
Leninquidge asks, do we really need binary?

13:18.000 --> 13:24.000
Can't be code in Unery using one symbol.

13:24.000 --> 13:30.000
And this is the beginning of a hello world program.

13:30.000 --> 13:39.000
So the thing about Leninquidge is, of course, the number of ones is itself a number and that can be broken down into a brain fuck program.

13:39.000 --> 13:45.000
If you wanted to write hello world to the screen and you want to represent each one with a single atom,

13:45.000 --> 13:50.000
but it would take more matters than exists in the universe to complete.

13:50.000 --> 13:54.000
So those are some of the brain fuck variations.

13:54.000 --> 14:00.000
I'm going to move now to one of the other sort of best known SLangs, the language peat.

14:00.000 --> 14:06.000
Our people familiar with peat is something that people have seen before a few people.

14:06.000 --> 14:13.000
So peat is a language which is,

14:14.000 --> 14:19.000
it's represented by an image and it's the change in color from what are called codals,

14:19.000 --> 14:30.000
which are basically just like it's sort of similar to a pixel that is represented as a box that is four or nine pixels or larger that you can draw the image bigger.

14:30.000 --> 14:34.000
And it's sort of building on the idea of be fun.

14:34.000 --> 14:39.000
You can write code that moves left to right and then turns up and then down and so on,

14:39.000 --> 14:45.000
except now with peats we're doing the same thing but without characters we're doing it with the change of color.

14:45.000 --> 14:54.000
So it goes through the red block it gets to the pink block and some of these colors are showing it to turn a different direction.

14:54.000 --> 14:58.000
And you can see the left is a very early peat program.

14:58.000 --> 15:04.000
The one to the right is actually a peat program, a peat interpreter written in peat.

15:04.000 --> 15:08.000
This is what a computer generated one looks like.

15:08.000 --> 15:16.000
And what's happened with peat over time is that individual programmers have sort of developed their own style in it.

15:16.000 --> 15:23.000
Thomas Scotch created this program which prints peat to the screen.

15:23.000 --> 15:28.000
It was used as a cover for the speaking code book.

15:28.000 --> 15:32.000
And this is an example of a language that we call a multi-coding oscilling.

15:32.000 --> 15:35.000
In that there's two different ways to read the code.

15:35.000 --> 15:43.000
You can read it as what it will perform and it can read it as the image that it produces as code.

15:43.000 --> 15:46.000
And these two different readings impact each other.

15:46.000 --> 15:54.000
Basically the programmer is trying to create something or work and peat but usually they want to express something visually as well.

15:54.000 --> 16:01.000
And this relates to other literary and artistic traditions.

16:01.000 --> 16:12.000
Sort of the best known is probably Aleppo which is a group of mathematicians and writers based in Paris in the 50s and 60s who did constraint based writing.

16:12.000 --> 16:15.000
They called themselves the rats who designed their own mazes.

16:15.000 --> 16:20.000
They would create a constraint system and then create literary works within that system.

16:20.000 --> 16:28.000
Probably the most famous example of this is the book by George Perek which in English is called Avoid.

16:28.000 --> 16:32.000
And it is a book written by somebody who has four easiness name.

16:32.000 --> 16:35.000
He's written an entire novel without using the letter E.

16:35.000 --> 16:37.000
This is the first page.

16:37.000 --> 16:46.000
And you can see he's honored in Paris with a pause George Perek which is written like that.

16:46.000 --> 16:55.000
So you start to over time you start to have more peat programs that were influenced by the earlier pieces.

16:55.000 --> 17:00.000
And then you had pieces that really took their own direction entirely.

17:00.000 --> 17:03.000
This is a pie program by Richard Mitten.

17:03.000 --> 17:07.000
And it calculates pie based on the size of this circle.

17:07.000 --> 17:11.000
So the circle of the image actually represents a circle and code.

17:11.000 --> 17:18.000
And the larger that you draw this program the more accurate it'll calculate pie.

17:18.000 --> 17:22.000
Then you have people who write peat programs and hide them in other images.

17:22.000 --> 17:26.000
So this was like an advent of code experiment.

17:26.000 --> 17:29.000
This is the basic peat program to the right.

17:29.000 --> 17:32.000
Here it is with the black characters that sort of box it in.

17:32.000 --> 17:36.000
And then so is designed to look more and more like a Christmas tree.

17:36.000 --> 17:44.000
And then it fills in with non-peat colors to the left to basically hide the code in the image.

17:44.000 --> 17:47.000
And then finally my favorite example.

17:47.000 --> 17:49.000
This is a peat ready made.

17:49.000 --> 17:50.000
Someone saw a painting.

17:50.000 --> 17:52.000
They thought it looked like a peat program.

17:52.000 --> 17:56.000
They decided to recreate it and code to see if it would work as peat.

17:56.000 --> 17:57.000
And it turns out it does.

17:57.000 --> 17:59.000
It copies input to output.

17:59.000 --> 18:02.000
So you can click characters and they'll print them out.

18:02.000 --> 18:05.000
It was totally unintentional by the painter.

18:05.000 --> 18:13.000
And somebody whose name actually happened to be peat saw this and thought that it had some potential.

18:13.000 --> 18:17.000
So there are many other types of multi-coding oscillangs.

18:17.000 --> 18:23.000
And some of them leave more room for expressiveness of the programmer than others.

18:23.000 --> 18:26.000
One of the really famous ones is called Shakespeare.

18:26.000 --> 18:29.000
It's not a great language.

18:29.000 --> 18:31.000
It was sort of funny when it first came out.

18:31.000 --> 18:37.000
But it's sort of lift on and oscilling listicles over the last 20 years and it keeps getting repeated.

18:37.000 --> 18:47.000
You basically write code where you have these long lines of compliments or insults that add one or subtract one.

18:47.000 --> 18:53.000
The reason I don't really love Shakespeare is that if you wrote a Shakespeare program and I wrote a Shakespeare program,

18:53.000 --> 18:56.000
they would read pretty much the same way.

18:56.000 --> 18:58.000
It's a very little room for expressiveness.

18:58.000 --> 19:02.000
I think the joke kind of runs cold after a short time.

19:02.000 --> 19:08.000
But the thing about Shakespeare is that it inspired a whole bunch of other programming languages that used haxt.

19:08.000 --> 19:16.000
There's ash paper that tries to use aspects of poetry that people actually use, like capitalization in the middle of the word,

19:16.000 --> 19:19.000
or how much things are invented and so on.

19:20.000 --> 19:25.000
An inverse which produces visuals based on poetry.

19:25.000 --> 19:30.000
But each program has its own word table.

19:30.000 --> 19:35.000
So the vocabulary is specific to each poem.

19:35.000 --> 19:39.000
So I'm going to talk about a third type of oscilling,

19:39.000 --> 19:44.000
which are oscilling that are more directly critical of technology.

19:44.000 --> 19:53.000
And the one that I'm going to pick on right now is the ones that deal with English,

19:53.000 --> 19:58.000
the sort of hegemony of English.

19:58.000 --> 20:04.000
So we didn't always have programming languages that were using so many English keywords.

20:04.000 --> 20:05.000
We have APL.

20:05.000 --> 20:12.000
They're also there were Soviet programming languages and languages in other countries that used keywords from other natural languages.

20:12.000 --> 20:16.000
But right now we're sort of dominated by English.

20:16.000 --> 20:20.000
And there are a number of programmers who sort of pushed back against that with creative projects.

20:20.000 --> 20:22.000
One of them is called ALB.

20:22.000 --> 20:24.000
This is created by Ramsey Nasser.

20:24.000 --> 20:27.000
It's an Arabic list.

20:27.000 --> 20:35.000
And this started out as not meaning to be an oscilling as much as a practical programming language.

20:35.000 --> 20:41.000
But what he found was that a lot of the underlying technology that was supposed to be in different

20:41.000 --> 20:45.000
to natural language didn't really work correctly with right to left languages.

20:45.000 --> 20:49.000
Even though they said that they were all unicode compliant and they all sort of worked.

20:49.000 --> 20:51.000
They should work with any language.

20:51.000 --> 20:55.000
But there were also some other sort of cultural things that were a little bit difficult.

20:55.000 --> 20:59.000
Because the programming language is not just the code that you write.

20:59.000 --> 21:01.000
It's everything that's output as well.

21:01.000 --> 21:07.000
And you have to consider what is the Arabic word for abstract proxy bean.

21:07.000 --> 21:13.000
But ALB sort of started a little movement.

21:13.000 --> 21:21.000
This is a language by Anuluwapay who was an Igerian programmer who works for mostly European companies.

21:21.000 --> 21:25.000
He has to speak English all day and after hours he's like,

21:25.000 --> 21:28.000
I want to be able to write code in Europe.

21:28.000 --> 21:32.000
So he created this language for himself and his friends.

21:32.000 --> 21:36.000
And all of it uses the Europe language and syntax.

21:36.000 --> 21:42.000
And then there are some that are more explicitly creative pieces.

21:42.000 --> 21:51.000
This is Wanyan Lang which is written in classical Chinese where you write code as poetry in the style of the various poets.

21:51.000 --> 22:02.000
This is a 99 bottles program which is in the style of Levi who is apparently famous for his drinking habit.

22:02.000 --> 22:10.000
And it's the person who translated this for me calls him the greatest poet in Chinese history.

22:10.000 --> 22:16.000
Apparently nine numbers and wine number, wine and wine or homophones in Chinese.

22:16.000 --> 22:22.000
There's a lot of sort of like textual play in it as well.

22:22.000 --> 22:29.000
So going back to this idea of the constraint-based thinking that comes in Asalang's.

22:30.000 --> 22:37.000
The Olympians, those mathematicians and writers ask questions like,

22:37.000 --> 22:43.000
How small, how tight can you make a set of constraints and still produce literature that's interesting.

22:43.000 --> 22:46.000
Can you for instance create a poem of a single letter?

22:46.000 --> 22:52.000
Is there something that is different in feeling from the letter from the poem A and the poem B?

22:52.000 --> 22:54.000
But eventually someone did do that.

22:54.000 --> 22:57.000
Aaron Saroyan who is a minimalist poet.

22:57.000 --> 23:02.000
Produced this poem and I'm with an extra arch.

23:02.000 --> 23:10.000
And so bringing this to Asalang's, we can think about how programming languages can sort of play with constraints.

23:10.000 --> 23:14.000
I created a programming language called past tense.

23:14.000 --> 23:23.000
And this is a language where there are valid programs in the language but they do not run.

23:23.000 --> 23:34.000
If a program runs in any language, it's not valid as past tense because past tense is only for programs we're never going to run again.

23:34.000 --> 23:39.000
I created a converter so you can turn your existing code into past tense.

23:39.000 --> 23:42.000
This is what it looks like for a C-sharp program.

23:42.000 --> 23:47.000
Name's based, hello, world, public class programs.

23:47.000 --> 23:52.000
Public static-voided means strong arcs.

23:52.000 --> 24:01.000
System-consult, wrote lines, hello, world.

24:01.000 --> 24:09.000
One of the great things about creating an Asalang or any kind of systems art is that other people will come to it and bring their own point of view.

24:09.000 --> 24:15.000
That's sort of exciting about languages like Pete, David Morgan-Mar, who created Pete.

24:15.000 --> 24:19.000
He didn't really know how far people would take the language.

24:19.000 --> 24:21.000
I created a language called fatfinger.

24:21.000 --> 24:28.000
It's a version of JavaScript where you can spell everything wrong and it still works.

24:28.000 --> 24:36.000
Basically how it functions, you include the fatfinger library and then you create any script tag with JavaScript misspelled.

24:36.000 --> 24:43.000
It says Java OScript and then you instead of varts, varts and document has a bunch of keys in it.

24:43.000 --> 24:49.000
It just looks for the closest thing that it understands to what you typed.

24:49.000 --> 24:54.000
The thing about putting this out in the world is people did not use it the way I was expecting.

24:54.000 --> 24:59.000
For me it was really about compulsiveness and code which is sort of more what I'm interested in.

24:59.000 --> 25:07.000
But there were some code poets who realized that you could intentionally use a different word in place of the expected word rather than the misspelling.

25:07.000 --> 25:19.000
So this is a piece by Jeremy Douglas where he uses the variable who and then uses it also as what and when and why.

25:19.000 --> 25:27.000
And he's able to use it interchangeably to create something that reads as English poetry but still functions as JavaScript.

25:27.000 --> 25:41.000
And he created sort of a map called fat doctals of various words that most of the time will function in fatfinger as their equivalents in JavaScript.

25:41.000 --> 25:44.000
I'm going to show my language.

25:45.000 --> 25:48.000
This is a recent programming language.

25:48.000 --> 25:54.000
I know we have some people in the audience from software heritage.

25:54.000 --> 25:59.000
So I want to share that this language was shown at this exhibition UNESCO.

25:59.000 --> 26:04.000
That's to be comparison which is a celebration of open source code.

26:05.000 --> 26:09.000
Related to programming language that we write with these flowing lines.

26:09.000 --> 26:13.000
It's actually written with box drawing characters.

26:13.000 --> 26:26.000
Which are holdovers from systems like the one that I learned to program on the commoner 64 where you can draw user interfaces like the one on the left with these different corners and lines.

26:26.000 --> 26:33.000
But in review, instead of creating boxes, we're creating these sort of flows called strands.

26:33.000 --> 26:36.000
And each strand does something different.

26:36.000 --> 26:38.000
It's a list based language.

26:38.000 --> 26:43.000
In this case, all of these lines have these hooks sort of in a line.

26:43.000 --> 26:45.000
So they're already into one list.

26:45.000 --> 26:53.000
And what they're producing are the integers that correspond to the string hello world.

26:53.000 --> 27:01.000
This is not my program but a piece by a programmer in London for review that.

27:01.000 --> 27:08.000
And a lot of the sort of fun of writing in this language is that you might create one version of a program.

27:08.000 --> 27:12.000
But then you'll find a denser way of saying the same thing that sort of looks better.

27:12.000 --> 27:20.000
And so there's a lot of writing code and then sort of reworking it more and more to get it to function to sort of look better on the screen.

27:21.000 --> 27:29.000
And one thing I was thinking about in designing this language is the way that maze is work and have similar that is to source code.

27:29.000 --> 27:36.000
When we see a maze, usually we're not in in the maze like we might be to one on the left where we can't see the whole of it.

27:36.000 --> 27:40.000
Usually we're looking at it from above where we can see all the different paths.

27:40.000 --> 27:44.000
But that doesn't mean that it's entirely obvious how to get through the maze.

27:44.000 --> 27:49.000
We still have to sort of run it in our heads to sort of find the way.

27:49.000 --> 27:51.000
And of course it's very similar with code.

27:51.000 --> 27:58.000
If we look at this kind of spaghetti code to the right, we have to sort of make sense of it by sort of running it running through it in our heads.

27:58.000 --> 28:01.000
Just looking at it is not sort of enough.

28:01.000 --> 28:09.000
When I put when this got to Hacker News, it created a lot of confusion.

28:10.000 --> 28:16.000
This is one comment by a programmer who says, it's just what it feels like to learn to program as an adult.

28:16.000 --> 28:24.000
I can brainfuck an APL with the best of them and this is the most alien language specification I've ever read.

28:24.000 --> 28:28.000
Part of it is that each type of strands moves in a different way.

28:28.000 --> 28:34.000
So some of them, so this is a complete Fibonacci program.

28:34.000 --> 28:38.000
Each sort of unit here, it's sort of like a paragraph of code.

28:38.000 --> 28:39.000
It's called a glyph.

28:39.000 --> 28:44.000
It starts with these markers to the left and the upper left and the bottom right.

28:44.000 --> 28:49.000
And it's the way that they move through the space that matters.

28:49.000 --> 28:54.000
But if they have a little space at the end, it means they're pointing to a memory cell.

28:54.000 --> 29:00.000
If they don't that it's the way that they move back and forth, you can see the line numbers restart for each glyph.

29:00.000 --> 29:04.000
And we always skip line number four.

29:04.000 --> 29:06.000
It's not that I hate the number four.

29:06.000 --> 29:14.000
It's that it's all in successive prime numbers.

29:14.000 --> 29:20.000
Now a lot of some people, the thing about it is that there's no particular reason it had to be prime numbers.

29:20.000 --> 29:23.000
And I get asked sometimes, I can't explain why.

29:23.000 --> 29:29.000
As if there needs to be a reason, the reason is because that's what I decided to do.

29:29.000 --> 29:35.000
It needed to be numbers. It couldn't just be linear because it would be very hard to draw large numbers in this language.

29:35.000 --> 29:41.000
And I didn't want it to be prime numbers sort of have like a nice sort of flow in the way that they increase.

29:41.000 --> 29:45.000
And it feels like it has meaning, but it's very arbitrary.

29:45.000 --> 29:52.000
And part of the thinking behind this language was I was imagining that this programming language had developed more like a natural language.

29:52.000 --> 29:57.000
That it would have these arbitrary decisions that would become part of it over time.

29:57.000 --> 30:02.000
And that sort of have an internal logic, but that don't are not really sort of explainable.

30:02.000 --> 30:11.000
Because the basic type of strands adds and subtracts value by moving back and forth on each line.

30:11.000 --> 30:14.000
There are many different ways to draw the same thing.

30:14.000 --> 30:21.000
So this is three different ways to create one list with a zero and a one and another list with a live end.

30:21.000 --> 30:26.000
And these we're going to use in the Fibonacci program and these are all equivalent.

30:27.000 --> 30:34.000
This is a complete set of the the whole Fibonacci program written five different ways.

30:34.000 --> 30:40.000
So this is a language which is right now very difficult for AI to make sense of.

30:40.000 --> 30:45.000
I think AI is very bad at understanding code that.

30:45.000 --> 30:49.000
Where the code flows vertically instead of just left to write.

30:49.000 --> 30:54.000
But also of course it's not enough of it for it to make sense of.

30:54.000 --> 31:00.000
But I like to think that all of these usalangs are a form of resistance to AI.

31:00.000 --> 31:08.000
I mean, if we think about how mainstream languages have sort of.

31:08.000 --> 31:13.000
You know, the sort of procedural multi paradigm languages that sort of adopt the same things every year.

31:13.000 --> 31:16.000
It becomes very sort of planned over time.

31:16.000 --> 31:20.000
And then we have AI sort of producing a sort of bland code.

31:20.000 --> 31:25.000
And it's a stuff that would make dixtra happy because it's very well, sometimes it's readable.

31:25.000 --> 31:33.000
It's it's it's definitely has a neutral style and reduces the sense of individual expression within the text of code.

31:33.000 --> 31:36.000
That assoing's feel like a place of resistance against that.

31:36.000 --> 31:42.000
Instead of having, you know, five programming languages to rule the world, we can all make languages of our own.

31:42.000 --> 31:46.000
They might be languages that will only be understandable to a few other people.

31:46.000 --> 31:55.000
But we have control over how it looks, how it functions, and what is possible to say in it.

31:55.000 --> 31:57.000
I'm just going to share a couple more things.

31:57.000 --> 32:00.000
How much more time do I have?

32:00.000 --> 32:03.000
Like, I can go on.

32:03.000 --> 32:05.000
Yeah.

32:05.000 --> 32:06.000
Okay.

32:06.000 --> 32:07.000
All right.

32:07.000 --> 32:09.000
I have a lot more time than I thought.

32:09.000 --> 32:12.000
I will show a few more languages.

32:12.000 --> 32:14.000
So I showed you that finger.

32:14.000 --> 32:19.000
That finger was actually inspired by an earlier language of mine called entropy.

32:19.000 --> 32:24.000
So usually when we think about assoing's, we think of code that's very difficult to read.

32:24.000 --> 32:27.000
But the code in entropy is actually very straightforward.

32:27.000 --> 32:29.000
It's as very sort of bureaucratic code.

32:29.000 --> 32:33.000
It looks like a mix of Pascal and C.

32:33.000 --> 32:38.000
But the thing that's unusual about entropy is that the data decays the more that you use it.

32:38.000 --> 32:45.000
So every time you access a variable, it'll be randomized very slightly.

32:45.000 --> 32:52.000
So this is what the 99 bottles sounds like in entropy.

32:52.000 --> 32:54.000
If I can get to start it.

32:54.000 --> 33:04.000
So I have a little bit here.

33:04.000 --> 33:20.000
18.0.

33:21.000 --> 33:26.000
So you notice that the voice changed there.

33:26.000 --> 33:37.000
That is the place where it's decided that it's no longer speaking English, that it's in German.

33:37.000 --> 33:39.000
I did write Eliza in entropy.

33:39.000 --> 33:42.000
It ended up becoming drunk Eliza.

33:42.000 --> 33:45.000
This was sort of an interesting cultural experiment.

33:45.000 --> 33:50.000
The more that you talk, she sort of crashes a lot.

33:50.000 --> 33:53.000
But basically you could have a CRD crash.

33:53.000 --> 33:55.000
You can have conversations with her.

33:55.000 --> 34:02.000
And the thing that's sort of interesting is that her data bank sort of becomes more and more decayed.

34:02.000 --> 34:04.000
The more that you talk with her.

34:04.000 --> 34:06.000
And people's responses tend to be the same.

34:06.000 --> 34:12.000
That the longer they communicated with her, the more they're sort of just hitting their keyboard.

34:12.000 --> 34:16.000
One thing about entropy is that originally I wrote a C sharp compiler for this.

34:16.000 --> 34:18.000
I guess that was in 2010.

34:18.000 --> 34:25.000
And then a few years later, another developer Andrew Hoyer decided to create a JavaScript version.

34:25.000 --> 34:31.000
Which is actually sort of now what I've built more recent versions of entropy on top of,

34:31.000 --> 34:35.000
because this was a really smart idea that you could do visual work in entropy.

34:35.000 --> 34:41.000
And you could sort of carry this into, you could do things that were sort of not very obvious before.

34:41.000 --> 34:49.000
And I think that that's really sort of what's rich about doing assaling work is that it's always communication with other people.

34:49.000 --> 34:55.000
Anything that you make, if there's interests from the rest of the community, people will,

34:55.000 --> 35:01.000
like you don't really understand your language until other people bring their own vision to it and write programs in it.

35:01.000 --> 35:05.000
If you're lucky enough, people will create their own interpreters for your language.

35:05.000 --> 35:10.000
They'll expand what sort of possible to do in the language and they'll bring new insight into what it is that you've created.

35:10.000 --> 35:13.000
So it's something that's always community based.

35:13.000 --> 35:15.000
It's always collaborative.

35:15.000 --> 35:23.000
And I think that that's why, to some extent, it's very indebted to the history of open source.

35:23.000 --> 35:26.000
I don't think it really makes sense so much in other contexts.

35:26.000 --> 35:30.000
And to some degree, it's always going to be a little bit outside the art world,

35:30.000 --> 35:33.000
because I don't think that this is ever going to be really sellable.

35:33.000 --> 35:36.000
Because who would want, like if someone made an NFT out of their assaling,

35:36.000 --> 35:38.000
no one would want to contribute to it.

35:38.000 --> 35:41.000
It would just sort of ruin the whole thing.

35:41.000 --> 35:45.000
So it's not very commercially viable to be making these languages,

35:45.000 --> 35:52.000
but it's something that I think is very rewarding and is the work that I'm really excited about.

35:52.000 --> 35:57.000
So I do have a book of assalangs that just came out.

35:57.000 --> 36:00.000
It's a little bit hard for me to recommend buying this book here,

36:00.000 --> 36:03.000
because it's very expensive with the tariffs.

36:03.000 --> 36:07.000
So I think you might have to wait for, you know, my country to unfuck itself.

36:07.000 --> 36:10.000
And then by the book.

36:10.000 --> 36:15.000
But I do have some copies here if people want to buy it without the tariffs.

36:15.000 --> 36:22.000
And I want to mention that I am going to be speaking about the assalangs from the book

36:22.000 --> 36:27.000
in Carl's Room next Friday at Zed Kayam.

36:27.000 --> 36:30.000
So if you are in that area, or if you are friends who are in that area,

36:30.000 --> 36:32.000
it would be great if you came out.

36:32.000 --> 36:39.000
It would be more of a straightforward discussion of other languages from the book.

36:39.000 --> 36:45.000
And since I still have a few minutes, I'm going to show the language that I showed

36:45.000 --> 36:49.000
at last year's Faustam, which is called valence.

36:49.000 --> 36:54.000
And if anyone was at my talk last year, no, okay, good.

36:54.000 --> 36:55.000
So this won't be a repeat.

36:55.000 --> 37:01.000
So valence is a programming language that sort of fills in something that's really sort of missing

37:01.000 --> 37:07.000
in the world of programming, but that comes very easily to natural language.

37:07.000 --> 37:14.000
So natural language, we can construct sentences like Billy saw the group at the telescope.

37:14.000 --> 37:18.000
And if I say Billy saw the group at the telescope, there's two different ways to understand this.

37:18.000 --> 37:23.000
It could be that Billy was looking through the telescope and saw the group or it could be that Billy saw the group

37:23.000 --> 37:24.000
and the group had the telescope.

37:24.000 --> 37:28.000
So these are two different ways that we can break down that sentence.

37:28.000 --> 37:34.000
So what if we had code a programming language that allowed for that same thing?

37:34.000 --> 37:40.000
So I decided to produce it and I would use only ancient Greek characters to represent it.

37:40.000 --> 37:43.000
These are the eight characters that I used for that.

37:43.000 --> 37:51.000
In the idea of the language is that every single, each of these characters are the eight variables you can use.

37:51.000 --> 37:56.000
They're also, they also represent the eight octal digits that you can use.

37:56.000 --> 38:01.000
Each one is a command and an expression and it takes either zero, one or two parameters.

38:01.000 --> 38:05.000
If it takes one, it's prefix and if it takes two, it's in fix.

38:05.000 --> 38:13.000
And so what happens when you write code is that every single possible interpretation of that code shows up.

38:13.000 --> 38:18.000
So let's just give this a minute for the signal to come back.

38:18.000 --> 38:23.000
There it is. Okay. Great. So I can just start typing and something will happen.

38:23.000 --> 38:28.000
And you can see I already have nine interpretations for the more runnable.

38:28.000 --> 38:36.000
The ones that are not runnable are because they are wild statements that do not have a closing bracket.

38:36.000 --> 38:40.000
I can add the closing bracket and now but I have five runnable.

38:40.000 --> 38:47.000
But the great thing about this is you can just sort of key mash with the left hands and you get a whole bunch of different programs coming out of it.

38:47.000 --> 38:59.000
So I already have 81 different versions of this and I can run them and when the program runs it runs every single variation of this.

38:59.000 --> 39:14.000
And then if you want to lock down the meaning somewhat more, you can put brackets around it which make it more specific because the brackets only go around parameters, not around the commands and this gives you a little bit more control.

39:15.000 --> 39:22.000
So that's pretty much what I have and I am ready to open this up to your questions.

39:22.000 --> 39:25.000
Let me put my contact info up here for you all.

39:25.000 --> 39:27.000
That's for my mailing list, the big QR code.

39:27.000 --> 39:29.000
Thanks everybody.

39:29.000 --> 39:43.000
So we are super lucky because we have ten minutes left for questions and now you will torture me.

39:43.000 --> 39:44.000
Please raise your hand.

39:44.000 --> 39:48.000
I will try to run as fast as possible to you because we are unfucking it.

39:48.000 --> 39:50.000
I start there.

39:59.000 --> 40:04.000
Hello.

40:04.000 --> 40:22.000
Thanks.

40:22.000 --> 40:28.000
So have you or other.

40:28.000 --> 40:35.000
Have you or other as a longer creator been contacted by video games developers?

40:35.000 --> 40:41.000
Because there are some video games that try to hide secret languages in image in music.

40:41.000 --> 40:47.000
Some are very creative like tunic that creates a language with a music and everything.

40:47.000 --> 40:50.000
And that would be incredible.

40:50.000 --> 41:01.000
If in the game there was hidden elements that were programming language, people would have their mind blown trying to figure out the syntax and finding it.

41:01.000 --> 41:05.000
Okay, so I got parts of that question.

41:05.000 --> 41:12.000
So I have not worked on video game systems but there is something very much.

41:12.000 --> 41:18.000
The sort of puzzle nature of a lot of these languages does feel a lot like a kind of gaming.

41:18.000 --> 41:19.000
I think a lot of it.

41:19.000 --> 41:24.000
There's a big crossover between the sort of.

41:24.000 --> 41:30.000
The sort of hacker play and SLangs and in video games.

41:30.000 --> 41:33.000
And you said something about music.

41:34.000 --> 41:41.000
There are a number of SLangs that use.

41:41.000 --> 41:44.000
Images and that sort of thing to produce code.

41:44.000 --> 41:49.000
I do have a programming language that you write with music.

41:49.000 --> 41:53.000
Which.

41:53.000 --> 41:56.000
If this comes back up.

41:56.000 --> 42:18.000
So this is an asling of mine.

42:18.000 --> 42:20.000
It's trying to load.

42:20.000 --> 42:21.000
There goes.

42:21.000 --> 42:27.000
That you write by whistling code to the computer.

42:27.000 --> 42:31.000
So it's usually hard for me to whistle after talking for half an hour.

42:31.000 --> 42:37.000
But I can I can try to see if I can produce some code here.

42:37.000 --> 42:49.000
There we go.

42:49.000 --> 42:51.000
I have the beginning of something happening here.

42:51.000 --> 42:53.000
I see able to set the route.

42:53.000 --> 42:54.000
I'm starting a.

42:54.000 --> 43:02.000
That statement here.

43:02.000 --> 43:04.000
Okay, syntax error.

43:04.000 --> 43:05.000
Sorry.

43:05.000 --> 43:15.000
Okay.

43:15.000 --> 43:17.000
I'll leave that for you to try at home.

43:17.000 --> 43:19.000
Next question, please.

43:19.000 --> 43:21.000
Name and shame.

43:21.000 --> 43:26.000
What real language would you classify as an SLang?

43:26.000 --> 43:28.000
Real language.

43:28.000 --> 43:30.000
I don't know, love you.

43:30.000 --> 43:36.000
So I'm definitely not somebody to discourage people from using SLang's in production.

43:36.000 --> 43:46.000
But so the question is really about language is that sort of cross that line between sort of why general use that feel asceteric.

43:46.000 --> 43:49.000
I mean, the kind of famous example is Pearl.

43:49.000 --> 43:57.000
A lot of people consider regular expressions in general and Pearl as asceteric.

43:57.000 --> 44:03.000
But you know, for me, for me, it's really JavaScript.

44:03.000 --> 44:10.000
You know, I think that like, you know, there's already dialects of JavaScript.

44:10.000 --> 44:14.000
I don't know if people have heard of Jay as fuck.

44:14.000 --> 44:23.000
This was created by Martin Clappy who realized that you could write valid JavaScript using just six punctuation signs.

44:23.000 --> 44:28.000
And this is a way of this whole thing translates to overt one.

44:28.000 --> 44:35.000
It really comes from basically creating truth values and adding to them to create numbers,

44:35.000 --> 44:41.000
could bring them into strings and so on, that you can basically reproduce all of JavaScript this way.

44:41.000 --> 44:46.000
And what was sort of amazing, so this is more of a asceteric dialects, I guess, of JavaScript.

44:46.000 --> 44:52.000
I also have a couple of my own asceteric JavaScript dialects in the book.

44:52.000 --> 45:02.000
But I think Jay as fuck is really one of the things about this language is that while he created it for sort of a kind of creative play.

45:02.000 --> 45:11.000
For a little while people were using this to get around malware filters until they started checking for Jay as fuck.

45:11.000 --> 45:18.000
So yeah, anyway, this is sort of, yeah, I would put JavaScript as the top of my list.

45:18.000 --> 45:24.000
One, two, three. After this we just take another two questions.

45:24.000 --> 45:31.000
How did you get so into this? How did you get so into this? How did I get into this?

45:31.000 --> 45:37.000
Yeah, so basically I was working as a programmer.

45:37.000 --> 45:47.000
The first thing that I saw that really drew me into this was when I read a paper that showed that mind sweeper was turning complete.

45:47.000 --> 46:06.000
And I became very curious about that, and I started that I found Pete, and I made sort of an answer language to it, which was the original version of the loto, which is not involving whistling, but MIDI files, sort of a musical version of Pete, where you write code as notes.

46:06.000 --> 46:15.000
And I was doing this for fun, then I went to art school for photography, and when I got there, I realized, oh wait a minute, this thing I've been doing for fun is we can think of this as an art context.

46:15.000 --> 46:26.000
Maybe this is what I'm more excited about, and so that's when I started the interview series.

46:27.000 --> 46:38.000
Do you notice that as these SL lines evolve, they've come from brain folk or something, and they eventually kind of fork off into their own dialects and things?

46:38.000 --> 46:49.000
Do you find it similar to human linguistics, how these lines would just change over time, or how they kind of are built off one another?

46:49.000 --> 46:55.000
Does somebody kind of repeat that question for me? I'm sorry, it's very hard to hear it down here.

46:55.000 --> 46:57.000
Is something about linguistics?

46:57.000 --> 47:11.000
Yeah, so do you see how these SL lines kind of evolve from one another? Does it kind of look similar to how human linguistics works, where languages kind of diverge and build on top one other?

47:11.000 --> 47:24.000
So there's something about languages diverging and linguistics. So one thing I want to say, we have with AI prompting right now, right? We have this sort of weird collision of natural language and code.

47:24.000 --> 47:39.000
But that's not the only way to bring those two things together, and there are a lot of SL lines that sort of explore the connection between natural language and code and try to bring it in other ways that sort of invite more ambiguity.

47:40.000 --> 47:57.000
There is a language called Prasa, which uses a South Indian language. It doesn't use the language itself. You actually write it in English, but uses the rhythm of the Southern language and how it plays off that rhythm is the way that code is written.

47:58.000 --> 48:15.000
And then there is a language called Love Language by a student at Carnegie Mellon where you can write sentences in English and the syntactic breakdown of the sentence. The syntax tree gets turned into brain fuck.

48:15.000 --> 48:26.000
So it's actually using linguistics that way. So there's people are finding more sort of interesting ways to bring those two things together.

48:26.000 --> 48:40.000
And it's something that I sort of explore quite a bit in the book, which is sort of interesting because the book kind of came out right before the AI prompting became such a huge thing. And in some ways feels like an answer to that, even though it was written sort of before a lot of that was happening.

48:40.000 --> 48:44.000
So hopefully that answered your question.

48:44.000 --> 48:50.000
So, and with that, thank you so much, Daniel. Give him another round of applause. Thanks.

