Future of Coding - INTERCAL by Donald Woods & James Lyon
Episode Date: June 1, 2023This 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)
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,
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
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?
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.
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,
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
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
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
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
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,
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
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
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.
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.
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.
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
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.
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
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-
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
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.
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.
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
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.
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
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
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
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
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.
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?
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,
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
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?
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.
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
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.
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,
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.
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.
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.
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.
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,
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.
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...
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.
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.
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.
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?
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.
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...
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
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.
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
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
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,
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.
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
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
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.
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
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.
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.
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,
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.
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
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.
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
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,
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.
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.
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
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.
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.
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
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
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.
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
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.
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.
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
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?
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.
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.
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
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
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.
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.
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.
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
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.
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
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,
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,
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
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?
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
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.
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
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
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,
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,
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.
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
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?
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.
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.
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.
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.
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.
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
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...
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
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
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.
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.
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,
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?
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.
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
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,
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.
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.
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
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.
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.
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.
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
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?
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.
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,
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
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
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
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.
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.
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.
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.
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?
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.
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.
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.
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
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.
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.
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.
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,
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
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.
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,
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,
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.
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.
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.
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.
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.
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.
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,
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,
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,
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.
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
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
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
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
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.
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,
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
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
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
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,
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
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.
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.
Rabbit.
Oh, not rabbit.
No, it's the, what is it?
The ears?
What are the ears called?
The quote.
Rabbit ears.
Okay.
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.
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.
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,
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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
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.
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
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.
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!
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.
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
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?
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.
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.