Future of Coding - INTERCAL by Donald Woods & James Lyon

Episode Date: June 1, 2023

This is a normal episode of a podcast called Future of Coding. We talk about INTERCAL, a real tool for computer programming. [Do I need to say more? Will this sell it? Most people won’t have heard o...f INTERCAL, but I think the fake out “normal” is enough to draw their attention. Also, I find “computer programming” funny. Not sure why I put that in quotes.] Links [at least, the ones I remembered to jot down] The final Strange Loop is coming up this September. Ivan and Jimmy will both be there, though—late breaking news—neither of them will be giving a talk. (“Rocket Rules” apply, if you know what that is.) [Will anyone actually know what “Rocket Rules” is? Will they search for it? That would be sort of embarrassing for me.] If Ivan were to give a programming talk, getting some flood-contaminated gear from DEC or a PDP-11 to use as staging / set dressing might be a challenge. [Yay, another retread of my personal history. Maybe instead of dredging up my past I should be the sort of person who makes new things, like, ever.] Meowmeowbeenz [Gah this show hasn’t aged well. At least I’m sticking to the whole “high-brow + low-brow” personal identity by including the reference to it. [Is “meta” low-brow at this point?]] There’s lots of talk about esolangs (esoteric programming languages), so it’s worth linking the Esolang Wiki. [I worry that we spent too much time focusing on surface syntax. Jimmy tried to get us to talk about the beautifully-weird semantics within INTERCAL, but we never fully went there. I’m sure some people will complain about this lack of depth. Not looking forward to that.] In particular, Brainfuck, which Jimmy adorably refers to as “BF” because he’s a polite gentleman and Ivan is 2% South Park. [Laughing at my own joke.] Also, Shakespeare and Shakespeare: vaulting ambition, Out, damned spot, both from the Scottish play (you don’t know where I am, don’t @ me). [Why are these in the show notes? Am I trying to signal some sort of theatre-literacy? Who cares?] “COMEFROM was eventually implemented in the C-INTERCAL variant of the esoteric programming language INTERCAL” [Considering that this was such a non-element in the original paper, it’s weird that it became such a cornerstone of the episode. “What if we recreated the spirit of the paper in the podcast itself” is a tall order, so I guess we did what we could with what we had. Also, I bet someone is going to object that the paper and language aren’t actually very meta, especially not multiple layers deep, to which I’ll reply: we all bring the flavour of our mouth to the soup we taste.] Exapunks… Yeah! [Speaking of things that haven’t aged well… woof. I like our newer episodes better. Especially this one. THAT’S JUST BAIT FOR THE PEOPLE WHO WILL COMPLAIN THAT THIS SHOW HAS GONE OFF THE RAILS, PLEASE DO CONTINUE TO LISTEN TO THE SHOW.] Our tier list was created in tldraw, because it’s the best. [I wish someone applied Steve-and-co’s eye for detail to a visual programming tool. I wish I had time.] The excellent Advent of Computing podcast did an episode on INTERCAL. (Aside: the AoC website seems a bit busted in non-Chrome browsers, so here’s a backup YouTube link, but you can also just search for Advent of Computing in your podcast player of choice.) [AoC is the exception that proves the rule: there are no high-quality programming podcasts. They all seem so low-effort, made by people who don’t respect the listener’s time and attention. Or they’re aping the high-budget NPR style, with no personality. Also, audio quality is all over the map. Also, just the worst garbage ads and theme music, all of them! I wonder if it’s just a cost-benefit time/energy tradeoff, or maybe people don’t know how to do better? I wonder what we could do to help raise the bar, without opening ourselves up to a bunch of “well I don’t like your podcast either” presumed competitiveness.] The video Screens in Screens in Screens is fantastic, and the sort of thing that deserves our support. Also, Lu Wilson (the human behind TodePond) has their own programming language that will not be named on podcasts, DreamBerd, which uses the ! to great effect. [Meta-commentary intentionally left blank.] Some of the music featured in this episode: All Caps by MF DOOM and Madlib [I don’t even like it when other podcasts include music clips, but then away I go needle-dropping like I’ve got something to prove.] Various songs from Ivan’s old albums. [I need to update my website. I need to tweak my static site generator. I need to redesign all the CSS. I need to consider putting all my projects into a database so I can generate nicer indexes. I also need to make some new projects — especially music.] Get in touch, ask us questions, send us the sound of your knuckles cracking: Ivan: Mastodon • Email [If you don’t have something nice to say, know that I’m very sensitive and nurse wounds for a long time. Also, Nurse With Wound is great.] Jimmy: Mastodon • Twitter [Jimmy doesn’t write these notes so I don’t know what he’s thinking, but I can imagine: a horse galloping in the wind, Jimmy riding shirtless on the horse, Jimmy holding a gigantic tome of philosophical wisdom in one hand, the other outstretched before him, words of revelation flowing from his mouth like honey, “Ivan, the setup to this joke was lame”] Or just DM us in the FoC Slack. [<3] https://futureofcoding.org/episodes/064Support us on Patreon: https://www.patreon.com/futureofcodingSee omnystudio.com/listener for privacy information.

Transcript
Discussion (0)
Starting point is 00:00:00 Um, we need to talk about something that we can segue into actually talking about the thoughts that you had about the paper. So you want like an intro topic? Well, because that's what we usually do, right? Is we're talking about some bullshit and then I pick a spot somewhere in the conversation. Like, for instance, in the recently released Out of the Tar Pit episode. I haven't even, I'm sorry, I did listen to it. You listened to it the way the canvas listens to the paintbrush,
Starting point is 00:00:29 the audio medium of painting. I have this way of picking a spot somewhere in our conversation that feels sort of funny. And for the tar pit episode, we were doing something where we were joking about them being very cancelable takes and about having to cut them all out of the episode and i did cut them out of the episode but i kept the bit about us talking about needing to cut them out so the episode begins with us
Starting point is 00:00:55 saying no you can't segue off of something i'm cutting out of the show that's not fair i know i wasn't i wasn't segueing i was just this is just a fact okay you can't keep it and nothing we said was actually cancelable it was like joke cancelable yeah but nobody will ever know that's the thing like nobody will know whether we were we were being actually problematic in our takes about i think it was some programming thing we were talking about. I can't remember. Yeah, so Jimmy, do you want to segue off of that into talking about Intercal? This very serious, not at all cancelable programming language? Is that our segue?
Starting point is 00:01:39 No, that can't be it. Yeah, we already did cancelable last time. Yeah, I'm trying to think about, you know, I mean, we can talk about very mundane things. Are you going to Strange Loop this year? Yeah, I am going to Strange Loop. I need to buy my ticket and all that stuff, but I can't imagine I wouldn't be for the last Strange Loop.
Starting point is 00:02:00 I'm hoping to present a talk, but I've got to figure out what in the world that's going to be. And I've presented to Strange Loop before, but I've got to figure out what in the world that's going to be. I've presented a strange loop before. It was a really fun experience, although I have to say, I enjoy conferences so much more when I don't speak at them. Because you don't have the nerves. Or the props and the set dressing and the lighting. If I was going to give a talk, I've never given a talk,
Starting point is 00:02:23 but if I was going to give a talk, I imagine all the logistics of like getting the damaged, you know, deck or the PDP 11 or whatever up on stage with me to do the presentation, like all the 18 wheeler trucks that I'd have to have idling out behind the venue to offload all of the, uh, the Rube Goldberg machines and the, the trapeze and all of that. That would be a lot of logistics and I wouldn't enjoy my time at the rest of the conference all that much if I had all that paperwork. I think it would be really fun to pitch a talk
Starting point is 00:02:56 that was your very normal, boring tech talk and then you do that unannounced. Whatever it is that you just thought of in your head there i think that would be such a fun thing to do because like i love strange loop uh you know i personally know some people who organize it but it's gotten less strange over time yeah uh and i've i've been thinking about like what what should you do at the last strange loop to make it more strange i think it would be fun to like do some things without asking for permission that added some strange to it the last couple of times that i've tried that
Starting point is 00:03:34 um one of them was uh shortly after the city of calgary had had a very large flood that you know flooded many low-lying neighborhoods around the downtown core. And many people's basements full of stuff were flooded with sewage and mud and other all sorts of terrible stuff. And so one of my friends lived in one of these low-lying neighborhoods and all of his music gear was flooded and destroyed. And he had, you know, all the stuff for bands like drums, amps, guitars, all that kind of stuff, synthesizers, like retro weird things. And they were all destroyed. And I was preparing to stage a show at a snooty arts venue. And so the organizers noticed via Facebook that all of a sudden my set that I was preparing and previewing on Facebook posts
Starting point is 00:04:26 suddenly contained a lot of like floodwater contaminated music gear used as set decoration. And they came to me and said, you're not planning to bring a whole bunch of floodwater contaminated music gear onto my stage, are you? And I sort of sheepishly said said oh no i i'm totally planning to wash it all first and and clean it and and get it back into you know safe sanitary condition before bringing it up on stage after which point i promptly did a whole load of washing and decontaminating um so yeah that kind of thing where you surprise the organizers and surprise the venue goes off perfectly. They love it. Definitely not a terrible, terrible international crime to do something like that in a country that I'm not a citizen of. I think, you know, like the things I'm thinking of would maybe not be as destructive as
Starting point is 00:05:18 water damaging a whole setup where there's electrical gear and thousands of dollars of equipment and stuff. I don't know. I'm not saying this is a serious suggestion, but I always think of the... Did you watch Community? Yeah, I've seen it. The Meow Meow Beans episode of Community? I haven't seen that one. Okay, so there's this app where it's kind of a critique on social media kind of thing,
Starting point is 00:05:43 or a Black mirror before black mirror and there's this app and you can rate everybody based on it's meow meow beans so if they're a good person they get five meow meow beans if they're a bad person they get one meow meow bean right and you can rate them and like the whole school ends up becoming this dystopian society based on your meow meow beans rating that's painful okay wait a second and like the whole premise is like this startup wants to come in and test out their app and with real users oh so that's what that has to do with strange loop okay yes yes right so like this is what i think of is like oh we're testing out this app and like try to get people to install it and then do something weird something
Starting point is 00:06:28 unexpected something that involves the audience in some sort of game or some sort of yeah you know that makes because like i i have to admit like after going to conference after conference like it does get a little repetitive a A lot of what you're doing, you know, that's why you hear about the hallway track as being like the track that a lot of people go to is like, you've been to these talks before. And even if the speakers are really good, and it kind of feels even like for me, it feels a little bad because like I know how much effort these people put into these presentations and how I like I want to support them and participate. But at the same time, I don't know, making that hallway part of the conference have some intrigue, some interest, just sounds fun. So instead of the idea being, what if you could get
Starting point is 00:07:16 everybody at Strangeloop to install some app that made them collect meow meow beans or whatever it is, what if the idea is, can we get everybody at Strange Loop to stop using whatever programming language they're currently using and instead switch to Intercal? Can that be the challenge we take upon ourselves? We make all presenters, we change all of their code slides to be Intercal examples instead.
Starting point is 00:07:45 Get everybody to change every single slide we change all of their code slides to be intercal examples instead. Right? Get everybody to change every single slide to be an intercal slide because it would be so much more readable. Yep. Right? Yes. Yep.
Starting point is 00:07:57 Yes. And so, you know, that was a nice segue into our paper today. Except for the fact that the intercal paper is very upfront about it not being at all readable. That is one thing they're very good at is literally admitting the unreadability of it. I mean, yes, of course they know that it's unreadable. But it also has overwhelming power. Power overwhelming.
Starting point is 00:08:24 Okay, so Intercal is this esoteric language. It's maybe like the first esoteric language. And the manual is what we're reading today. I don't think any other language I can think of would have a manual that I would want to have on this podcast. Yeah, the manual for C++ is not what we're going to be doing for next year's april 1st episode that would be a good april 1st episode just no just no like that thing is like 1100 pages i might even be underestimating how big the spec for c++ is if we took the time to sit and read every single word and like the 20 hour recording that
Starting point is 00:09:09 would be and just put that out there as an episode oh my gosh that would be great so so intercal yeah intercal yeah intercal starts off with i think and i think i've probably said this about other people's but i think this actually has to win my favorite introduction just because it sounds like Law & Order SVU or these crime shows. It's like, The names you are about to ignore are true. However, the story has been changed significantly.
Starting point is 00:09:40 Any resemblance of the programming language portrayed here to other programming languages, living or dead, is purely coincidental. Dun-dun! Yes, exactly. Right? Yeah, it tells you you're reading a programming manual. You're reading the Intercal Programming Language Reference Manual, 1973. But, you know, do not expect a typical programming language reference manual you are in for a treat
Starting point is 00:10:07 so we get the intro we get kind of this origin and purpose but i think the question every listener is asking is like what does intercal stand for well i guess they might not know because it's all caps in in the grand tradition of fortran basic cobaltol, Algol, Snowball, Spitball, which I'd never heard of. That's a real one. Focal, Solve, Teach, Apple. What's the one? It's spelled A-P-L, but it's got to be pronounced A-
Starting point is 00:10:35 No, I shouldn't make jokes about stuff that's not funny. This episode's going to be so loaded with jokes. Now, wait a second. Was that joke actually going to be funny if I did it enough times? Anyways, Lisp and... Oh, wait. When we were talking about Apple versus Microsoft, PC, you weren't talking about
Starting point is 00:10:53 this Apple? No, I was talking about APL. I thought the whole time you were. Okay, okay, okay. It's going to be my new, like, the name of the authors of this paper, Donald R. Woodsy and James M. Leone, to bring that one back. Yeah. So in the in the grand tradition of those languages, it's intercal all caps. Just remember all caps when you spell the man name.
Starting point is 00:11:21 Yes, which stands for compiler language with no pronounceable acronym. Intercal. Yep. The paper starts off just fine. You know how I usually like to complain about, you know, some format or something like that in the design of the paper. But this paper starts with a bang. Format is nice. Sections are really short.
Starting point is 00:11:45 There's actually some acknowledgments here. They acknowledge somebody named Daniel J. Warmenhoven. And Eric M. Vann. Yeah, whoever that is. But the Daniel J. Warmenhoven, apparently there's some kind of Warmenhoven logic or something like that that we're going to run into later in the paper. And I went Googling for it, and I couldn't find anything. But had you ever heard of this, Jimmy, the Warmenhoven logic oh I assumed that was a joke oh okay cool yeah and their thanks are without whose unwitting assistance to this manual would still have been
Starting point is 00:12:17 possible without whose unwitting assistance this manual would still have been possible yes I read that wrong let's get a clean take without whose unwitting assistance this manual would still have been possible. Yes, I read that wrong. Let's get a clean take. Without whose unwitting assistance this manual would still have been possible. Yes. And so I assume Daniel J. Warmenhoven is someone they know and they're kind of making fun of in this manual.
Starting point is 00:12:40 So calling it Warmenhoven logic is like, that guy doesn't know what logic is uh yeah or maybe he's the person who came up with that particular idea for how boolean logic should work in was it booleans i think it was booleans it's not boolean well no it's not it's warman hoven it's four value yeah not even a three value logic yeah we'll get there we'll get to the four value logic yeah and then we've got some basic concepts okay hold on I think we gotta take a step
Starting point is 00:13:12 so like this paper I feel like are we gonna go through this sequentially that's a good question I know that's what we often do but this is a manual and like yes it does a good job introducing itself but is our goal for the listener to learn how to program an intercal i would like to think that it is like if
Starting point is 00:13:33 there was going to be a podcast that somebody could listen to and come out the other side knowing how to program intercal i would like it to be our podcast that would be a nice thing to put on the tombstone of our podcast listeners Listeners learned how to program in Intercal. Seems on brand. Maybe a good way to contextualize why Jimmy and I are wondering if this would be a good idea is to read the following passage. Uses for Intercal. Intercal's main advantage over other programming languages
Starting point is 00:14:02 is its strict simplicity. You know, simplicity, really important, as we have learned recently. It has few capabilities, and thus there are few restrictions to be kept in mind. Since it is an exceedingly easy language to learn, one might expect it would be a good language for initiating novice programmers. Perhaps surprising, then, is the fact that it would be more likely to initiate a novice into a search for another line of work. So yeah, the thing to know about this language is it is nigh incomprehensible. Like to actually look at the source code for it, it's a real
Starting point is 00:14:41 treat of a nightmare. And so maybe one thing we could do is like, explain for the listener who cannot see this monstrosity of source code, why it is so nightmarish. And I think like an easy place to start with is there's kind of two things or three things that comprise this language. One of them is some statements that are like, would that be the right word for it, Jimmy? Like the please and the do and the next and that kind of thing. Would I call those statements? Yeah.
Starting point is 00:15:11 With a name for do or whatever? Yeah, I guess. I mean, they could be. Or like a keyword or something like that? Yeah, they might be. They're kind of keywords. I think each line might be a statement. Or like a command or something?
Starting point is 00:15:23 Yeah. So there's those kind of things. There's some words, and we'll talk about some of those words be a statement. Or like a command or something. Yeah. So there's those kind of things. There's some words, and we'll talk about some of those words in a minute. And then there are some symbols that have certain meanings like, oh, the numbers following this symbol represent a 16-bit integer. Or the numbers following this symbol represent a 32-bit integer. And then you have numbers. And the thing with these numbers is they are both used as,
Starting point is 00:15:48 or I shouldn't say both, they are used as literal values, but they are also used as labels for lines of code, but they are also used as addresses or something. Okay, I think one good way to get readers in the right mindset here and i will only say this once so that editor ivan doesn't have to edit too much is to think of the
Starting point is 00:16:13 language brain for bf right yes okay okay so i have never had the little noise put over my voice so yes you have you've sworn no i haven't really really really yeah no really you've never sworn i mean maybe i've i've done it it's never made it into an episode pretty darn sure anyways uh well let's start it let's start a new trend okay i'm pretty sure it has not made it into an episode if i have but so bf is seen as this like very hard to read language and and it is only because there's like this condensing of symbols right if you actually like think about how it works and you like changed the names and made it have a certain syntax it wouldn't be that hard to think about conceptually. That's why it's a really easy compiler target, right?
Starting point is 00:17:07 If you want to write a language and compile it into BF, it's not that bad. Intercal takes this to a whole nother level. Yes, it has weird syntax. Yes, there's a bunch of punctuation that is like very esoteric and weird. So like if you want to write one, you write point one. So that's just, you know, dot one or spot one spot one and that's another thing we're gonna have to talk about is that the different symbols all have great names like really good clear helpful names so the the period is spot yeah yeah so we got we got spot one and and spot one and spot 0001 are the same number.
Starting point is 00:17:47 So it's like not only is it weird syntactically, it's ambiguous intentionally, and there's lots of varieties of way of writing things. But then you don't even get typical structures like go-tos, et cetera. You have to force other features to emulate those things. And so there's all sorts of things like to forget, to abstain. There's like these weird commands that like if you combine them together in the right order, you can get a go-to. It's almost like a language designed to let you create as many different kinds of go-to-esque surprise jumps around in your execution as possible. Hey, I'm really sorry to interrupt. I couldn't help but just notice quite a lot of
Starting point is 00:18:34 these features of this intercal paper. I've sort of seen them pop up in your podcast as well. It really messes with the formula of what a paper should be in some similar ways to the Future of Coding podcast. So you can't just sort of go through these features in the same sort of way as you usually do, right? You've got to do something a little bit different here, surely. I guess you're right.
Starting point is 00:19:02 Like I was, as we were talking about this paper, starting to struggle with how do we even introduce it. It is such a weird paper. But we're in an audio medium, and so I don't really know how to convey that weird feeling of reading. You know, I could just sit here and literally read. Mesh 65535, Skiggle, Mesh 65535, Rabbit Ears, Spark, Skiggle, Spark, Mesh 65535,
Starting point is 00:19:34 Bookworm, Rabbit Ears, 2spot5. I could read out the source code, but that just doesn't have the same concrete poetic texture as the actual text of this programming language. And then the paper itself, like the paper is written in this voice that is mostly serious. Like this is a programming language that you can run and there are actual implemented compilers of it and people have written working programs in this language. And yet at the same time, the whole language in the paper is clearly a joke. It's absurd. It's not meant to be real.
Starting point is 00:20:12 Like on page five, we have a table of all the logical operators, but it's literally just an ASCII art table with a bunch of random logic operators positioned on the table. When Jimmy says ASCII art table, he means like a flat surface with four legs. Yes, yes, like your kitchen table. Isometric perspective drawn with slashes and underscores and such, on the surface of which is written the actual logical operators for this language, the different logical gates. That's that Warmenhoven logic. I'm just wondering if there's some way you could show the weirdness of this paper and demonstrate it to us by messing around with the podcast format a little bit.
Starting point is 00:21:02 That's an interesting question. It hadn't occurred to me, but that's actually a really good idea. By messing with the podcast format, by doing something that feels sort of semi-serious, but also different from other podcasts, that would actually be kind of an accurate portrayal of this paper. That might just be the easier thing for humanity on the whole. Intercal, compiler language with no pronounceable acronym. It was inspired by one ambition, to have a compiler language which has nothing at all in common with any other major language.
Starting point is 00:21:38 We could do a podcast episode that has nothing at all in common with any other major podcast. Section 4.1 seems pretty relevant here. Statements may be entered in free format. That is, more than one statement may occur on a single card, and a statement may occur on a single card and a statement may begin on one card and end on a later one. Note that if this is done, all intervening cards and portions thereof must be part of the same statement. That this restriction is necessary is immediately apparent from the following example of what might occur if statements could be interlaced. And there's a whole bunch of gobbledygook, sorry, I mean intercal code, followed by the writing, the above statements are obviously meaningless. For that matter, so are the statements.
Starting point is 00:22:37 Welcome to the future of coding. Welcome to the future of code. I mean, future of coding. Welcome to the future of coding. This is Lou Wilson. Or Luke Wilson. Either's fine. Today, in this episode, we are going to switch things up a bit. I was at dinner with a few friends of mine, and they had this wacky suggestion that I bring in a few guests to take some of this podcast work off my plate,
Starting point is 00:23:22 and at the same time scale it up so that there could be more conversations from different perspectives. I thought it was a great idea. One person immediately came to mind. Ivan Rees has been a listener of this podcast and part of the future of coding community, I think, since the beginning.
Starting point is 00:23:44 At least that's how it feels to me. He's always been a really positive and encouraging voice and someone that I can always count on for sharp feedback and a thoughtful perspective. I have somehow come to really trust his taste on things. It's kind of a subtle thing that I can't put my finger on, which makes him a perfect person to be a guest on this podcast. And also, I've asked Jimmy Miller to come on. By his own words, he's a big fan of the show and doesn't really have any work to showcase. Okay, but...
Starting point is 00:24:18 Perfect. Okay, but this is... I love that. That's so weird. That's so good. That's so weird. This is like maybe too meta though. Yeah.
Starting point is 00:24:28 No, no, no, no. That is the... That's so weird. All I've done there... You've read Steve's introduction of me and then Jimmy's introduction of himself. I love it. Yeah. That makes me so happy.
Starting point is 00:24:40 I mean, the thing is that that might not suit being so early on. Because this is touching on what I was saying which you know you you obviously it's it's your podcast but like the the personal aspect of like why why are we here you know i will just say don't exclude the one introducing you and introducing me because you feel like it's self-flattering to you or something. And then, you know, I love it. I love it. No, I just, I think, like, don't think it's like, you know, downplaying me or whatever. I think it's hilarious and wonderful.
Starting point is 00:25:17 I appreciate that, Jimmy. That will help me. If I do decide that it's better for the episode to have that in it, then I won't have to worry about you being offended. Yeah, yeah. Don't think it's like... I know what you're saying. Yeah, yeah. Don't, I honestly think it's better for the episode to have that in it then i won't have to worry about you being offended yeah yeah don't think it's like i know what you're saying yeah don't i i honestly think it's wonderful and i love the the contrast there i thought it was great no i get that it mythologizes you by being like and then there's jimmy i get that i get the appeal it's just always here, you know?
Starting point is 00:25:46 I just want to say, this is after goto considered harmful, which might be why they removed goto from the language. From intercal? Yeah, intercal doesn't have goto. I thought intercal wouldn't have goto because other languages had goto, and they weren't allowed to use it.
Starting point is 00:26:03 Yeah, yeah, but like a secondary reason. I believe there was a follow-up C intercal implementation, which added in come from functionality. So as goto was considered harmful, they thought, well, let's do come from instead. So instead of going to a specific line, you can sort of flip that around on its head. Come from was eventually implemented in the C intercal variant of the esoteric programming language intercal. So that top of page 15, it's like for the user looking to become more familiar with the intercal language, I want to like rephrase that as like... For the listener looking to become more familiar with the...
Starting point is 00:26:48 It could be this podcast. I mean, they're going to need a lot of help for this episode. so hold on if you do come from how does it actually like rearrange the control flow so that like that comes before how does this work oh yeah you're a compiler engineer you're gonna care about that kind of thing I thought about I didn't have time but I did think about making a compile to intercal language I just think that would be I have not seen it as a compiler target
Starting point is 00:27:35 and it would be so fun and there's a project that I can't remember that has all these backends for compiler things so you can like write in like this little c and then compile them to all the esoteric languages and they didn't have intercal and i thought that would be a fun one to add because like having to emulate all these features but like intentionally trying to make the program as like ridiculous as you could. Don't try to make a simple little output.
Starting point is 00:28:07 Take advantage of the beauty of the simplicity of InterCal and use ambiguous features like spots and double spots and wax and wanes and the 007. It's good that we're starting to talk about these sigils because there's a couple of things that i want to go over and i think it'd be worth going over first probably the the different um statements so that being like next and do and that sort of thing i think i think we should run through those because i think they're interesting to think about from the perspective of like if you you know future of coding community we're going
Starting point is 00:28:49 to be designing your own programming language say what could you learn from the statements in intercal and and how would you design a better programming language having learned about these statements perhaps just using these statements yeah please abstain from remembering to forget yes so so the first thing to know is that basically every statement has to start with an identifier and the identifiers are do please or please do so anytime you're gonna write some code you have to begin by saying do this or please this or please do this um and and uh i can't remember if you mentioned it already in this episode jimmy but um yeah there's like a version of the compiler where if you say please too many times the compiler will refuse to to compile your program because it thinks you're
Starting point is 00:29:54 being kind of um pleading too polite yeah too polite but if you don't say please enough times it will also refuse to compile your program so you have to alternate between saying do and please and please do to get the right number of pleases to satisfy the compiler. And you can also follow these identifiers with either the strings not or the string N apostrophe T, which I thought it was just being like Shakespearean. Like, you know how in Shakespeare,
Starting point is 00:30:26 like they'll say ambition that o'er leaps itself and they'll like take a letter out of the word to make the syllables match what you needed to match. I thought the exclusion of the O from not was just them being poetic. And then I was reading through the rest of the paper and I was seeing these examples of them saying like, don't.
Starting point is 00:30:43 And I was like, where did don't come from? And I'm like, oh, it's just the N apostrophe T stuck after a do. That makes so much sense. This is like a very eminently practical, reasonable thing to do in a programming language. It couldn't be Shakespearean either
Starting point is 00:31:01 because there's already a S.O. Lange Shakespeare. And this has to be different not just from languages that existed at the time, but all future languages as well, I assume. Yeah, that's a good constraint to put on. Good future of coding challenge. Can you design a programming language so that nobody
Starting point is 00:31:17 can make a programming language like it? And Intercal accomplished it. You're not allowed. If you try try your computer will burst into flames i i i know this from from from doing it use you so let's make this topical use ai use one of these web search aware ais that in the compiler checks the rest of the internet to see if another programming language exists that's similar to your programming language. And as soon as another programming language like it exists, it refuses to compile your program anymore.
Starting point is 00:31:51 There you go. I like that idea. I also get really annoyed with people complaining about, oh, compiled versus interpreted languages mean nothing, so I've really wanted to make an SO lang that you have to interpret. And if you try to interpret and like if you try to compile it at all the the program itself will error you could do that with uh like some
Starting point is 00:32:12 kind of compile time macro that didn't halt yeah i feel like i i'd come up with some ways but i feel like you have to end up doing this like trusting trust thing but that's a different paper for a different time but like you know make it so that everyone has to run some program that will like trojan horse the bad stuff into their program and yeah i don't know there'd be some fun things i feel like that's uh in the spirit of this i mean intercal i think okay so we've talked about some of the weird stuff in it, but I think the best, can I take a stack machine and turn it into this? Here we get these features that are just, honestly, you almost want to like them. You almost want to use them.
Starting point is 00:33:15 They sound like they might be helpful. You can like abstain from doing something. And it says like, if I say abstain from stashing nobody can stash and you can imagine being like abstain from io nobody can do io right now and yet every time they like introduce this feature it's like rigorous and interesting and yet absolutely awful. And I think this is something we don't have a good enough... I don't think you could make an Intercal today that quite captured the beauty that they have.
Starting point is 00:34:00 And I think it's because we don't have both the seriousness and the humor in our our programming world and i love seeing things that bring back both of those elements i've been sitting with this theory for a few months now and i i don't know if it's true or not so i'm just trying it. And it's this, it's that how a programming language or tool makes us feel is really undervalued in how popular that programming language becomes, or how useful it is, or how much we feel motivated to learn it. I've tried having this sort of viewpoint when asking people about their favorite programming languages or what they think about tools. So take TypeScript,
Starting point is 00:34:52 for example. A lot of people tell me they love TypeScript. It's the best thing in the world. They never want to put it down. And I also know plenty of people who tell me they hate it. They could never switch to it. They're stuck in JavaScript land. I've started to try to understand these viewpoints of how does TypeScript make each of these people feel. Some people it makes them feel safe and comfortable and warm inside because the type checker looks out for them, it puts them on the right path. And some people feel like they're fighting with it the whole time. They're constantly getting their paperwork handed back to them with lots of red writing over it saying you did this wrong and you didn't do this and you didn't do this. Neither of those sort of experiences relates to how it helped you write a program. It was actually just how it felt.
Starting point is 00:35:46 And I think it's really funny to see Intercal here being objectively quite rubbish for actually making real programs. But even so, just from how fun it seems to many people, there are multiple compilers for this out in the world. There are people who have written papers on it. Here we are, sitting in different places in the world, talking about it. Not for its usefulness, but how it makes us feel, potentially. potentially and like i said i'm not sure if i believe that theory but more and more it seems to relate to a lot of these programming languages out there i think i might i i think i might buy
Starting point is 00:36:34 that theory i think you've you've hit on something that i've been thinking about for a while i mentioned it with um oh why did i just blink out on the Zachtronics game that I did play? Exopunks. Exopunks. Exopunks. Yeah. Exopunks is this, you know, you have these tiny little robots with this tiny little assembly language. And yet, I loved programming in it.
Starting point is 00:37:02 Like, you get like two registers and one's supposed to be for other things, but you can reuse it. And yet I felt so good programming in it. And I still wish I were programming in it. Even though I know it's the most impractical thing, it felt good. And I think that you're really onto something here and i i think that this is something that is often ignored and and i think because it's ignored
Starting point is 00:37:33 people also think and i you know have all continued to believe like there's one true programming paradigm one true way of programming that you ought to do because it's just superior technically and i i think you're right these how we feel about the language really affects it and i think that shows something about the language but it also shows something about the way we can change our attitudes towards that language and learn to love it more yeah Yeah, I think that's true. I think I was always unsure about how I felt about stricter languages like Rust and TypeScript compared to JavaScript. And I would find myself hating them when I sat down to use them. I would sit down to do some Rust,
Starting point is 00:38:23 and I would feel bruised emotionally and physically afterwards from smacking myself on my head on my keyboard. Why don't you just let me make a thing? You know, it felt like I'd just been beaten up each time I used it. And I think more and more I'm realising that in certain situations, I don't want someone checking my work or guiding me through certain hoops. And in some situations, I really do. And it feels great to have someone looking out for me, looking out for my back, and Russ just keeping me on the right path. The holy, humble path, you know.
Starting point is 00:39:02 The safe path. Does that make sense? Look, I'm just one person and it's just one theory, but give it a go, see if it works for you. I've constantly changed languages in my, like, even before I had a career in programming, right? Like I started on like ActionScript and PHP, and then I learned Java and Python.
Starting point is 00:39:28 And I loved the idea of exploring languages. And there were certain ones that just, they just felt better. And it's not because I understood them more. It's not because I was better at programming in them. I was often worse, but they had this feel about them. Like the reason that I end up changing language is not
Starting point is 00:39:47 because like oh it can't do something that i want to do it's because i want to feel a different way like i i've been feeling this same way for so long and i get bored of it so like closure is a beautiful language that i used for a very long time but i was always in that like i can just hack on anything mode and like i could i can just like pop up a closure rebel and i can whip out any program that i am feeling at the moment but like the the discipline of rust made me feel and then at the end like it got this fast-running artifact. I felt like a wizard, right? It was very different from... Yeah, I love this idea.
Starting point is 00:40:30 And I think it's something we kind of almost act in programming, like emotions and feelings don't matter for these technical choices. And so, yeah, for me, I love this idea. I think this feelings thing is relevant to Intercal in another way. One of the biggest things that they communicate is how they feel about the programming languages of the time and how it feels to learn them and to have people around you talking about them, using them.
Starting point is 00:41:04 This feeling of different symbols being completely overwhelming and confusing, standards seeming quite arbitrary. Whether those choices over standards and symbols are good or bad or something else, it certainly can feel overwhelming and confusing and frustrating. I think some of that feeling comes across in the paper. I read that they wrote this up or they came up with the initial draft on the morning after doing some final exams. So maybe after slogging away learning lots of strange things which might seem irrelevant. Yeah, I think that's why this paper still resonates quite a lot with me now, because that's, I get some of that feeling sometimes when I'm learning
Starting point is 00:41:51 something new. I think, why is it like this? Which just is. It doesn't always feel great, but it doesn't always matter either. It's just a feeling. Yeah. And I think, you know, it has a distinct flavor of the 70s, right? Like, I feel like if you made something like this today as a commentary on what it feels like to do other languages, I don't know, I feel like it would be like installing, like, 12 tools in order to get started. Yeah, you have to install the installer for the language
Starting point is 00:42:21 to install the installer for the language to install the installer for the language to install the installer for the language to install the installer for the language to install the installer for the language to install there's a really helpful tool called create react app that does that for you but to install create react app you have to use the Create Create React app app. I love this idea. Not bootstrapping a compiler, bootstrapping your bootstrap system. It's just factory factory, abstract factory factory all over again.
Starting point is 00:43:00 Yeah. For what it's worth, I did pop in, I copied and pasted some Intercal to chat GPT for, and it could not explain it to me. Now you should copy and paste it into Donald R. Woods and James M. Lyon and see if they can explain it for you, because I bet they couldn't either. I'm sure there's somebody out there that fluently reads intercal i'm not that's that's a bold prediction jimmy that's the most cancelable take on this entire episode you're sure that there's somebody out there who can fluently read intercal yeah i think i have something on that uh-oh yeah
Starting point is 00:43:41 there's there was an interview with one of them not james the other one Yeah, there was an interview with one of them. Not James, the other one. Donald. There was an interview with Donald, and he said, quote voice, I don't feel like I have a following, though every once in a while I do get caught off guard by someone turning out to be an enthusiastic Intercal geek. Occasionally, Intercal style guides appear as a joke on some companies. Like he said that there was one at Google alongside guides for C++, Java, and other languages.
Starting point is 00:44:11 So I think there are small pockets of intercal enthusiasts out there. I mean, people can read APL, no problem. Or sorry, Apple. Apple, yeah. Right? And that has a bunch of symbols, and you have to memorize a bunch of stuff. I feel like there's definitely somebody out there.
Starting point is 00:44:27 And I'm sure there are productive programs that somebody wrote in InterCal as a joke, as a way of spiting their coworker because they didn't want their coworker messing with their program. I hope, this is a hope, I hope there's like an important business process out there somewhere that is an intercal program that runs daily that like keeps this you
Starting point is 00:44:54 know billion dollar business uh propped up i've seen code that's just as bad i worked on a code base where i kid you not the program did did nothing in its normal text, right? So it was a C-sharp application, and it was the craziest class hierarchy you've ever seen. I think the highest level of inheritance depth was 14. But every single method in every single file of this big hierarchy was empty. They all did nothing. And you open this up and you think it's a joke. Like, why?
Starting point is 00:45:33 Why would there be these methods that do nothing? And it's because that was the structure they were going to use reflection on in some other program. They would include this library. They would build up this big hierarchy they would do reflection and then they'd make a pipe delimited string that they'd send over a socket and so like that's how this guy always programmed like this was all his stuff was like weird where it was just like this crazy nested, complicated mess that then like did one little thing over here.
Starting point is 00:46:09 And it would be so confusing to read. I think he went for the maximal surprise every time. So like you'd figure that out. Oh, okay. So it was like a bit. Yeah, it really had to be. Like there's no way it's not. You would figure that out and then you'd go into the next line of code, and it's literally, I'm not joking, it was copy the whole entire database and filter anything out that's before the launch date of this application.
Starting point is 00:46:35 If somebody like this exists, someone's got to be out there slinging intercal day to day, and nobody has any idea. If that person is you you please get in touch yeah yeah come on the show we have some questions okay so i i have some questions i have some specific questions that i would like your help answering so you've both read the paper presumptuous but okay i'm gonna be honest i did attempt to actually go through this paper and then jimmy derailed us and then lou derailed us and so i'm i'm i'm i'm gonna be the villain here and say i tried listener i tried to get us to seriously reflect on this paper and my co-hosts here just wanted to have fun and goof around and make some kind of weirdness and i was
Starting point is 00:47:21 trying to do like a like a serious educational product so i was going to go through the statements next forget resume stash retrieve ignore remember abstain reinstate give up those are the statements that you can use in intercal and they're basically all go-to or don't go to in some fashion or another uh like for instance give up is the one you use to terminate so it's like go to nothingness abstain is like hey if you encounter this other statement don't execute that statement so you can say please abstain from stashing and then if somebody some other line of code does a stash it just skips that line yes i know i'm simplifying and skipping some of the details you don't have to be pedantic i see the face you're making jimmy um and then you can
Starting point is 00:48:11 reinstate which is the inverse of an abstain so if you do want to stash now you can say please reinstate stashing um but this one i have to pause on because the documentation is very clear that we're getting into the the documentation is very clear. We're getting into the details. The documentation is very clear on the arguments that abstain takes. So it either takes a line label or a garoon. I never know how you say this word. Gerund.
Starting point is 00:48:36 Gerund. I've always seen it written. It's when you take a noun and turn it into a verb by putting ing at the end. So if the statement is stash, you turn it into a gerund by saying stashing. A gerundless. No other form of argument is permitted. For example, the following is an invalid argument. Now this is the best, this is the best argument I have seen, and I just love this. And it might not translate as well into audio, but I don't care because I have to read it. Okay. Given x does not equal zero and y does not equal zero, prove that x plus y equals zero. Now, you might be thinking that's not possible.
Starting point is 00:49:22 Like zero plus zero is zero. But you can have like negative 5 and 5, right? And they could equal 0, right? You add them together. Cool. So, since x does not equal 0, then x plus 1 does not equal 1. Okay. x plus a does not equal a.
Starting point is 00:49:37 Mm-hmm. Good. And x plus y does not equal y. Great. But what is y? Why is anything but 0? Thus, x plus y does not equal anything but zero and since x plus y cannot equal anything but zero x plus y equals zero qed just just like clap like this is a this is an invalid argument to to reinstate you can't pass this argument to reinstate you can't pass it to
Starting point is 00:50:06 either abstain or reinstate but it's a great argument and you should use it uh daily it's an invalid argument but that's what's so good about it it's the best invalid argument to reinstate but it's a valid argument otherwise prove me wrong so i had that highlighted in yellow because i knew you were gonna read it i also had a highlight in yellow because i knew i was gonna read it oh lou did you have it highlighted in yellow knowing that your colors are different from our colors i i had it highlighted in green because I highlight everything in green. If I like it, it's green. If I don't like it, it's green.
Starting point is 00:50:51 And if Jimmy's going to read it, then it's also green. That way I'm always right. That's a good point. Yeah, the safest move is to highlight the whole paper. Yeah. I had some questions about the statement design that i wanted to ask because i think it would be helpful for other folks in the community when they are designing their own intercal-esque programming languages to kind of understand the the design space here in intercal
Starting point is 00:51:18 so why does remember counteract ignore so if you say like do ignore some variable names so if you have variable one two three and you say do ignore one two three and then later on you try and add one two three and four five six it's going to not do that addition so that's ignore and then remember reverses the effect of ignore then there's also forget which is um uh oh yeah so when you right okay okay okay i mean it's obvious i don't know why you're having to look this up all right so i've i've the problem is i've written this uh this this question backwards so i will read it back to front and that will make more sense. So there's the statement next,
Starting point is 00:52:07 which is like a jump to a subroutine kind of thing. You say next and you give it some number and it's going to jump to that statement label. So if you say, I have, you know,
Starting point is 00:52:15 statement label, you know, blah, blah, blah over here. And I say next, blah, blah, blah. After that next line executes, it's going to jump over to blah, blah, blah and continue execution from over there. And so let's say you do your little jump thing and then you can um come back from a jump by saying resume and so the way that that works is when you next there's a little stack that remembers like hey where were you when you nexted and then you can say resume
Starting point is 00:52:41 and it jumps you back to where you came from by popping off that stack but you can also say forget which is you know pop off that stack but don't go anywhere so it's like you can jump around and then forget where you came from and so we've got next and resume are sort of for jumping back and forth and then forget is for saying like don't don't do any more of that jumping back uh and then we have ignore which is like don't manipulate this variable. And then remember, which is like, no, actually, wait, do manipulate that variable again. So we've got forget counteracts next and resume and remember counteracts ignore. Doesn't that confuse you?
Starting point is 00:53:20 Because wouldn't you find it more sensical if forget and remember were the ones that were connected and then there was some other word for countering a next and resume like maybe like don't go back or something like that and go back instead of resume yeah i i found that part of the design of intercal confusing is that they remember and forget are unrelated concepts i have to be honest ivan just hearing you say that really put me into some sort of trance like state where i thought i was in an intercal fever dream um but to answer your question i i forget um what i was gonna say about that so and i would relive that whole thing if i could you'll get the chance so
Starting point is 00:54:08 if if i'm gonna you know be more pedantic than you uh then i can continue on this so next and resume are the two pairs right forget is kind of separate from that. Forget happens to do some stuff with Next, with stashing. No, not with stashing. Stashing, well... Sorry, sorry, not with stashing. My bad. Use the wrong words. With the stack.
Starting point is 00:54:34 With the stack. With the stack. It happens to do some stuff with the stack, but it's a little different than that because Resume doesn't take an argument. Just like Next jumps and then resume is pop off the stack from the next forget is more complicated agreed sure cool then we got ignore and remember and so your question is like why not forget and remember and it's because there is no if you forgot something how are you going to remember it right you can't if you're ignoring something i can remember the thing i was ignoring because i
Starting point is 00:55:14 still have it in the back of my mind right i'm ignoring it it's a choice if i forgot there's no way to get that back. Well, if you're ignoring, the thing that counteracts being ignored, maybe it'd be like apologize. Like you ignore these variables, and then you apologize to them, and that means, okay, now those variables are allowed to participate in your program again. That's what I'm thinking. It's not that you think that you're sliding these things
Starting point is 00:55:47 maybe they want to be ignored maybe they're that emo kid over in the corner who doesn't want you to talk to them right now because they're they're listening to their music in their head i ignore stops effects from happening to variables. Maybe I don't want to be affected. Do you just assume you have to apologize for not affecting me? That is, I mean, that just seems very rude of you, Ivan. I'll figure that out. I think if I get, if I,
Starting point is 00:56:28 the thing that I want for sure, the thing that I want for sure is I, I don't have, uh, an intercal REPL. Uh, but one of the ones that I wanted to test is, so it says that you're not allowed to say,
Starting point is 00:56:44 do abstain from giving up like that's not accepted and i think i figured out the reason why um it's because it wouldn't be do abstain from giving up it would be do abstain from give upping and so i'm curious if we could like, if we had a REPL or if we had a Lion or a Woods, if we could say do abstain from give upping to it and if that would work. There's an online... Yeah, do... So you want do abstain from give upping? It's a grammatical error when they say do abstain from giving up. I mean, that's a tricky one to debug even if you have access to a REPL, right? Because as we all know, any invalid lines of code just get ignored.
Starting point is 00:57:33 So how would you, you'd need to put something after it to fully test this, right? Yeah, like remember, and then whatever that statement was, because if it gets ignored, then you counteract the ignore with a remember. Absolutely. So I got an undecodable statement has been encountered in the course of execution. When I did do abstain from give upping. That's unfortunate because that is clearly the pattern that the gerundification implies uh should be correct in this circumstance now what let me see so do abstain from get give up what was it said
Starting point is 00:58:14 what did it say was invalid do abstain from giving up which is grammatically meaningless uh yeah same error for what it's worth okay can you Can you try, please abstain from please? Sorry, hold on. My program is overly polite. I've got to fix that. I get the same undefined error. And if I type in I for gore, no, sadly, it also does not recognize for gore. I've got one more for you to test, which is, so you know how you can put N apostrophe T at the end of do?
Starting point is 00:58:54 So you can say do, and then you put N apostrophe T, which makes it don't, as in like don't. So you could say like, don't give up, like that. What if you put N apostrophe T at the end of please, and so you get pleasant? So you could say pleasant give up. So first off, when I said don't give up, I got the program has gotten lost on the way to who knows where. Ah, nice. So that's nice. And then, hold on, pleasant.
Starting point is 00:59:25 Spelled P-L-E-A-S-E-N apostrophe T. Hold on, I gotta remove another. I'm still overly polite because I have a new please. I think it worked. I don't know what it did. All right, so you can say. But it doesn't give me an error there. So the nice way to say don't is to say pleasant.
Starting point is 00:59:49 I like that. That's a very nice feeling language detail. So my favorite is, which I don't know how to recreate, but my favorite error in here is that if you overflow the stack... Yes. error in here is that if you overflow the stack uh yes a program attempting to initiate an 80th level of the next stack will result in the fatal error message program has disappeared into the black lagoon uh meta note i think that's how we should end the podcast. Like we got to somehow like go up 80 levels.
Starting point is 01:00:31 Cool. Yes. Oh, no. Because that's going to be me having to do that. Oh, no. That sounds hard. Yeah, because I think the most we've done is four. I think we've done four levels of meta commentary.
Starting point is 01:00:51 This is going to top that, but that's 80s a lot. I feel like we need to, I mean, sorry to interrupt, but just to remind you of what I was saying earlier. So far, I don't think we've quite matched the fourth wall breaking of the paper. We've had a good chat. We've talked about our feelings, which is nice. But I don't think we're... Ivan, come on. I've listened to your podcasts.
Starting point is 01:01:20 Some of them go really, really weird. To match this, it needs to be a lot weirder basically would you like to respond to that? would I like to respond to that? uh yeah thanks Lou that's all well and good but
Starting point is 01:01:41 it's quite awkward recording these things what if it all falls flat? at the end of the day but it's quite awkward recording these things. What if it all falls flat? At the end of the day, if the jokes don't land, then we're just... What do you... Come on, try my best here. I'm a frequent editor of your podcast, Future of Coding, and I often struggle to... Future of Code. Sorry, Future...
Starting point is 01:02:16 You sure? Future of Code? I mean, that's how most people refer to it in my circles. That's something we should probably work on. Yeah, when editing your episodes, I'm often struggling to come up with ways to make them sufficiently weird. And I'm just, I'm wondering if you have any ideas for things that we can do. I guess the main thing that I think is important to think about when you're trying to do some sort of meta commentary is figure out what do you think what do you want to say you know this this paper is a bit of fun but they had something to say about the programming languages of the time you've got very strong
Starting point is 01:02:59 ideas about programming and what it should be like the uh the little tool that you refuse to say the name of that you're working on little tool do you not just want to say the name and say what you think programming should be this is good i'm gonna actually uh i'm gonna take this and do stuff with it you see how he still dodges the question right every time you try to get him to talk about it i do this there's been a couple ones that have just been edited out oh yeah where i try to to go to him to talk about his own thing they're not edited out they're in the warm hole and in fact let me uh let me just check my astrolabe don't, which still hasn't happened. It's never gonna happen. The wormhole The blood thing. At the time of
Starting point is 01:03:51 releasing this episode either is opening soon or has opened recently. Connect the umbilical cord to this little mechanical arm. As you get close to the ghost the baby starts getting stressed out and crying and you have to take it out and kind of... See, you could be doing a meta thing there.
Starting point is 01:04:09 Like, whatever you want to do with what I just said. And then I could literally just come and interrupt that thing and say, Sorry to interrupt, Ivan, but I can just tell you're trying to avoid this topic by adding in some more, like, meta layers to try and shield yourself from talking about this project. I mean, now's your time. Now's your moment. The thing that really pains me about having to edit this and put this together is that at some point it's inevitable that I'm going to have to explain the bit or explain the joke.
Starting point is 01:04:45 And the problem with explaining jokes is it's like dissecting a frog. And I feel like that topic today with our guest Lou is verboten. Like it is not a topic that we should discuss. We shouldn't discuss the dissection of frogs, the explaining of bits, the explaining of jokes. I think that would be something that hits too close to home. It would be too personal. And I don't know that this podcast has the emotional valence. I don't think it has the potential emotional energy to convey that sort of nuanced discussion,
Starting point is 01:05:22 that sort of feeling-centric discussion. Even though we try to talk about our feelings on this show, and ultimately that's what programming is about, is about feelings. I don't think that this is the episode where we can do that because that would hit a little bit too close to home. Lou, I have a question for you. Why did you call it a podcast instead of a pondcast?
Starting point is 01:05:44 No. No. No. No. No. Jimmy, no. I'm trying to make I'm trying to make I'm trying to make what some people would call art.
Starting point is 01:06:03 Yeah, and I'm helping. Yeah, I'd call art. You know know what i think i actually have uh i have a github repo with things i want to make and i think pondcast has been in there for a while now ah yeah just for the name alone you know yes yes you know i i hear that, Ivan. I hear that. And, but you know, there's part of the fun of listening to these podcasts is like almost the intrigue around it. The weirdness and the crypticness of the, I really enjoy that. Like if I ever discover a podcast
Starting point is 01:06:38 or a YouTube channel where not everything is revealed, it just makes it so much more intriguing. And trying to like carve your way through that as an editor and to just decide what to show and what to not anyway this is getting this is this is getting really meta right now this is getting self congratulatory um because you're on this now so oh yeah no no no it's downhill from here yeah before you came on lou this was starting to be like Lost, where maybe there was some mystery or something going on,
Starting point is 01:07:08 but it wasn't building towards anything. And now it's building towards something, right? And now there's a smoke monster. Yeah. And a polar bear. The future of coding is a smoke monster. Yeah. Oh, those are Lost references.
Starting point is 01:07:22 Sorry. Have you seen Lost? I watched the first and the last episodes. Are you serious? I've seen the entire series twice. The entire, all seven series, I've seen it twice. Did you actually watch the first and last episode? So this is a thing that I do with TV shows.
Starting point is 01:07:41 I watch the first and the last episode. That's how I tend to. I've done do with tv shows i watch the first and the last episode that's that's that's how i tend to i've done this with multiple shows so is that what you recommend for this podcast uh yes listen to the first episode with steve and then listen to whatever the most recent episode is every time a new episode comes out go back and listen to the intro with steve and then the new one it's like the pickled ginger have you uh have you ever seen that film memento yeah but i watched it backwards so that the story would make sense so memento it's like they keep flipping right between the start and the end and i think that's
Starting point is 01:08:17 basically how i've listened to the future of code ding podcast listen i listened to the first and the last and then the second and then the second last and it surprisingly works well highly recommend it podcast has disappeared into the black lagoon don't know how it happened but i found myself in the middle of a psychedelic freak out in a parking lot of the Bank of America. I'm going to go to the beach. okay uh do you know what this is this is a tier list thank you lou yes ding ding ding ding ding coding coding coding that's gonna be my new dinging is is coding would either of you care to describe what it is that i am dropping into our tier list? Well, so these are all like features of Intercal. These are all the weird things in Intercal.
Starting point is 01:09:51 Specifically, they're symbols. These are all the symbols of Intercal. And so I am pasting them in with the symbol itself, with the name of the symbol, and for some of them even what it does. And I think right off the bat, I'm going to have to take Skiggle and put that up in S tier. I think Skiggle is probably my favorite of the symbols in Intercal. Sorry, Jimmy, what did you say? Squiggle? No, I'm sorry.
Starting point is 01:10:17 It's Skiggle. It is spelled S-Q-I-G-G-L-E in the Intercal paper and i believe pronounced skiggle uh it's the what you may know as the tilde character on your keyboard did they give a pronunciation guide or is this some canadian thing that i'm unaware they did spell it s q-i-g-g-l-e and in the paper they put a s-i-c sick after it to let you know that, yes, in fact, it is Skiggle, not Squiggle. That is directly from the paper. But it doesn't say how you pronounce it, just how you spell it. Sure, yeah.
Starting point is 01:10:52 I just assumed you'd say it, Squiggle, spelled incorrectly so no one could ever write it properly. So this kind of debate definitely does take some of the shine off of Skiggle. I'm going to have to bump it down to a tier unfortunately lure any of these uh any of these sigils resonating with you there are actually two that when i read those immediately now they're on another level the one the first one that really got to me was v right it's it's it is just a v the v is exactly what it says on the tin the v is a v there's no special name for v it's just v there's a there's another one i that plays with the format a little bit wax wayne pears there you go there's wax wayne pair up at the top kind of by the what operator which you may know listener as question mark in intercal the
Starting point is 01:11:45 question mark is called a what yeah i think wax and wane pairs do have to be an s tier i would agree wax wane pairs are two brackets or parentheses except all of these symbols are presented in parentheses so what we end up with is parentheses inside parentheses, instant S tier for me. Yep, that's a great point. I think the two spot colon, maybe people are going to disagree, but I feel like that's like C tier. What makes you say that?
Starting point is 01:12:19 So here's why. So spot, I think maybe goes a little higher. I like the spot. But two spot is a clever name, but the syntax for how you use a two spot almost feels too normal. Like a colon, introduce a variable, it feels lame. So personally, I would put the two spot in a C tier. It's definitely syntax that I've seen before in other programming languages. Yeah, exactly. Used in a similar way.
Starting point is 01:12:48 I don't care for that one too much. Now, I got an S tier. Ah, yeah, what's that one? The 007. Oh, classic, yeah. Love 007. The 007 was by far my favorite. If I had another tier above S tier,
Starting point is 01:13:02 I would put it there. Oh, well, put it there. Let's do that, yeah. That's the invisible the invisible unlabeled doesn't have a name tier that is better than s tier so 007 is what you know normal people might call a percent sign but like come on 007 that's just that's just so good and you would never guess it but as soon as you hear as soon as you see it you're like of course it's 007 i'm actually gonna put embrace down in e tier because and you know what actually no it's going all the way to the bottom embrace which uh pedestrians out there might know as the uh open curly brace it's the the sigil of the bad languages it's the death sigil it's the sigil that you know sort of precipitated a lot of the decline of programming as a practice it's the sigil that made things worse
Starting point is 01:13:52 but the bracelet the closing curly brace i'm putting it d tier and it's you know ranked higher for me first of all because it's the one that that most irritates me about textual programming, right? If you have the correct brace writing style where it's in line with the statement that opens the block, your opening curly braces aren't annoying because they just go with the if or the for, but your closing curly braces, those are the ones that make your text code nightmarish. And I think that that pressure, that feeling that text code is so disgusting and not worth writing, really comes from the languages that put those curly braces on their own lines. So the bracelet, immediate D tier for me. I think the only reason you did this
Starting point is 01:14:38 was so that embrace and bracelet would be incorrect. So I'm going to also- Because they're like, you close before you open that's the only reason you did this on the tier list because everything you said about bracelet means it should be an f tier but you just you you really did not want to make the braces open and close properly so i think you've you've made a very good point there jimmy and that that convinced me um you turn the opening square bracket e tier easy you turn back the closing square bracket definite c tier definitely two tiers above uh you turn back as a b tier to me i think it's better than the two spot yeah that's a
Starting point is 01:15:20 good point definitely better than the two spot yeah and. And it's a nice name. You turn back. I like that. It's got some positivity to it. Yeah, that's good. I can appreciate that. What are your thoughts on rabbit? Can I get your thoughts on rabbit? Love it.
Starting point is 01:15:34 Love rabbit. Yeah. Love that the combination of rabbit ears and a spot together make a rabbit. The fact that you couldn't even type it on our tier list, which I'm sure we'll share with people, just goes to show how advanced the symbol is. And it just reminds us that all of these symbols that we use in our day-to-day life, they're all just made up, aren't they? Someone just drew them. But they're made up things for people. They mean something to people.
Starting point is 01:16:03 And rabbit means something to me because rabbit. Yeah. You know, rabbit means something to me in the way that mesh doesn't. Mesh, immediate F tier. Yep. And for people who don't know what mesh is, you might know it better as the octothorpe. No explanation. Immediate F tier.
Starting point is 01:16:20 Mesh, get out of there. You know what's even worse? I was writing up these sigils in a markdown aware editor and mesh of course rendered as a title instead of rendering as a sigil f tier no question and i guess we didn't explain rabbit rabbit is the the conflagration which i know is a word that means fire uh it's the conflagration of a uh a double quote and a period placed one over top of the other. Now, I have to ask. We have a lot of worm-themed things here.
Starting point is 01:16:50 Oh, yeah. I love the wormies. The wormies. So we got worm. We've got flatworm. We've got hookworm. We've got bookworm. How are we feeling about the worm family?
Starting point is 01:17:08 For me, I would place them in the worm tier right over here oh yeah is that that the wormhole uh yeah yeah sure yeah sorry does tl draw support mp3s because i might have something to add to the wormhole tier discussion of a programming language which shan't be named yes tldraw does support mp3s as of the release of this podcast yes whoa but not not when it was recorded unfortunately oh that's too bad but the good news is that this podcast supports tldraw yeah this episode brought to you kind of inadvertently by Tialdra. Hi, everyone at the office. Spot, I feel like... Okay, so just the name, it's like, it's okay. It's a dog, and that's nice about it. But I love the way it plays in the language.
Starting point is 01:17:58 That it is intentionally ambiguous that you're not making floating point operators. And that you can pretend you are right like i i feel like for that reason alone it's got to go in a tier not quite an s tier but it kind of starts us on this journey and for that you know being the original punctuation the op you know i think that that is important yeah uh to to channel uh lady m i would say up damn spot up i say a tier sounds good to me so sorry for the shakespeare references on this podcast there will be no more of them now this exclamation mark bang or whatever you call it for me and it's just called wow which is pretty great and the fact that you can also break it down into a combination of spark and spot makes it quite an impressive symbol.
Starting point is 01:18:52 There's a few different ideas going on here. And also this exclamation mark, it's a symbol that sort of relates me personally. I have a little joke programming language that will not be named on this podcast that uses heavy use of exclamation marks. And so I'm going to place this into like a personal beat here. Oh, that's nice. Yeah. I also very much agree personal programming languages are not to be named on this podcast. Yeah, no, no.
Starting point is 01:19:21 If Jimmy ever makes a programming language, he will not be allowed to name it on this podcast. It no if jimmy ever makes a programming language he will not be allowed to name it on this podcast it will be called listener you don't realize it but i just edited out what jimmy said so there's there's a just a weird silent hissing noise there jimmy didn't know about but you do i don't even remember this gets calculate arrow thingy here yeah that's going in f tier oh no that's actually it has to go worm tier because it's the overpunch of a worm and an angle but it's not called a worm it's not called a worm if they called it the the decompose right then it would be like something oh you know what you know what i've got it it goes half in worm tier and half in b tier because it's like a worm that
Starting point is 01:20:12 got stuck in a bottle uh and so i'm i'm putting it uh b for bottle worm for worm okay okay ampersand f tier oh yeah ampersand f tier uh-huh it knows what it did overline should have been called overworm oh yeah what a for that reason e tier what a lost opportunity same with backslat and slat those should have been like worm climbing up and worm climbing down definite e tiers i think i'd like to put shark in d tier because it's blue like the sea oh that's nice yeah yep in fact would you mind if i pulled shark just up to the top of d tier so that the fin is poking up into c tier yeah that's good that's good yeah and uh splat here is falling down into the sea oh Oh, yeah. And it's going to make a splat. Or like it just like impact.
Starting point is 01:21:09 Yeah, that's nice. Yeah. Yeah. I'm going to give one of the worms a tail. Spark is yellow. Sorry, which one's spark is yellow tier? Because it's yellow. Yeah.
Starting point is 01:21:20 Yeah, because like electricity. Or I mean, it could be very sparky and it could go to the S tier, but I feel like that's wrong. Yeah. Yeah. That of electricity. I mean, it could be very sparky, and it could go up to the S tier, but I feel like that's wrong. Yeah, yeah, that's too... S does not stand for spark. I feel like change should at least go below big money. So I'm going to put that in the one below big money in the E tier. Ooh, I've got a counter-argument to that one, Lou.
Starting point is 01:21:40 I think change should actually go S tier s for state uh because uh state change is the thing about programming that makes it so good and um the embrace of state and the embrace of mutable state in particular or it could go in the o tier for obama so stupid. Yeah, yeah, I think we need an O tier. All right, we got two left. Oh, no, you're making an O tier. I'm going to do the what,
Starting point is 01:22:23 and I'm going to put what in the F tier because what the F? Okay, and then our final one is spike yeah you decide what to do with that Jimmy well Lou and I make a rectangle that is half blue and half red and put change in it right that'll do
Starting point is 01:22:41 there we go I put spike in the spike S tier in the spike us tier uh-huh spike s tier nice okay and now we have a little red and blue split down the middle obama tier here yep lovely beautiful yeah with change kind of going in between it this is a great thing that we've created thank you uh-huh-huh. Yeah. This was wonderful. I don't know why we don't do more tier lists in a podcast. On a podcast. Yeah.
Starting point is 01:23:12 Yeah. Audio tier listing. All right. So I've got one more exercise for us to do, and then we should probably call it because this is accidentally turning into a long episode. How did that happen? You let it get down. Ivan's like,
Starting point is 01:23:28 he'll be like, we need to keep episodes shorter. And I'm like, okay. And then I'll be reading through and I'm like, these next sections are not that interesting. And Ivan's like, I have like 12 things to say over these next sections. I don't want to be like, maybe I should, but I don't want to be like,
Starting point is 01:23:44 Ivan, you said you wanted this to be shorter. We're three hours in. I was trying to wrap it up, and he just keeps going. He's going to do some editing magic. Editing magic will pull through in the end, yeah. I'll be able to surgery this into a coherent shape. If you can believe it, this will come out being coherent. Yeah.
Starting point is 01:24:03 I'm always amazed. I don't think Ivan changes too much of the trajectory of our conversation, but we've had so many technical issues before that I'm just impressed with how, like, cohesive Ivan always makes these things. I have literally done the thing where I've re-recorded things. Like, I've re-recorded some of my own dialogue. Oh, yeah, yeah, yeah. Well, you know, there's the one where I ask you about intros and then you, you know, re-recorded yourself and re-recorded yourself and interrupted yourself.
Starting point is 01:24:31 So Jimmy's question is poorly formed because it assumes that there's some sort of motivation for doing things differently on this show, which of course there isn't. I thought this was a perfect paper to have this sort of meta discussion because this paper does. But then I said, oh, that really helped me understand why you do this, Ivan. But I had never heard the explanation, the audience.
Starting point is 01:24:54 The thing you were responding to. You know, it's even more impressive when he when Ivan re-records Jimmy's part. Yeah, I know. Yeah. When I do my spot on Jimmy impression. I've been waiting for that. Yes. Yes. I've been waiting for that at some point. Put words in my mouth. For the listener looking to become more familiar with the Future of Coding podcast, we present in this section an analysis of a complex podcast, as well as some suggested podcasts for the ambitious listener.
Starting point is 01:25:26 We're not actually presenting an analysis, are we? Well, so, yeah, so what's going to happen following this is... Oh, I see! With us talking about... Oh, great! I think one of the themes is going to be, like, this is a hard podcast to listen to, but it should help you in listening to other podcasts as well.
Starting point is 01:25:47 Well, I could carry on with the mimicry of what's in the paper a little bit then. Just analysis. We shall not attempt to discuss here the algorithms used, but rather we shall point out some of the general techniques applicable to a wide range of podcasts. If you want a more serious take about Hintergal, out some of the general techniques applicable to a wide range of podcasts. and how they work and et cetera. I'll probably splice that in like at the peak of our most meta when we're discussing like what even is podcast. Yeah, I can see that. Oh my God.
Starting point is 01:26:34 Podcasts will often invite you to write in with your questions and feedback. Because this is one of the things that podcasts do. Like on our last episode, I really enjoyed how we spent the first part of the episode reflecting on that feedback that personal dynamic media sent us. And so that's like one of the things I've really enjoyed is that more and more people are writing in with feedback now. me on mastodon and they're writing us emails at the future of coding uh email address which is uh jimmy miller uh at twitter.com i don't remember what i don't remember what our email is i don't know have access to that email you're you're at twitter on future of coding is that what somehow people get us with feedback i was gonna going to be like, dear, here's a question from a listener. Dear Ivan,
Starting point is 01:27:27 what is blood bloody thing? What was that? Cause that's the question I still have. Why would you throw bags of blood at a beach thing? Yeah. Sorry. Beach thing. What,
Starting point is 01:27:41 what was that? Yeah. Yeah, it was. Uh, okay, cool. That okay cool that's that's um good enough i will make that work amazing i trust you that's the funny thing okay so the next thing uh lou that you're gonna set up for us is one of the things that people often do on podcasts is request that you support them on patreon now this one's interesting because jimmy and i don't have a patreon and you do i do yeah so i want to find a way to make it about that right uh oh so yeah do that set that up plain and then i'll rope jimmy into a conversation. And Jimmy, I'm going to rope you,
Starting point is 01:28:25 like the thing I did where I was talking about like, hey, I enjoyed on our last episode that Personal Dynamic Media wrote in, like that was me being sincere. And that's, I'm going to like go from, I don't have a good way to do this. I don't have a good way of signaling to you like when I'm being sincere.
Starting point is 01:28:41 Oh, so if I'm holding the krill, I'm being insincere. And if I put the krill down, I'm being sincere oh so if if i'm holding the krill i'm being insincere and if i put the krill down i'm being sincere okay so if i'm holding the the krill uh making a podcast is hard and costs lots of money so you can help by supporting your favorite podcast on patreon all right so i'm putting the krill down so now you're in sincere no now i'm sincere oh really so we have been talking about starting a patreon yeah yeah do you think now would be the right time to do that i i don't know i I think that we've talked about what would go
Starting point is 01:29:26 on there. And I do think some people can see putting out a Patreon as a money grab or something like that. But I definitely don't see it that way. We stopped sponsorships. I know I'm not supposed to talk about that. But we stopped sponsorships just because it was like... I don't think we ever said that on the show. We fired our sponsors. Yeah, we stopped sponsorships just because it was like i don't think we ever said that on the show we fired our sponsors yeah yeah we stopped sponsorship just because it was too much of a hassle and it didn't really add anything to the show at least at the moment right we're not going to say like we'll never do it but
Starting point is 01:29:54 it wasn't it wasn't helping us produce yeah like if if dynamic land wanted to sponsor us that i think would be appropriate but oh there's a lot of uh low code as a service that wanted to sponsor the show and that's not what we're about so yeah yeah the as a service part just it does rub me the wrong way uh but it does take me dozens of hours to edit an episode and it does there's stuff like i there's audio equipment that i would like to buy that i can't really justify buying because it's like the show's not making any money but if i did have money i could buy audio equipment so I would like to buy that I can't really justify buying because it's like the show's not making any money. But if I did have money, I could buy audio equipment. So I do
Starting point is 01:30:29 feel like at some point it would be good to start a Patreon. At the same time, I think the other part of this is really that it's a venue for content for people who are more into what we're producing, who want that extra content. And that would be where we would
Starting point is 01:30:45 put that, right? So like, we've talked about like, maybe we have like a debate on is programming inherently spatial, right? Like that would be a, we wouldn't want to do an hour long debate on the podcast about that, because we definitely didn't. But, you know, a more in depth debate on that, that might be a fun thing. I think there's, there's ways we could expand the content we're producing and get people to be a part of these conversations and do more there. That would be nice. But I mean, like everybody's got subscription fatigue. Like for instance, one of the things that I have been meaning to do forever and haven't done yet is, um, do you know Lou Wilson? Do you know like Toad Pond? They do those YouTube videos. I watched Screens.
Starting point is 01:31:26 Oh yeah, that was good. That was really good. To this day, still that, like my wife will only watch those programming videos and not any other programming videos because they're all very, most programming videos are very boring,
Starting point is 01:31:39 but she really likes Toad Pond. So yeah, I do back Toad Pond on Patreon and definitely recommend doing so yeah yeah yeah their work is so good sorry to interrupt everyone no could i just say like just to be sincere i mean it doesn't have to be recorded but like you're not holding the krill you can be sincere that's true so i can't be insincere because i don't have a krill yeah exactly when i set up a patreon the main reason i did it was because i wanted to set up a little paywall and behind that paywall i could be a little bit more free with what i was sharing it's not really
Starting point is 01:32:20 for the money for me um and like patreon yells at me because i set my price at minimum are you sure you want to do this it says it like 10 times but just just having that slight barrier there i think has helped people to become a bit more invested and to be a bit more engaged with it to sort of like formalize that a little bit i was probably you know i probably mentioned patreon first when when talking to ivan because i always before being involved in the podcast wanted it to exist not because like i i so there's there's a podcast that i've listened to for a long time the partially examined life it's a philosophy podcast and well before patreon they had like was a thing they had a way of
Starting point is 01:33:04 supporting it and they kind of like try to do some some different stuff with it over time but I never got involved in like the secret discussions I never got involved in kind of the the like you could go talk to the community but I always loved the idea that I was supporting them and when I got my first programming job that was one of the first things I actually did was sign up for that service. So I could support them. And it was such a tiny thing, you know, I was doing like, it was like $5 a month or whatever. But I just didn't couldn't justify that before. And so for me, that's part of this point is like, I just find there's something nice about knowing even if you're doing it in a small way, supporting doing things you like yeah that's completely what i find yeah that's always been the desire for me is like i knew i wanted
Starting point is 01:33:50 that outlet and other people might also like um i find that what people want from like a subscription to me is often they don't want anything in return they just want to know that their money is going towards supporting it i often see my job is reminding people yeah yeah it is it is really helping you know so and it is so avid podcast enthusiasts savor their favorite shows by listening to them at 0.1 times speed we will now play the following audio segment at 10 times speed so you can practice finding the 0.1 times speed button in your podcast player. Please do test the skip forward button on your podcast player. This will simulate the experience of reading the paper, where, starting from page 16, several pages of Intercal's source code appear, which no reasonable person would ever be expected to read. To simulate this experience in podcast form,
Starting point is 01:35:09 Ivan will read these pages in their entirety now. Intercal, page 16, section 6, program listing. Line 1, 1000. Please ignore spot 4. Line 2, please abstain from one thousand and five line three one thousand and nine do stash spot one plus spot two plus spot five plus spot six line four do spot four and then the little angle bracket uh spike is that what it's called and then uh oh what's it called for the the mesh mesh one doing this from memory uh line five do one thousand and four next line six which is one thousand and four please forget mesh one
Starting point is 01:36:00 line seven do spot three spike, what's that line? And then the little thing, and then the upside down one, and then spot one, change, spot two, that one, skiggle, that one. And then the mesh, zero, change, mesh, six, five, five, three, five. And then, you know what? I got to look up what that one is. I keep calling it that one. What's the that one one, where's the page that has the, that one on it. Uh, is it all the way down here? Yeah, there we go. Not back spark. Oh, I guess that spark.
Starting point is 01:36:34 Is that what it is? Where's spark? Oh, I don't see spark on this list. Okay. Well, we'll call that spark. And you know what? Let's pick up from uh from here line nine skipping line eight because please do spot five spike quote oh the upside down a what's that it's a oh it's a worm over punched on a v what's i'm gonna call that worm because i can't remember what it's called And then a wow. And then six. Skiggle. Mesh. Three, two, seven, six, eight. Spark. Change. Mesh. One.
Starting point is 01:37:09 Rabbit. Oh, not rabbit. No, it's the, what is it? The ears? What are the ears called? The quote. Rabbit ears. Okay.
Starting point is 01:37:21 Yeah. The rabbit ears grouper. Groupers are really good musicians. Skiggle. Mesh are really good musicians. Skiggle, mesh 3. Line 10, do 1002 next. We haven't seen 1002 next. Line 11, do spot 4, spike, mesh 2. Line 12, 1005, do 1006 next.
Starting point is 01:37:42 Then line 13, which has a little star to the left of the line number, a little asterisk. Oh, there's no, there's no explanation of what that means. I'm going to assume that it means something important that I have forgotten. Oh, well, 1999 double or single precision overflow. Oh, cool. Wait a second. What does that even mean? I haven't seen those words. Maybe it's just ignored.
Starting point is 01:38:12 I don't know. Or maybe the fact that the first two letters are do. So it'd be do, double, or single precision overflow. Line 14, 1002. Do, 1001 next. Okay, so where's 1001? We haven't seen 1001 yet, okay. Line 15, 1006, please forget mesh 1. Line 16, do spot 5, spike, spark, verm, rabbit ears, wow, 6, skiggle, spot 6, spark, skiggle,
Starting point is 01:38:44 mesh 1, rabbit ears, change, mesh 1, spark, skiggle, spot 6, spark, skiggle, mesh, 1, rabbit ears, change, mesh, 1, spark, skiggle, mesh, 3. 17, do 1003 next, 18, do spot 1, spike, spot 3. 19, do spot 2, spike, wow, 6, change, mesh, 0, spark, skiggle, spark, 6 oh no 3 2 7 6 7 change mesh 1 spark 20 do 1004 next we've seen 1004 1004 is please forget mesh 1 oh then we are on line 15 which is 1006 please forget mesh one okay cool uh then line 16 do spot five spike spark verm rabbit ears wow six skiggle spot six spark skiggle, mesh, 1, rabbit ears, change, mesh, 1, spark, skiggle, mesh, 3. Line 17, do 1003 next. Line 18, do spot 1, spark, spike, not spark, spike, spot 3. Line 19, do spot 2.
Starting point is 01:40:03 Okay, this is a lot. We're just going to give me a head a little bit. Let's say 100. Do spot 1. Spike spot 3. 101. Please do 1503 next. I'm not reading the embrace and bracelet.
Starting point is 01:40:22 Those are silent. 102. Do spot 6. Spike spot 4. 103. the the embrace and bracelet i'm those are silent uh 102 do spot six spike spot four 103 do spot two spike mesh one 104 do 1009 next 105 do spot one spike spot three 106. Do 1,501 next. 107. 1,504. Please resume spot six. Oh, this one looks good. This looks like a good one. All right. Here we go. Line 123. Do, oh, what's the colon called? The colon. All right. We got to look this up and then we can go back and do that again. The colon... is called TwoSpot! Oh, of course! TwoSpot, how could I forget about TwoSpot? Alright, line 123.
Starting point is 01:41:13 Alright, here we go. Do TwoSpot1 spike rabbit ears, spark, vurm, rabbit ears, TwoSpot2 skiggle, spark, mesh, 65535, change, mesh, 0, spark, rabbitiggle, spark, mesh, 6, 5, 5, 3, 5, change, mesh, zero, spark, rabbit ears, change, mesh, 6, 5, 5, 3, 5, spark, skiggle, spark, mesh, zero, change, mesh, 6, 5, 5, 3, 5, spark, rabbit ears, change, rabbit ears, spark, verm, Rabbit ears. Two spot. Two. Skiggle. Spark. Mesh. Zero. Change. Mesh. Six five five three five. Spark. Rabbit ears. Change. Mesh. Six five five three five. Spark. Skiggle. Spark. Mesh. Zero.
Starting point is 01:41:55 Change. Mesh. Six five five three five. Spark. Rabbit ears. That was a great line of code. That's so good. All right, let's find another good one line 140 statement label 1525 do spot 3 spike Spark rabbit ears spark rabbit ears spark rabbit ears Wow three change mesh zero spark rabbit ears spark mesh 327 67 change mesh one spark rabbit ears change mesh zero Line 141. Please resume, mesh 1. Let's keep going. Oh, we haven't done any stashes yet.
Starting point is 01:42:51 Line 142, statement identifier 1530, do stash 2 spot 2 plus 2 spot 3 plus spot 3 plus spot 5. There's a certain musicality to intercal code that I like. Line 156. Do two spot two spike rabbit ears two spot two. Oh, you know what? They could really mess with me by putting a number two in front of a spot. So I would read that as two spot, but it's actually two spot, not two spot. That's how they get you.
Starting point is 01:43:27 All right, where were we? We were partway through line 156. Two spot, two, skiggle, spark, mesh, zero change, mesh, six, five, five, three, five, spark, rabbit ears, change, rabbit ears, spark, rabbit ears, two spot, two, skiggle, spark. Oh, and I haven't been looking for back sparks either. I got to keep my eyes open for that. Two skiggle, spark, mesh, three, two, seven, six, seven, change mesh, zero, spark, rabbit ears, change mesh, zero, spark, skiggle, spark, mesh, three, two, seven, six, seven, change mesh, one, spark, rabbit rabbit ears y'all ever listen to those number stations. That's uh, there's got to be like an intercal station that Wilco and boards of Canada can work into their upcoming albums. That'd be the real the real deep cut
Starting point is 01:44:15 Please line one six three statement identifier one five four zero, please abstain from one five four one No idea where that is. Yeah, there's a lot of do's and please do's interspersed in here. Oh, here's a new one. Line 195. Please retrieve two spot four. Line 200. Statement identifier 1543. Do 1001 next. Ah, we found another jump to 1001. Line 201, statement identifier 1544, do reinstate 1541. Line 202, please reinstate 1542. Line 203, please retrieve 2spot1 plus 2spot2 plus 2spot5 plus spot1 plus spot2 plus spot5. Line 204, do resume mesh 2. Line 205, 1550 is the statement identifier.
Starting point is 01:45:06 Do stash 2 spot 1 plus 2 spot 4 plus 2 spot 5 plus spot 5. Do to, oh no, do to 206. I will not be continuing to read that line of code. We will read 220 instead. Do spot 5 spike, spark, verm, rabbit ears, spark. Oh, the ampersand. What does the ampersand stand for? Ooh, right.
Starting point is 01:45:30 Oh, the V in the worm is called bookworm. Ah, there we go. Well, I'm going to call it verm because I like verm. You all familiar with the great director Vermer Herzog? Where's the ampersand? Um, oh, I don't have my handy intercal. Verma Herzog. Where's the ampersand? I don't have my handy intercal pocket reference that I really should have brought out for this circumstance. Oh, it's just called ampersand.
Starting point is 01:45:57 And it has the footnote, got any better ideas? These cats. Oh my goodness. All right, line line 220 we were at the ampersand ampersand rabbit ears spark two spot two skiggles two spot five spark skiggle spark rabbit ears spark bookworm yeah there you go rabbit ears spark bookworm rabbit ears two spot five skiggle two spot five skiggle oh, I said skiggle. I meant to say rabbit ears.
Starting point is 01:46:26 Oh dear, fix that in post. Skiggle, rabbit ears. Mesh, six, five, five, three, five. Skiggle, mesh, six, five, five, three, five. Rabbit ears, spark, skiggle, spark. Mesh, six, five, five, three, five. Change, mesh, zero. Spark, rabbit ears, change.
Starting point is 01:46:40 Mesh, three, two, seven, six, eight. Spark, skiggle, spark. Mesh, zero, change. Mesh, six, five, five, three, five. Spark. Skiggle. Spark. Mesh 0. Change. Mesh 65535. Spark. Rabbit ears. Change. Rabbit ears. Spark. Bookworm. Rabbit ears. Two spot five. Skiggle. Two spot five. Mesh. Skiggle. Mesh. Oh no, I've been calling them meshes. They're rabbit ears. 65535. Change. I give, this is like, this is absurd. Uh, there we go. Uh, line 254, which is preceded by an ampersand. Please note that you can't get there from here. Line 255, statement identifier 1912, do 1001 next. Line 256, 1911, that's the statement identifier. Do forget mesh 1, 257, please do 1900 next, 258, do 2 spot 2, spike spot 1, 259, do 1500 next, 260, do 2 spot 1, spike 2 spot 3, 262, do 1020 next, 163, please do spot 3 spike spot 1 264 do spot 5 spike spark bookworm rabbit ears
Starting point is 01:47:54 wow 3 skiggle spot 3 spark skiggle mesh 1 rabbit ears change mesh, mesh 2, spark, skiggle, mesh 3, 2, 5, 6, do 1, 9, 1, 2, next, 2, 6, 6, do spot 1, spike, mesh 1, 2, 2, 6, 7, please do 1, 0, 5, 0, next, 2, 6, 8, do retrieve spot 1, 2, 6, 9, do 1, 5, 3, 0, next, 2, 7, 0, nice, do 2 nice do 2 spot 2 spike mesh 3 2 7 6 8 2 7 1 do 1 5 0 0 next 2 7 2 please do spot 2 spike 2 spot 3 giggle spark mesh 6 5 2 8 0 change mesh 2 6 2 8 0 spark two seven three please retrieve spot three plus spot five plus two spot one plus two spot two plus two spot three two seven four do resume mesh one are you are you okay with this this uh this thing that we're doing oh absolutely i think the the the stranger and more unexpected the the better yeah i'm'm happy to be used. Yeah, I'm using you as a puppet a little bit. I am aware of that.
Starting point is 01:49:08 No, no, no. This is so great. This is very on-brand for me. Okay. To be used as a puppet. Yeah, yeah, yeah. Oh, yeah, yeah. Absolutely. Okay. And the only thing that makes me feel slightly less uncomfortable
Starting point is 01:49:23 using you in this way is that... A podcast is a hot medium, which means you have the opportunity to talk back to us. To talk back to us. Here, let's practice. Jimmy is going to ask you a question and then we'll pause for a moment. You answer and then we'll think about it. Other listeners will hear your answer we'll think about it. Other listeners will hear your answer and also think about it, assuming they're in the same room as you. Oh, hey there.
Starting point is 01:50:07 Come on in. Oh, what did you say? A clue? You see a clue? Where? Where's the clue? Oh, there! That is an in-joke. Ha ha ha!
Starting point is 01:50:30 Ha ha ha! Ha ha ha! That is an in joke. I like the bug no bug section on this paper where there's a fixed probability of a fatal compiler being worked in at random into your program. That's just such a good feature. Yeah, the default. You have to turn that off. I will attempt to insert a fatal error into the podcast. In keeping with how fatal errors work in Intercal, a fatal error in the podcast will be an error that causes the immediate termination of the podcast.
Starting point is 01:51:02 That is causing the listener to stop listening. Let's see what we can do to achieve that right now. systems in the business a few months ago it came I'm sorry. So there's a joke in the paper where they say, Since there is currently no catalogued procedure for invoking the compiler, the user must include the inline procedure shown on the following page in his job before the compilation step. Copies of this inline procedure may be obtained at any key punch if the proper keys are struck. Yeah, yeah. I like that joke, and I was trying to think of, like, a way that we could podcastify that joke. Like, copies of this audio may be obtained at any
Starting point is 01:52:44 microphone if the correct noises are sung aloud, something like that. Yeah, yeah, that's it. we could podcastify that joke? Like copies of this audio may be obtained at any microphone if the correct noises are sung aloud, something like that. Yeah, yeah, that's it. But then... Sung. Yes, yes. Hat on a hat. What is the something that you obtain?
Starting point is 01:52:57 To listen to your favourite podcast, simply search Future of Coding in your podcast player of choice. Copies of this audio may also be obtained at any microphone if the correct noises are sung aloud. Let's dive in. And there's a huge explosion at the end. If the iambic parameter has been requested when downloading this episode, the following block of podcast data will be delivered in prose.
Starting point is 01:53:36 Spark to spot. Rabbit, wow. Spot the tail. Backspark now. Half a worm. Wax and wane. Splat and squiggle slat abstain backslat whirlpool shark and blotch 007 a u-turn watch embrace the bracelet book of mesh flatworm half mesh please do refresh please forget please ignore please abstain, seek no more. Spark spot dances, U-turns grace, In this backspark tale embrace.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.