Future of Coding - Considered Harmful

Episode Date: September 29, 2023

Go To Statement Considered Harmful is a solid classic entry in the X Considered Harmful metafiction genre, authored by renowned computer scientist and idiosyncratic grump, Edsger Wybe Dijkstra. Surpri...singly (given the impact it's had) this is a minuscule speck of a paper, lasting only 1-ish pages, and it even digresses several times from the main point. Fear not! Jimmy and I spend the entirety of these two podcast hours thoroughly analyzing the paper, wringing every last drop of insight from it, speaking directly to how programming ought to be reimagined from the molten venture capital core on up. Yes indeed, this is another episode in the fine tradition of Future of Coding where we stay faithfully close to the text, we leave the second-order implications alone, and there's nothing more than that. Nothing portended, nothing changed. Links => patreon.com/futureofcoding Hest, which Jimmy is convinced that I refuse to call by name, or even talk about. He's clearly mistaken — and yet, I feel his philosophical force on my hand even now. Conundrum considered harmful. "All Cretans are liars" doesn't have quite the ring of "dipping their breasts into the ripper", and is considered harmful. Dijkstra's The Humble Programmer considered harmful. Hoare's The Emperor's Old Clothes considered harmful. Letter O Considered Harmful considered harmful. “Considered Harmful” Essays Considered Harmful considered harmful! Scolds! James while John had had had had had had had had had had had a better effect on the teacher considered considered considered considered considered considered considered considered harmful. Proximity to Chomsky considered harmful. Interlisp, an early lisp featuring the ] super paren, considered harmful. The opening segment of the "I Want to Half-Believe" episode of Very Bad Wizards considered harmful. The Witness considered harmful to our show notes. Delimited Continuations considered harmful. Notation as a Tool of Thought by "Kenneth E. Iverson considered harmful." The Zen of Python considered a great honking idea. Chunky Bacon considered harmful. Copilot considered harmful. Charles Babbage's Bridgewater Treatises considered harmful. North & Whitehead's Principia Mathematica considered harmful. The Sailor's Chorus from Wagner's The Flying Dutchman considered harmful. PEP 8 considered harmful. There are dozens of us considered harmful. TC39 actually considered harmful. Bifunctors considered harmful. Chocolate Radiolab considered one of the only good radio shows, because it's pushing hard against the norms of its medium. UBI — consider it! Forking The Queen considered harmful. The Semantics of Graphical Languages, the paper about a visual formalism for visual programs, considered harmful. Music featured in this episode: Lemon Wagner Lu, Devine, William, Alex and Alex, Justin, Marcel, Peter, Matt, Blaine, Kevin, Nicki, Mae, Kate, Steve, Mitja, Philippa, Max, and everyone else who secretly said it like a swearword. Get in touch, ask questions, don't ask questions: Ivan: Mastodon • Email Jimmy: Mastodon • Twitter DM us in the FoC Slack Support the show on Patreon https://futureofcoding.org/episodes/067Support us on Patreon: https://www.patreon.com/futureofcodingSee omnystudio.com/listener for privacy information.

Transcript
Discussion (0)
Starting point is 00:00:00 I'm doing the thing that I do every time we have one of these wildly digressive nonsense opening conversations where I go, is any of this usable? I think it is. Is any of this, is there anything in here that I can salvage as like, yeah, this is exciting and interesting and relevant. And if it's not, you can just cut right here and get rid of all of that uninteresting, irrelevant conversation. And we just dive in to go to Considered Harmful. Let's.
Starting point is 00:00:42 I even said dive in. Yes, you did. I need to stop. i've stopped actually putting the little bit in the thing yeah yeah because i say it too much well and also because it's like if you can invoke it on command then that takes the power away from me then it's like jimmy knows that if uh when he does the splits the band has to hit a little stab i like playing with that because then i can make you not do the edits that you might want to do because i can try to like predict them like if i say like you might be tempted right there to put the like hest censored sound but you can't now because i just mentioned that you would
Starting point is 00:01:26 do it are you a cretin or are you a liar yeah all right uh it's considered harmful dykstra um uh-huh why are we doing considered harmful eggs eggs good dykstra you know so okay this is a paper that like maybe i have like kind of this original big list of papers that we could do and this did make my list but it kind of made it as a like anthology of all the dykstra things right because like dykstra doesn't write like big long papers. We got like the humble programmer and go to considered harmful Dykstra. I had one other one in here, I thought, but those are at least two.
Starting point is 00:02:12 I thought like, okay, this is good. And kind of like more like advice column sort of papers, right? Like there's the emperor's old clothes by C.A.R. Hoare as well, which is also like a Turing acceptance i think the humble programmer is as well i think it is useful to like look back at advice that people have given us the way they conceptualize usually when they're giving advice they're talking about the future
Starting point is 00:02:37 in some way they're giving they're conceptualizing how they see the programming space uh but go to consider harmful is a little different it's it's this very short paper right we're looking at like two columns here on one page and then like half a page of one call like half a column i don't know how to say this uh one page one column but it's half the column yeah if you didn't have all this formatting shenanigans it'd be like a page of text it's like a one pager yeah yeah it's it's pretty darn small in fact that i did learn the title was not even dykstra's title um it's like a note on go to or something like that was all he wrote it but the editor changed it to go to considered harmful it's good dykstra. Oh, which is, is interesting. And apparently the considered
Starting point is 00:03:26 harmful thing, uh, predates Dykstra, but it was, you know, popularized by this paper and the tech world, but you know, it's very, it's very constrained paper. It is just about a programming language feature. It's just about go to with some little Dykstra isms, you know, making fun of people every once in a while, which is like what he does. But I thought it would be fun to do this paper. One, it's a short paper, and we haven't done anything anywhere near this short. Two, like it kind of, you know,
Starting point is 00:03:56 lets us have our own opinions on what's harmful. And if any paper influenced the future of programming more than GoTo considered harmful, Dykstra, I'm not sure which paper it would be. Okay, back that up. So in what ways did GoToConsideredHarmful, which the actual, the full title thereof is? GoToStatementConsideredHarmful. Full title thereof is... Go-to statement considered harmful. Oh, I thought it had a longer... Oh, it's just go-to statement considered harmful.
Starting point is 00:04:30 I thought there was a longer title. In a way that sounds like a swear word. I can say it in the Dutch way. Yes. Het is gedijkstra. So, go-to expression, totally fine. Yeah, I was going to say, you could it's, you could just say statement considered harmful. I'd be perfectly happy with that paper.
Starting point is 00:04:51 A go-to expression has to return the value. So I actually have to jump ahead slightly. Uh-huh so the the the thesis for this episode of the podcast is that jimmy and i have our own lists of considered harmful that we're going to bring that's good dice girl and um one of mine i don't have them numbered but let's say it's number 36 is uh statements considered harmful dykstra that itself was a statement. I don't mean that meaning of statement. I mean a very specific meaning of statement. Yeah, that should have made my list.
Starting point is 00:05:32 I would agree with that one. But yeah, so go-to statement, considered harmful. Dykstra. You'll get all sorts of ones. I tried to look and see if there were any, like, really good ones we should throw in in this episode, other considered harmful essays. Dykstra. The letter O other considered harmful essays the letter o considered harmful was an obvious uh suggestion because it supersedes go to considered
Starting point is 00:05:53 harmful because you can't write go to if you don't have the letter o so you don't even need go to considered harmful so i thought that one was good it's obviously a satire of the considered harmful genre and then there's considered harmful, considered harmful. I just didn't like it. I want to be honest. It felt, I would agree almost potentially, even though we're doing this, with the statement considered harmful, essays considered harmful. But the way they defended it just felt very off to me. Very wrong.
Starting point is 00:06:25 Yeah, it's entirely possible that another one of my considered harmful is a rebuttal to the considered harmful considered harmful. Ed's got f***ing dystra. Okay, gotcha. Considered harmful, considered harmful, considered harmful. Ed's got f***ing dystra. Well, not quite so elegantly put. But yes, something to that effect yes okay that one is another one of the the hits of the considered harmful genre
Starting point is 00:06:53 it's good dice i'll just add in mine that was james well john had had had had had had had had had had a better effect on the teacher, considered harmful? Dykstra. Anything you do that brings you closer to Chomsky, considered harmful? Dykstra. Language considered harmful? Dykstra. Oh, actually, that would be a good one for me, because I'm often ragging on the use of the word language to describe things that should probably be called systems,
Starting point is 00:07:21 or maybe the word language, we need to take that back and have it be broader than, than people usually, what people usually mean when they use that word. Yeah, I've been reading a bunch of neo-American pragmatists on language and you would probably like some of that stuff. But I'm trying to read neo ones to get rid of all the bad stuff, like the instrumental version of truth and all that garbage um you like the version with lyrics the version of truth with lyrics yes i i actually do i'm not a big instrumental music fan i listen to it occasionally if i need to focus and want to cut out background noise but other than that it's just not my jam all right well as the jam boy of this show you uh you get to say what what jams are are most jammable uh-huh yeah i'm also not a jam fan you're not a fan of jam bands uh-huh yes that's definitely what i mean i like the occasional jam i really like fig jam i think fig jam is really good even though i'm not that big
Starting point is 00:08:25 of a fan of figs me neither yeah yeah but fig jam is tasty for some reason so go to consider time for man that hurts having so many stacks of tangent popped all at once it's just like such a such a strange feeling to like close so many parentheses all at once. That's gross. Anybody who would close so many parentheses all at once is using a terrible language. Uh-huh, yes. That lacks a go-to statement. Mm-hmm, yeah.
Starting point is 00:08:58 That's a way out of unbalanced parens. Just go to somewhere else in the program where the parens are balanced. You know early Lisps, you didn't have to close the parens. Oh, cool. Yeah, they just assumed that you could do the super paren. Hmm. What? Yeah, yeah.
Starting point is 00:09:14 Really? I can't remember which early lisp, but there's an early lisp that has a super closing paren, and it just closes all the parens above it. That's amazing. Yeah. That's very good. I like that.
Starting point is 00:09:28 No problems, no notes. Yeah, it's like HTML and not closing your tags. I was about to say, I am an advocate of don't close your HTML tags. That is the least surprising thing I've ever heard you say. I mean, I don't... That's just your vibe. I also, I don't open body. Like, my HTML of choice doesn't open body,
Starting point is 00:09:49 because as soon as you hit an HTML element that is not valid for the head, the parser will just assume, okay, we're in body now, so. Yeah, I can just imagine you, like, if I had to apply stereotypes to you, that would be one. Does not close HTML tags.
Starting point is 00:10:05 Just a picture of you, and that's various statements you, that would be one. Does not close HTML tags. Just a picture of you and various statements around, that would be one. I'll give you another HTML quick tip. Title that you put in your head to be like, this is the thing that shows up in my tab bar. Go into your style sheet and set display block, like title display block. And then you've got double duty. You've got something that sets the tab bar and shows up as the title of your page, two in one,
Starting point is 00:10:28 very efficient HTML writing right there. More hot HTML tips from this super Peren fan incoming. Considered harmful. Ivan's HTML advice. Adding that to the list. Yeah.
Starting point is 00:10:49 So I do want to cover the paper a little bit, not just jump into our considered harmful. Cool. I'll go make a coffee and you talk about this very short paper. I mean, okay. I said that I think it's probably one of the most influential papers on the future of programming and i think that's actually probably true maybe it was just a coincidence maybe this didn't have the influence but i mean it's a very well-known paper i think
Starting point is 00:11:14 it does right this is ultimately this paper is an argument for structured programming which is what every language since this paper came out has been. I don't actually know what year this paper is. 68. 68. It's at the bottom of the paper. Yep. 1968.
Starting point is 00:11:32 I mean, every language since then has been a structured programming language. And by this we mean has if statements and procedures or functions or things like this instead of go to as like kind of the main organizational structure i'm gonna say every good language that has come out since 1968 because there's you know malborge and brain yeah yeah yeah every every language that's intended to be higher level than like machine code and and is not a an s-o-lang yeah it's not a practical joke there's a reason s-o-langs like go to intercal though also did not have go to which you know i considered a reference to this paper for sure like the dimension of like it doesn't have it which is why we have to do it because anytime we do a work that references some other work, we have to eventually do the work that was referenced.
Starting point is 00:12:26 That's happened so much. Wow, we have a lot of works to do. Yeah, but we got a lot of episodes yet to come. Back us on Patreon to ensure the future of this podcast. Yes. Patreon.com slash future of coding. All right. So this is this argument, and we get a lot of, like, Dykstra-isms in this
Starting point is 00:12:48 because it's not just an argument. It's also making fun of people, which if you've read any Dykstra, that's what he does. Half of it is just him dunking on somebody, even if they're not directly named or, like, this person. It's just like, you know, like the paper starts out, which is like a note to the editor or whatever for a number of years i have been familiar with the observation
Starting point is 00:13:10 that the quality of programmers is a decreasing function of the density of go-to statements and the programs they produce burned anybody who uses go-tos the more go-tos you use the worse you are the worse you are and and he ultimately says that like he's convinced that you shouldn't have go-to's the more go-to's you use the worse you are the worse you are and and he ultimately says that like he's convinced that you shouldn't have go-to's in anything except for plain old machine code i think that's probably false uh but i could modify it a little bit to say anything that humans are supposed to write other than machine code because like i have intermediate representations of my compilers that use a go-to statement, because they should, because that's a good idea.
Starting point is 00:13:48 Was this before the time that intermediate representations would have been a thing? I mean, this is 68. I feel like there had to have been an intermediate representation in some lisp. I wonder if that's what, if you're thinking of high level versus machine code is kind of like the two ends yeah yeah i guess that's true they probably
Starting point is 00:14:12 did just compile straight from yeah they probably did like and i mean i think he still would have accepted that caveat yes exactly yep the rest of the argument is about how this becomes difficult to reason about. Oh, I have to put money in the swear jar? Oh yeah, right. The reason about swear jar. I almost forgot that that existed. It didn't have a little stinger sound effect, and so it hasn't been burned into my editor subconscious.
Starting point is 00:14:41 And I feel like there's some bits in here that either you're going to dislike or absolutely love uh oh i think i think you know well okay so there's some things that are just like so awkwardly worded that i don't even want to read them because i know i'm going to be like how do you do this like there's this whole remark about... Which one? I'll read it. I'll read it. Which one?
Starting point is 00:15:07 Okay, read it. My first remark. It is the second paragraph. Do you want me to read the whole second paragraph or just that sentence? That sentence goes on for most of the whole paragraph. Okay. Let's see if I can do this in one without laughing. Okay. My first remark is that
Starting point is 00:15:26 although the programmer's activity ends when he has constructed a correct program, the process taking place under control of his program is the true subject matter of his activity. For it is this process that has to accomplish the desired effect. It is this process that in its dynamic behavior has to satisfy the desired specifications. Yet this process that in its dynamic behavior has to satisfy the desired specifications yet once the program has been made the making of the corresponding process
Starting point is 00:15:52 is delegated to the machine look at you got it in one perfect i retire undefeated that that is such a hard sentence or two i guess to parse okay you don't think so i i mean i just read it perfectly on my first try so yeah you read it perfectly but what does it mean i haven't explained it for us it's it's basically saying that there's a divide between when you are authoring the source text and then when the program executes and that in that divide there's going to be some interesting things to consider and that's what the next paragraph begins to explore and i actually quite quite like the next paragraph so see that's what i thought you would i think you would quite like this yeah this next sentence should i jump ahead to this next paragraph did you have more to say about this weird no no that's fine yeah i
Starting point is 00:16:42 think i just wanted to kind of get us into you know what his argument is okay cool so let's jump ahead um it's the literal next sentence let's jump ahead let's go to paragraph two i mean implicitly every sequential statement that executes in order is like an implicit go-to to the next statement after that. So it's one of those things where in some languages, some things are implicit and some languages they're explicit and generally. No, you have an explicit go-to in most languages. It's the semicolon operator. What about like an opening curly brace or uh or the the warm embrace of an opening paren with no super paren to come and shut down your part yeah yeah yeah um is there an opening super paren no because that doesn't make sense no it totally does because then it would be you
Starting point is 00:17:39 could put as many closing parens as you want and they would be balanced against the opening super paren but you would you couldn't have nested things why not because you wouldn't know how they nest well it's it's you would just assume like you'd you'd say like max int is my level of nesting and then every closing paren i get is decrementing the the level of nesting but where does the start of each of the levels of nesting i have plus i have super paren plus two three times five seven three nine minus four three two one in three end parentheses you want me to do this in my head you want me to write lisp in my head my My point is you can't. It's ambiguous.
Starting point is 00:18:27 There's no way to know. Okay, hold on a second. Hold on a second. Let's go into tldraw. This is going to be important. You're going to make this tangent on a point you know is wrong. All right. So it's going to be, let's say, plus one, two, and then we're going to close that.
Starting point is 00:18:43 And then it's going to be oh yeah because you don't have you don't have the ability to introduce any new function in that first position exactly as soon as you close okay right right right now i see what you're saying i had to look at it because okay okay okay my second remark you weren't just being obstinate for fun okay is that our intellectual powers are rather geared to master static relations and that our powers to visualize processes evolving in time are relatively poorly developed. For this reason, we should do, as wise programmers aware of our limitations, our utmost to shorten the conceptual gap between the static program and the dynamic process to make the correspondence between the program spread out in text space and the process spread out in time as trivial as possible. And by extension, if you want me to write Lisp in my
Starting point is 00:19:31 head, you know, that's folly. We should write Lisp on paper so I can actually look at the, oh yeah, that's broken. Well, that's a static process of text, but yet this, I think, is a quite succinct little argument here for visual programming. Or at the very least, the design of good quality representations. Yeah. And that, you know, you need something to make up for the fact that, yeah, computer execution is a process in time. And that we need something that we can look at and react against in order to understand that evolving process just trying to do it in our heads is you know it's it's doable up to a certain limit and then you very quickly run into well i'm just visualizing
Starting point is 00:20:18 something and i have no way of knowing if i'm visualizing the right thing or not yeah or you're visualizing nothing because you're me. And it's always wrong because not nothing is happening. Is it actually nothing or is it just something nebulous? How does that describe? I can occasionally conjure up something nebulous with great effort but for the most and when i'm when i'm in a certain like lucid dream state i can actually visualize something but in general i do not have okay i do not have like any internal vision in my head i thought you were
Starting point is 00:21:01 gonna say world but i also can't recreate sounds other than my voice like if i think of like a trumpet playing it's me playing making trumpet noises not a trumpet in your voice yeah yeah yeah like i can't i can't actually hear reproduced sounds what and that includes like say like somebody's voice talking or singing or something like that? Yeah. I cannot imagine anyone's voice other than me doing an impression of somebody who's Morgan Freeman or something. Did you catch the most recent Very Bad Wizards, where they do a survey about things you can picture mentally? Yes, yes. And I went and did that little thing. And I am on the very far spectrum of can't,
Starting point is 00:21:51 like 99 percentile or something. Now I want to go do it, because I haven't done it. Yeah, Janice and I went and did that. It's a fun little survey for people who didn't listen to Very Very Well, which is a survey asking you a bunch of questions about your mental life. Do you have an internal monologue? How do you picture things? And it's kind of mental life. Do you have an internal monologue? How do you picture things? And it's kind of putting you on the spectrum
Starting point is 00:22:07 of how well you visualize things, how much you have an internal monologue. And it turns out that one of the hosts of Very Bad Wizards does not have an internal monologue when he thought he did the whole time. He misunderstood what people meant by an internal monologue, meaning they hear language in their head, not just they have thoughts, right? I do have an internal monologue meaning they hear language in their head not just they have thoughts right i do have an internal monologue um but i do not have any visual components whatsoever to my thoughts now i can't find the link to the thing to do the thing
Starting point is 00:22:36 yeah it takes a little bit of time i don't think we need to do it on the podcast here um you may not think that we need to this is very bad wizards uh copy like we're just gonna do every reading they do from now on that would be a hilarious podcast idea just find a popular podcast and make a like non-parody copy of it yeah yeah or just like do their topic every time yeah yeah yeah like we're the the very very bad wizards yes yes in some sense we're like a like a the witness review podcast in that every episode we end up reviewing the witness i've mentioned it a few times i'll i've i've put that on my i can't mention it list now uh okay wait where's that list it is the witness considered harmful dykstra
Starting point is 00:23:32 do you actually have a list no it's just in my head ah but you don't have anything in your head we just established that i have things in my head i don't have images i think this might be why you're opposed to the idea of thought stuff is that you don't have thought stuff is that other people have something that they appreciate as like this is a difference between my inner world and my outer world and you exist in a pure outer world like you're the most present in the moment i think i understand i think i understand correctly i don't think i'm wrong i have found that people will would make mistakes
Starting point is 00:24:13 in programs and i wouldn't understand how they were making the mistake they were making like it just didn't i couldn't you know recreate the process of like why do you think this is true when it's clearly false and i eventually realized it was a visual metaphor that they were like it would be like a concurrent process or something and they were visualizing a representation of the program and that visual metaphor was not quite accurate and so they were like concluding certain things based on using that heuristic and so like i was like oh and i've learned like when people are doing that i can figure it out and be like oh you're visualizing it this way aren't you and they're like yes and so this follows and i'm like yeah no that's that's not how it works right like here's the problem with that visual metaphor
Starting point is 00:25:00 but it took me so long to realize like oh this is where because usually i can like kind of you know see the flaws in reasoning but it was all on this metaphor of visualizing it so i do have i probably have different kinds of errors i get to by not being able to visualize things that other people have shortcuts for i think the biggest error is that you're still like you're building a text editor instead of building a visual programming environment. When really, of all the people who should be building a visual programming environment. Or am I doing both? Do you have a text cursor in your programming environment?
Starting point is 00:25:36 Then it is not visual programming. Not. I only have a plugin that happens to have text. In the actual code base proper, there is no notion of a text editor. So one of my widgets in my system has text. One of the generals in my army happens to commit abuses of human rights,
Starting point is 00:26:00 but that's one of my generals. It's not my army. My army doesn't commit abuses of human rights, but that's one of my generals. It's not my army. My army doesn't commit abuses of human rights. You would agree that any good visual programming language should be, or any, sorry, not good, any general purpose visual programming language should be able to express a text editor, right? Not the good ones.
Starting point is 00:26:18 Yeah, but any general purpose one should be able to. So I'm just building up to that. Eventually you'll build a whole thing out of, no,'m not but i still do think uh there's something good between text and graphics like i think you have to marry the two together and i do want to do that yeah yeah where the hell are we so we kind of stayed on topic ish uh you know visual programming we got right back to it right like if you want the it says that there should be this correspondence between text and the execution and it should be as trivial as possible the most trivial is they're identical um so i'm just
Starting point is 00:26:56 putting it out there that that would make sense but like then we get this like we go from these two kind of high level things and then we get this like i, we go from these two kind of high-level things, and then we get this, like, I don't know, this weird formalism in my mind. Nah, I dig it. It doesn't, on the first read, I was like, okay, where's this going to go? But I, you know, by the end of it, it's like, no, this makes sense. I dig this. I mean, it all makes sense.
Starting point is 00:27:22 It's like, how do you know where you are in a program is really all that is being asked here right and but the way it's being asked is just a little i don't know it's a little obtuse but i guess you need to do this especially at the time because like there's just a kind of a more formal attitude towards all of these things but the basic idea is like there needs to be some coordinate system of where we are in our program and the question is how much information do we need to situate ourselves in that program and know where we are yeah and also where does that information come from is it static information that you can tell just from the artifact of the source text or does it also depend on the execution of the program? Exactly.
Starting point is 00:28:09 And as soon as you add goto, I think one of the things I never appreciated about goto, not using languages that had them, is when you have a goto, the state of your variables is even a big question. Because there isn't this like lexical scope like i was like i always thought of go to as like and now i'm going to a new lexical scope it's just calling a function but without a return or something it's like no like you're going to
Starting point is 00:28:35 things and the state of your variables just are what they are and good luck and am I correct in understanding that a go-to, you are jumping to a specific place in the program based on the evaluation? Like you're specifying like go to this address, but the address is not a static address. It's a dynamic address. It could be either. Right. You can have a go-to label.
Starting point is 00:29:01 Yes. And label is just going to be a static address, but you could also have a go to this pointer yes exactly yeah my dog's asking to go out okay lemon break Thank you. She's outside laying down in the grass and then is going to ask to come back in. But if I try to make her come back in right now, then she's just going to keep going outside to lay down in the grass over and over again until i let her stay out so it's like a lose-lose situation that's okay i i don't mind the lemon breaks the lemon breaks they give me an opportunity to plug our patreon uh so yeah, this go-to makes, like, I think it makes every program harder to actually figure out, like, what's going on, right? Because you don't know the state of your variables.
Starting point is 00:30:53 In order to know what the behavior of your program is, you have to know its past execution. You have to know something about the dynamic properties of this thing. And so as you're reading code, you have to imagine all the possible ways you could have gotten to this point in order to really know what it's doing. And none of that information is local. Anybody anywhere could have done a go-to to your bit of code. And so you'll never really know
Starting point is 00:31:23 what is possible in your program and if you have something like a more structured system this if statement or whatever it becomes very easy and direct what is happening here yes you depend on some local variables or global variables that are referred here but the action is not at a distance right it's action that's
Starting point is 00:31:47 immediate right in your program yeah yeah and i mean it's a short paper right like it's i mean this is really about it right it's so we got i'll read two little statements here to kind of summarize i think what his points are the unbridled use of the go-to statement has an immediate consequence that it becomes terribly hard to find a meaningful set of coordinates in which to describe the process progress and then the go-to statement as it stands is just too primitive it is too much an invitation to make a mess of one's program. it's it's become a meme but it's a meme that uh like people accept the the truth of it or the or at least they accept it at at face value like i don't know that there's a a um like a contrarian you know movement out there that's saying actually go to is great let's bring it back
Starting point is 00:32:57 and even languages i guess like i said every language didn't have it but c was after this and it has a go-to statement but it's used so rarely all right it is you're not going to find many go-tos in standard c code uh i have seen them and they're you know very particular uses usually with comments on why they needed a go-to in this example i was looking at like the dtrace source code and that was one i found the one go-to i think in the d trace source code that was the process of debugging some really complicated thing and it was like this this is the best way to deal with this weird case here but you know it's a very non-standard practice that would be something that i I am in no way prepared to imagine, but it would be cool to hear somebody justify, like, here is a case where go-to is actually the most elegant thing, and here's why.
Starting point is 00:33:54 Because I haven't the foggiest. I mean, have you ever thrown an exception? Sure. They're just go-tos. Okay. They're a little bit more constrained. Yeah, no, they have a whole heap of semantics around them. Like, I don't think you can catch a go-to.
Starting point is 00:34:12 No, so what you're doing with a throw is you're saying, go to nearest catch statement. You're saying, stop the sequential execution of my program and go potentially in levels nested high that I have this catch statement. But the structure of catch statements is based on the stack that you had to build up in order to get to the point where the exception was thrown.
Starting point is 00:34:41 It's a dynamic process. It depends on how your code was run. I don't think so. I think it's as static as function calls. This is just sort of like an early return, but that it's like a super return, because you may not return just one level. You may return several levels.
Starting point is 00:34:57 No, you don't return at all. You don't return a value. Well, you return the exception. No, you throw the exception, right? There's a reason it's like throwing it out there. And if your code was called from different contexts, it will have different effects. But you're returning to the calling context when you do a throw.
Starting point is 00:35:20 Which calling context? Not the function that immediately called you not the function above them it it all depends on where in the stack of things an exception handler was registered you're returning to the nearest compatible exception handler yeah and so it's a dynamic property of how my code was called i have to know the history of the calling patterns to know where it was, where it's going to go. But that's no different than saying if I'm in some function, like before the exception was thrown, how I got to that function is a consequence of the dynamic process of the code's execution. Well, no. I know when I return that it is going to go to the immediate caller.
Starting point is 00:36:09 I might not know who the immediate caller is, but I know it's going to go to the immediate caller. And when I throw an exception, it's going to go to one of the higher stack frames. Or just break. But with go to, it could go to conceivably any place. It is more constrained. It is more constrained. But if you try to do the kind of analysis that somebody like Dykstra would want to do, there's a reason why like functional systems and things get rid of these is because they don't make pure functions, right?
Starting point is 00:36:39 Because you don't return something. And so like things get more complicated right because not only are you so like yes one you're returning to a random place but also the the caller of you all of the code underneath them underneath the call to you is not going to be run right so you have no guarantee that's why you have to have finally so that you could have nested scopes of these things so that you could run cleanup code in case somebody threw underneath you because now you won't do your cleanup. But that to me is no different than like you call some function and then you return a value from that function. And then after, you know, in the parent context, in the calling context, after you get that return value, you have some if that's like, if the value that I returned is, you know, the token representing an error, then do an early return. Oh, it's very different.
Starting point is 00:37:41 Imagine you have this, a bit of code, okay? So it's A equals some constant value, B equals a function call, right? C equals A plus B. And then I print out the result. I print out C. In a language without exceptions, you can look at that code, and let's assume it's typed, right, for a second. In a language without exceptions that's typed, you can look at that code, and let's assume it's typed, right, for a second. A language without exceptions is typed. You can know exactly what kind of result is going to happen. It's going to print some integer.
Starting point is 00:38:13 In a language with exceptions, you have no idea. Well, if it's typed, then the fact that the call can return an exception has to be part of the type. No. Otherwise, it's not a well-typed language. Most languages with exceptions don't all make a typed exception.
Starting point is 00:38:32 In fact, it's considered bad form to do so. Java does, but you can actually escape that, because you just declare your function also throws. What language are you thinking of with exceptions uh i'm thinking of a hypothetical language where the exceptions are actually well
Starting point is 00:38:50 done that's the problem is like well they're not exceptions you're thinking of return values you're thinking of result types you're thinking of algebraic data types that i'm thinking of like super returns super returns where it's like, this function may return normally or it may super return some more powerful returnable thing. Or it returns a result type that is either okay or error, right? That's the new style of doing this. Well, no, because it breaks the idea of a return only going up one level of the stack.
Starting point is 00:39:22 This is something where it's like, it will keep going up until it... Do you see the point that you can try to... Let's say maybe you have in your mind an engineered system around it. That's fine. Maybe there is some way of making it work.
Starting point is 00:39:38 But if you don't have that engineered system around it, you can see how adding exceptions without some other thing constraining them even more makes it so that they're a mini form of go-to totally yes yes and in fact they require one of your things they require statements exceptions throw is a statement yes i don't think i can quibble with that. That makes sense. Yeah. Yep.
Starting point is 00:40:06 So that's what all of these things are interrelated, right? And so there's a reason a lot of more modern languages are not having exceptions. Because the reason I know that they're basically go-tos is that's how you have to implement them. Mr. Compiler Engineer over here knows how to actually build these things behind the scenes.
Starting point is 00:40:30 They're difficult, right? Or you can implement them as delimited continuations. Delimited continuations are a great way to automatically do exception handling. You could see them as a better form of go-to, because you can go to a point of execution with the variables intact. We probably will never do a paper on delimited continuations because that will make awful radio. I really just can't imagine that it will be good.
Starting point is 00:40:59 If somebody has a paper, they're like, no, this is a very high-level delimited continuation paper that just talks about the benefits. Maybe, but doubtful. I think this is actually an interesting point which is that it's hard for us to do works that require a lot of visualization in order to appreciate the ideas and i think something like delimited continuations would be great if this were like a video essay or something like that where we could have like graphics on the screen and examples that we could refer to and because there's going to be a lot of context needed to kind of understand the examples that we would need to give yeah and yeah this is just not a
Starting point is 00:41:41 good format for that sort of thing as opposed opposed to looser ideas about, you know, what should happen in the culture or reflections on some work in terms of, you know, how does it make us feel that sort of thing? That's that's much more amenable to this format where not looking at something is actually a benefit if you're talking about feelings. Yeah, like notations as a tool for thought by my brain doesn't let me remember. That's weird citation. Put that in Bibtex. Is a great example of like a paper that would be an obvious choice for this podcast. In some ways, it's a seminal paper. It's, you know, about programming, blah, blah, blah.
Starting point is 00:42:21 But it's literally about notation. And like, we can't show that notation and so like what are we going to do just describe it every time that kind of like defeats the purpose so it's definitely one of those things where you can't just pick like all of the canonical papers and be like that works in this format which is a shame because the yeah it's a lot of the things that i'm most passionate about are the things that least lend themselves to this audio medium so that is our curse that is our burden as podcasters future of coding okay so we've gotten into like there are other forms
Starting point is 00:43:00 of go-to uh that are more constrained like exceptions which was i i think probably their goal like sometimes you want to exit out of a program and go to some other place in it but you want it to be more constrained than go-tos uh but i'm curious on the non-go-to topics like we got our lists of considered harmful it's good dice i asked like three times if i've been once to share them and he just ignored me every single time and never replied once. Definitely didn't say he didn't care. But he definitely didn't share his list. So I have no idea what's on Ivan's list. And I have no idea what's on Jimmy's list.
Starting point is 00:43:37 Mine are not. I don't know. I'll admit, I kind of struggled with this in some ways. Mostly because I think all my takes are boring. Yeah, me too. This is going to be so good. Right? This is going to be excellent content.
Starting point is 00:43:52 But at the same time, I realized every take I have, a lot of people disagree with it. And so maybe I just find it boring because I've had these takes for so long. Yeah. Well, let's try a couple of them and see how they go down i can start because my first one is very i actually have two that i would pair together but they're very similar to the arguments for go to considered harmful extra and i think they kind of go hand in hand which is dependency injection which people absolutely love uh dependency injectionency injection, considered harmful.
Starting point is 00:44:26 Dykstra. And I have kind of coupled with that interfaces in business apps, considered harmful. Doofus. Cool. This is good. So first, I think that the thing that you need to do is define dependency injection so that we know exactly what flavor of that you are thinking about so when you like have those dependencies and you inject them in that part yeah but i mean like is it just the
Starting point is 00:44:55 like oh hey this thing that i'm depending on is being passed into me so that i don't have to reach out and get it from you know import it from some other module or something. It's part of my, you know, initialization as you pass in the thing I need. Or is it the automation of that where it's like, oh, we look at what you're taking and then we figure out what to give you based on that. Aha. So this is part of why I put this one is like,
Starting point is 00:45:20 one, I don't think anyone actually ever has a clear definition of dependency injection. And everyone, people will be like, if you think dependency injection is bad, then you can't pass arguments to your function. And it's like, no, that's not what I meant. Like, yes, I understand that passing arguments, quote unquote, is injecting a dependency but like i think really what this gets down to is dependencies when you're talking about dependency injections are like non-value objects almost every time they're things that hold on to state they're a service that is provided and they're being passed in instead of being explicitly created in the place they're used so that you can change out functionality.
Starting point is 00:46:07 So why I say this is related to GoTo, that means you have no idea what your program actually does unless you know some history of the execution. This is some dependency that might do something at some point somewhere. And when you try to figure out what it's doing, you always have to be like, ah, what thing is this? Right? Does it go in right to my log system? Does it go and do this thing? Is this in the scope of my bug that I need to go pay attention to this because it can change these things. And at the point of your program, you never know what it's doing. And I think this is very related to interfaces and business apps, because almost always the reason people make interfaces is so they can
Starting point is 00:46:49 dependency inject, and then they end up making one implementation of that interface. And then every single time you have to be like, wait, there's only one implementation of that interface. So I know exactly what it's doing. But for some reason, it's on an interface boundary. And it's trying to deal with code that's written this way is just so incredibly frustrating to me and people will come up with cool uses of dependency injection and will tell me like dependency injection is great and like i get it of course there are uses of course there are cases where it's good just like there are cases where go to is good but it should be considered harmful thanks you should stop doing it and if i have to read code that's like that ever again i just like i've refactored code
Starting point is 00:47:33 out like that and it's just like for me personally because i know it'll never be approved and then i'm like ah this code is readable again it's so nice so you're you're more of a fan of just have no module boundaries just put everything on uh like in a single global namespace and uh inside your function if you need something you just reach out and grab it that's your that is uh well i don't think i don't see how namespaces are related to dependency action i can have i can namespace things i'm being facetious jimmy i know but if you just take off that word then i agree oh okay right like if you just say namespace things well and then if you need something just get them i'm like yeah i'm all for it right the only thing that i didn't like in that statement was namespaces. Okay. All right.
Starting point is 00:48:27 Or the suggestion that we remove namespaces. Oh, hold on. Yeah. I have a new one. All right. On my list. Namespaces. So you just reminded me. Considered.
Starting point is 00:48:34 No, no. Super good. Namespaces are a great honking idea. Namespaces rule. From the Zen of Python. Great honking idea. We should do more of them. Oh, okay.
Starting point is 00:48:43 Chunky bacon. The Zen of python is the best not considered harmful the zen of python dexter fantastic it's my favorite state like short little statement of how you ought to program i i haven't actually written any python um just because i refuse to use white space languages uh that's fine so in your terminal type in either python or python 3 whichever it's probably python 3 and then import space this oh cute so you get a little poem and this is kind of the guide of how they like to design things in python and the last line is namespaces are one honking great idea let's do more of those
Starting point is 00:49:25 I think I've actually read this before even if you don't like Python it's just great advice alright those are mine I will stand but I worked at a job so just to be clear I've written lots of dependency injection framework I even have in my little 100 lines or less repo I have a Java dependency injection
Starting point is 00:49:41 automagical figure out based on the type what things should be injected framework in 100 lines or less, which was really enlightening. It's like 30 lines or something, even in Java. I've written a lot of applications this way. I understand how to use it. I understand why you would use it.
Starting point is 00:49:57 I still hate it. It's awful. Don't do it. Considered harmful. Dextra! You heard it here. My starting one. Visual programming considered harmful you heard it here my uh my starting one uh visual programming considered harmful it's a wee bit dykstra this should come as no surprise to anybody who knows me and my
Starting point is 00:50:16 particular proclivities um that visual programming this is going to be real short jimmy's was was nice and substantial mine is very simple um i don't think there's been a single good visual programming system yet i think they are all terrible and i think that the problem with that is that it has led a lot of people to say visual programming is terrible and there has not been a single good one yet and the unfortunate consequence of that is that they say it as a way of discouraging people from trying to explore visual programming further. And that's a bad thing. I think, yeah, I think we should be exploring visual programming more because nobody's made a good one yet.
Starting point is 00:50:54 And so let's go make that good one. That's a weird, considered harmful take. Dykstra. Yeah. Visual programming considered harmful because it's so good. Dykstra. yeah visual programming considered harmful because it's so good it's extra well because it encourages people to look at how not good it is yet instead of looking at how good it could be you have to go let lemon in don't you yes i do yes you do i put her favorite treat on the ground for when she comes in because this is the time she gets
Starting point is 00:51:26 in so she was like she could see it and was you know very like oh wait but i have to get that now so so the uh i've got uh three more as follow-ups to this first one okay uh the second one is uh textual programming's enduring effectiveness considered harmful. In that if text programming weren't so good, visual programming might have more of a chance. And that, you know, text programming is so well established at this point and people are so comfortable with it and all the tools are so mature and we have wonderful things like Git that we can really rely on. And whenever somebody makes a visual programming system, they're like, oh, but how do you make it work with Git? And then turn around and the same person's like, Git is the most horrible, awful tool and I hate it. And it's bad and we should kill it as quickly as we can and get to something better.
Starting point is 00:52:21 So yeah, all of this maturity of textual programming, it's harmful because it's holding back the development of visual programming. I asked Ivan how weird his were going to be, and he said not. No. They're just very normal takes, but instead of agreeing with the premise of considered harmful, he just reinterprets it to mean something else well the premise of considered harmful is i've got something i want to complain about you're not actually saying don't do these things don't do textual programming don't do visual programming don't do textual programming only
Starting point is 00:53:01 do interpretive dance that's what i'm saying don't do it interpretive dance considered harmful is the next one i can see his screen now what i believed you even though that's not the next one you believed me unless i really guessed it right no you did not really guess it right i just got scared for a minute uh all right i have two more of these that i have to get through and then we can get back to the normal ones okay okay okay that's fine um the third one is co-pilot considered harmful that's a reasonable take.
Starting point is 00:53:45 Because it makes textual programming. Oh, but your reasoning is going to be silly. Because it makes textual programming more comfortable. It makes textual programming nicer and easier to do. And so it further will make it difficult for visual programming to gain an edge on textual programming. Hold on. I want to pause on that one for a second.
Starting point is 00:54:02 Okay, sure. Have you used Copilot? Yeah, for like 10 minutes. I've used everything on that one for a second. Okay, sure. Have you used Copilot? Yeah, for like 10 minutes. I've used everything for like 10 minutes. Okay, so I've used it like a lot. Like I've used it in my day job. I've used it in side projects. I've used it in interviews, blah, blah, blah.
Starting point is 00:54:14 And there are times where it is so nice, right? And there are times where it is the most frustrating thing on the planet, and I want it to go away. But I've realized like the frustration of it is all UX, right? Like it's, it's the way it's exposed. And it's the fact that like it overrides in VS code, it overrides like the real auto-complete like they're, they're on the same, they're exposed the same way. Right. So I do think it will be really nice when someone makes a better user experience for it but there's part of me that doesn't want to turn it off because like the
Starting point is 00:54:52 times where it's so nice outweigh the times where it's so incredibly frustrating and i hate writing boilerplate code even though i almost put on my list hate of boilerplate considered harmful extra because i do think boilerplate code is good to exist i just hate writing it wow and jimmy called mine weird what that's not weird hate of boilerplate considered harmful dykstra yeah that's not weird at all yeah that's not weird at all uh-huh not a little bit not weird like my oh visual programming good actually well your reason you're just taking like takes that are positive like visual programming is great textual programming is bad and both
Starting point is 00:55:30 making them considered harmful why not i can do it in a way that's consistent and my my fourth and final one on on this particular thread of exploration is that lack of diversity of thought considered harmful to ivan's brand in that all i do is talk about visual programming i got one for you all right yeah not talking about your side project on your podcast considered harmful extra hast is great i've worked on it uh not at all in about two years, other than thinking about it. But I'm still thinking about it a lot. Okay.
Starting point is 00:56:11 I do actually have that one listed down here. I think that's my weirdest one. Is not talking about your side project on your podcast considered harmful? Yep, it's considered harmful. Dykstra. I put a lot of thought. Every one of my considered harmful is substantial. I have a lot of other ones that are good.
Starting point is 00:56:30 They're not like little one-liners. Okay. I think this one just goes without saying, but of course, you know, the rest of everyone disagrees. Not everyone, but a lot of people. Agile, considered harmful. It's her Viva Dykstra. I think Agile is the worst thing that has happened to software development in a long time.
Starting point is 00:56:48 And I know all these people who are advocates of Agile, who came before Agile, will tell me I'm misunderstanding the history of all of it. I'm not saying what came before was good, right? I'm not saying that Agile wasn't better than what came before i'm saying agile has had absolutely horrible effects on the way we think about software it is this this meme that makes it so nobody can think in terms other than what the agile terms are right and so when you even try to criticize agile you can't even get the words out because people are like well you don't understand it or you're you've only seen bad agile or that's not
Starting point is 00:57:32 agile and so it's not the concrete thing that i'm talking about it is the meta way we talk about agile that is the harmful thing because we can never point to concrete things because they're all this vague general here's you know values we hold that like there's no way to show if you're holding that value or not it is such bad discourse and it stops us from being able to really talk about the problems in software because they always get couched in the bad agile terms that have defined the discourse forever. The further away I get from agile practices in the big A agile sense, the happier I am in my job. And the less I talk about agile practices, the better the practices end up being because
Starting point is 00:58:18 they're not confused by all these silly ways that people have broken up the world. There's some strain of programmer culture that steers people towards these sorts of terrible discourses. And the one I'm also thinking of is type discipline. That's on mine. Ah, great. Now, is it the discourse around types, specifically that? Static versus dynamic types considered harmful. So the fact that we're setting up this opposition at all is the considered harmful part.
Starting point is 00:58:52 I can kind of appreciate why it is that we have these sorts of debates where we say, oh, well, if you don't like visual programming, that's just because you haven't thought enough about how good visual programming could be. You're only looking at the existing examples of visual programming all of which are terrible there's a lot of like goal post moving there's a lot of uh no true scotsman there's a lot of like these sorts of dodges that just become the nature of conversation around these topics that keep us from engaging with the substantial, technically interesting, you know, grainy, detailed bits of the subject matter that should be the things that as programmers, as people who like to explore systems and understand how they
Starting point is 00:59:38 work, we should be compelled and inclined and attracted towards talking about that kind of stuff in a much more concrete, substantial way for whatever reason this sort of like dogmatic cultish mentality takes over so frequently and i don't i don't get it but i don't like it yeah i think this is a a real tough issue to try to convey to somebody because Because once you set up these oppositions of static versus dynamic type or agile versus waterfall or whatever, everything is put into those boxes and all of the statements you make
Starting point is 01:00:16 seem like you're arguing one side or the other. People will, whenever I have my anti-agile discourse, they'll be like, you're just arguing for agile and you don't realize it. And I'm like, no, like this isn't, I'm not saying the things that people do in agile are bad practices. I'm saying the whole way we've conceived the space is the wrong kind of way to conceive it. Right. And the basis on which we decide for these practices by looking at the Agile manifesto and seeing if they line up with these values or by looking at – by doing retrospectives to see how the team has been doing and if we want to – I think all of that framing of the discussion is the wrong kind of framing because it already presupposes a bunch of values that I don't personally hold. It feels systematized in a way that maybe is what attracts people to it, at least in this specific case where it's like there's a – like the culture is about encouraging something that maybe feels a bit like science or it feels like you get repeatability out of it or you get something that is dependable and that if you try and pull somebody away from looking at it just in terms of these same concepts that they like to lean on and say no don't just just lean into those concepts instead like try and unpack this a little bit and
Starting point is 01:01:36 think about in concrete terms what are we actually doing and why yeah it feels like it's at odds with that compulsion that we have to try and make things like to try and take human factors and make them mechanical you know that's another one of those strains i think the best like analogy i've been able to give for people because i do think this comes back to like some paradigm shift in commensurability i do think there's some stuff like that going on here but it's like the stack overflow question that I'm sure exists, which is like, how do you do inheritance in Haskell? And answering that question literally is the wrong answer to that question.
Starting point is 01:02:15 Clearly something has gone wrong conceptually here, but these are the kinds of questions when you start learning a new paradigm, programming paradigm, you start asking, how do I do blank in this language or whatever? And it's like, you don't, is the answer. And it's like, it's not that but I know
Starting point is 01:02:34 that tool and I need that tool and that's the kind of shift we need in concepts. So yeah, I think Agile has done more harm and if I have to say concretely in terms that people would understand instead of just this meta discourse, I think Agile has done more harm. And if I have to say concretely, in terms that people would understand instead of just this meta discourse,
Starting point is 01:02:49 I think we've given up the responsibility that we're supposed to have as programmers and made it part of this process or part of the system or part of product, which I also have on here. And that's the harm that's happened is we don't take the whole process of crafting software as a whole and instead try to break it into parts that it just can't be broken into.
Starting point is 01:03:12 That was a good one. What about you? I want to hear some. You said you had normal takes. Let's hear normal takes now. So this next one, this one could be interpreted as a joke, but it could also be interpreted as something kind of serious, and I'm interested to see where we go with this one.
Starting point is 01:03:27 This one is called The Elder Generation Considered Harmful. Extra. Oh, wow. Alan Kay, Ted Nelson, Bill Atkinson, Ivan Sutherland, Tim Berners-Lee, Ed Catmull, Susan Kerr, Vince Cerf, Leslie Lampert, Noam Chomsky, Tony Hoare, Lynn Conway, Elizabeth Feinler, Donald Newth, Ken Thompson, Bjorn Stroustrup, Gerald Sussman, and Charles Babbage. These people are our living memory of the time before computers and how computers came into being and why they are the way they are and what we could or should have done differently. I put together that list of names and in trying to put together that list of name found so many more people of that level of illustriousness who are now lost to the world and these people are still
Starting point is 01:04:14 here they still walk among us but only for so long and that i i as somebody who came up pre-internet and remember a life using a computer to do all sorts of things before the internet and then remember the advent of the internet and how they work that i can only imagine is so much more intense for anybody who was alive before computers as we know them were even a thing and who participated in making them into what they are and i don't know that this is like a thing that we can do anything about in the way that like go to considered harmful is like well just stop stop using go to thanks if these people who are alive now and won't be alive forever would just not die like if they just stick around and continue to help us appreciate why computers are what they are then that'd be great but that's not an option and it's it's so this is more of a lament than a you know hey stop doing that okay hold on now i'm confused on what's
Starting point is 01:05:26 considered harmful thanks you just said that you would love for them to stick around how are they considered harmful what's considered harmful is the fact that they are the elder generation and that means they won't be here for long not that they themselves are harmful it's like i'm not saying these are bad people okay hold on so what i've learned here is ivan did not want to say things are considered harmful so he made positive things be the things considered harmful by saying like the lack of the fact that we don't have more like healthy food considered harmful because it's so expensive to get at the grocery store that you should eat more of it but you don't yeah that's that is exactly what i did i was like oh wow look at this he's's going to be like, stop reading Alan Kay.
Starting point is 01:06:27 Don't listen to Ted Nelson. Like, we venerate these people too much or something like that. But, you know, you're like, the fact that we don't have more of them is the harmful. That's why they are harmful. No, a property that they possess is harmful. They possess the property of dying yes that's the harmful part yes i want these people who are our connection mortality considered harmful it's a fucking dystra yes that's i that's totally valid that's that's a reasonable considered harmful these are such weird ways of i was like i was like okay this will be fun but now i can see why you think it's a joke because
Starting point is 01:07:12 you don't don't know what considered harmful means that makes sense no no no no no no no using considered harmful to say the opposite of considered harmful considered harmful a property of this thing that i wish they didn't have but they do uh is harmful because it'd be better if they didn't have that property this checks out okay all right so because i can buy the take i see this is why i was i was confused because i can buy the take that that we rely too much on the takes of these pre-computer people. And that misinforms us on the world we have today, which is not a pre-computer age. And so when we're imagining the use cases that people have, when we're imagining what computers are for, they're not in the context of a computerized world. So I mean, I think one example
Starting point is 01:08:06 was like, you know, modeling being a focus of what computers do rather than entertainment. Right. And we know now that like, entertainment is a major component of this. And if we just ignore that, and are like, well, people shouldn't be spending all their time being entertained, that might be the wrong sort of approach. It be like okay how can we make that entertainment also fulfilling not addicting not you know whatever right like you can imagine refocusing our efforts so this is what i thought you were going to say is like these people have undue influence on our thoughts and maybe yes we should know our history yes we should think about it but maybe like aristotle might have had uh pre-newton right like aristotle considered harmful might have been a take because like his thought was so totalitarian in the minds of people that they couldn't imagine
Starting point is 01:08:58 something outside of it that take i might i might i might i don't know i might buy but people should stop dying the interesting thing is not also charles babbage being on the list it's like like that was like i knew oh no charles babbage and his big influence on free computing thought and how much i'd have you read charles babbage here here i was thinking that that one got by without you catching it okay i'm glad that you caught that have you read charles babbage uh i have not read charles babbage oh i will find some excerpts of charles babbage so the reason you object to charles babbage being on that list is because he's not as good oh no because i don't think uh i don't think you know what charles javavage actually wrote uh okay so he published a a series of treatises called the bridgewater treatises
Starting point is 01:09:56 that have titles like on the power wisdom and goodness of god as manifested in the adaptation of the external nature of moral and intellectual constitution of man. Right. This is not the right one. This is Thomas Chalmers. That's what they linked to from Wikipedia. Oh, this was the series he was a part of. Okay, my bad.
Starting point is 01:10:18 But it's still the kind of stuff. I'm thinking like Babbage of Analytical Engine fame. That Babbage. Yeah, yeah. That's him he he wrote like most of his writings were on uh on religion yeah kind of like uh like uh whitehead right was it north one of the two of them went like very kooky was it north was it north or whitehead i think it was whitehead what uh like the two authors of Principia Mathematica.
Starting point is 01:10:45 Yes, that's why I'm... Who are the two authors? I thought it was somebody, somebody North, and somebody, somebody Whitehead. It's Alfred North Whitehead. Oh my God, Bertrand Russell. There we go. Was it North or Whitehead?
Starting point is 01:11:02 North or Whitehead? I'm sorry. I know that didn't make for great radio, but it was too good for me to pass up. Yes, yes, yes. Okay, Bertrand Russell. There we go. For some reason,
Starting point is 01:11:12 Bertrand Russell, in my mind, is a playwright. All right, here you go. Here's Babbage. I finally found a good quote from the ninth Bridgewater treatise, not the other one, because that was not his.
Starting point is 01:11:39 It is more consistent with the attributes of the deity to look upon miracles, not as deviations from the laws assigned by the Almighty for the government of matter and mind, but as the exact fulfillment of a much more extensive laws than those that we supposed to exist. This is your new radio voice, Jimmy. This is how you have to read all quotes. This is a very good radio voice. That's the contradictions that have imagined can... They have imagined. Anyways, he wrote about theology, and I'm pretty sure the whole getting all this computation
Starting point is 01:12:11 was all in service of his understanding the universe so he could understand God. Yeah, whatever floats your boat. I just don't think anyone's influenced by Babbage in his writings. He's also in that list of people who are our living memory of the time before computers. Babbage, definitely number one, most read. Okay, so actually on considered harmful things, I'll throw out a bunch of random ones here that I don't think we need to talk about,
Starting point is 01:12:40 but I want to state as my opinions. All right, cool. Bring out your dad. ORMs considered harmful. Code styles considered harmful. Wait a sec. Code styles? What are code styles?
Starting point is 01:12:51 I'm not familiar with that term. Like, we have a style guide. You should follow it. Like prettier or whatever. I'm fine with automated tools that just go and format stuff, but like, hey, we can't merge your PR because you put two new lines instead of one and you oh this is where these things go now i have no problem saying like these are the conventions
Starting point is 01:13:12 of a coding community like pep8 or something like that but individual companies being like we always format things do things exactly this way and if you name something with is versus that and that kind of thing. It's good to teach junior developers to have reasonable code style when they don't indent their lines and stuff like that. If that's the level we're talking about, but if it's good engineers
Starting point is 01:13:38 who've been working for a while just disagreeing on some silly little stylistic thing, just let people do it differently who cares i might take the under on this one i think those discussions are just proxy wars over who's in charge yeah but that's hard considered harmful dystra um so this is anytime you say you want to go build something and people are like but why why are you going to go build that? That's really hard to build and X already exists. Why don't you use that instead?
Starting point is 01:14:09 I think that attitude. I put out on Twitter a while ago that I was building a text editor and someone was like, why? It's really hard to build a text editor. I was like, yeah, that's why I'm building one. Can I jump someone in mind? Because I have almost the same thing but with different words, which is DevX considered harmful. The notion that the choice that you make to do one thing or another Can I jump to one of mine? Because I have almost the same thing, but with different words, which is DevEx considered harmful. Dextra.
Starting point is 01:14:25 The notion that the choice that you make to do one thing or another should be driven at all reach for tools like React or Tailwind or Vite or other things that are things that they could probably build themselves from scratch and if they had built it themselves from scratch or had had engaged with things at a at a lower level instead of using some abstraction on an abstraction on an abstraction they would build a better product they would learn more in the process and they would have something that is probably more maintainable at the expense of maybe it not being so easy to hire new people and bring them in and get them going on the code base because it's in some form that isn't like a de facto industry standard. And it's these de facto industry standards
Starting point is 01:15:34 that are so much about developer ergonomics as opposed to making great products that I just find that harmful. That's an interesting takes on DevEx. I see it. I'm not disagreeing with it. But I think like, you know, maybe to, you know, play devil's advocate here, people would say, well, developer experience is just like, we should make developers lives easier and make it easier for them to implement things. And maybe people then take that as like, ah, well, I just got to be like that other system.
Starting point is 01:16:06 But that isn't in and of itself what DevEx is about. I'm curious, if we take maybe the original or true definite, are you still opposed to developer experience making something nice and ergonomic for developers? Or are you opposed to the industrializing of DevEx? I guess I'm opposed to the kind of the industrializing of dev x i guess i'm opposed to the wielding of dev x as a justification for making choices that are ultimately harmful to the product okay or that are ultimately harmful to the end user where it's like we're gonna build this thing in this way or we're going to choose
Starting point is 01:16:45 this technology and our primary motivation for choosing and i and i see this most reflected in the way that things are marketed to developers they are marketed as you know this makes this thing that you do so much more convenient and so much more comfortable and look at and and and you can think of any number of recent examples but the first time i saw this in a way that i think it was maybe the beginning of the the bad times was the original angular js it was this you know web development framework it was for making single page apps back before that term even existed. I think it was around the time that Angular came on the scene, you know, pre-react that we started to think about, oh, hey, a web page can behave more like an application. And the thing that Angular put front and center as the like, this is the reason you would choose
Starting point is 01:17:38 this framework is because with two-way data binding, you can put a period in a certain place when you access a property of some JavaScript from your HTML. You have some HTML attribute and you say, you know, my state dot value, and you get two-way data binding. And then you have, you know, if you put my state dot value in a text field and you put my state dot value is the text of a P tag. Hey, if you type in the html input your p tag updates automatically and you didn't have to write any code to do that you just you know glue some properties together and it was this like front and centering of it being so ergonomic coupled with the fact that if you actually learned angular js and actually invested in the framework it was this horrible cobbled together pile of
Starting point is 01:18:26 misfitting systems and complexity that did not scale at all. And that was incredibly miserable to use. But it was the beginning of how appealing can we make something look to developers being the thing that is front and center in the conversation. And I think DevX, yes, it means a lot of things, and it means some positive things, but it also is used as a shorthand for, hey, if this thing has good DevX. And it's familiar or convenient. So when I think of the start of the modern DevX movement, I think of Rails. Sure. When I think of the start of the modern DevEx movement, I think of Rails. Would you also lump that in in the same kind of category? Because what launched Rails was this build a blog engine
Starting point is 01:19:13 in 10 minutes or whatever? Yeah, build Twitter clone in five minutes, that whole thing. Yeah, so you consider that all part of the same kind of... I'm just curious to understand your thoughts here. I'd be happy to accept that as part of DevEx. There's a certain kind of JavaScript DevEx that I do feel like is distinctly JavaScript community. So I'm just curious if that's what you're reacting to, or even things like Rails trying to make developer convenience.
Starting point is 01:19:41 I mean, I would see this, I see this also in Swift and apple's platform apis and swift ui and that sort of thing like it doesn't just have to be javascript javascript certainly has a particularly nasty strain of this rails had a little bit of this also not in rails itself but in the gem ecosystem that grew up around rails where so much like devise and warden and uh all the different like simple form and factory girl back before they renamed and all these things were trying to advocate for build your rails sass service as a bunch of modules that you just plug together and i think that that insofar as it discourages people from engaging substantially
Starting point is 01:20:27 with like how do these things actually work in a fundamental way what are the concepts that they are building on it's it's like you have learned to work only in terms of interfaces that are designed by people who don't have a holistic view of the thing they're building gotcha my most recent one is tailwind i'm i've i do not like tailwind i think tailwind is a is a really nasty trade-off where it's like hey it will help you style a web page very quickly up front without having to learn css without having to engage with design as a like considered process you can just kind of like bash these little classes into your html until you get something that looks roughly the way little classes into your html until you get
Starting point is 01:21:05 something that looks roughly the way you like it to look and then what you are left with is this just miserable soup of html that i think is unmaintainable and is and is bad and if you had just slowed down a little bit and instead of racing ahead to try and build an mvp had slowed down and actually like designed a style sheet properly you would have a more maintainable nicer thing that you have built for yourself for the long run so i have one on here that's i think in some ways the opposite of what you're saying right now okay so i have not invented here considered harmful extra oh no that's my whole thing. Yes. Yeah, so, okay.
Starting point is 01:21:49 I want to caveat this one and say that in your personal life and personal projects, not invented here, I can also say with Ivan's idiom of not invented here or of considered harmful actually being considered good. Dykstra!
Starting point is 01:22:04 I'll say not invented here considered harmful because we don't have enough of it. Dijkstra! In your personal life. So like personal projects, I think not invented here is great. In the business world, I do think if you're, it depends on your context, but if you're on a team of people,
Starting point is 01:22:26 non-invented here stuff, like I want to recreate everything and I don't really have a good reason to do it other than I don't like the other things, it's usually awful to work with. Yes. And it makes everyone else's life miserable. You really should have a good reason to reinvent the wheel in your day job this is why i was like interested in you picking rails because rails is one of those like it's a good counter because i think rails is actually well architected and i think that it does allow you to engage with the things that it is abstracting in a useful way like it does lift you up a level but it allows you to be conscious of the level that you have been lifted
Starting point is 01:23:15 up from in a way that like i think a lot of people who use and i'm going to pick some more on tailwind a lot of people who use things that are meant to stop you from writing a style sheet those things are meant to save you from having to learn how to do css whereas i don't think rails is trying to save you from having to learn how like http works or how web security works or how databases work i think it is yeah that and that's why orm considered harmful is one of my things here and i think everybody's like yeah active record was probably the wrong way for rails to go active records definitely like i think one of the weak spots of rails i think i see where you're coming from i i do think i would i do think we have different
Starting point is 01:24:02 stances on not invented here because from everything I've heard, you have invented a lot of things for business applications, like your own module system and staying on CoffeeScript as a CoffeeScript dead-ender. Staying on CoffeeScript is not something I invented. There's dozens of us. Uh-huh. But you recreate a bunch of things because you're staying on coffee script only because coffee script makes it nicer to recreate those things than to use the awful inconsistent slow weird things that have actually been hacked into JavaScript over the last decade.
Starting point is 01:24:48 Like TC39 and the pressures that, in particular, people at Google have subjected them to. It's like there's negative externalities of it on the long-term future of the web that worry me. I getcha. So here's my next take that I almost didn't include because it's just like such a basic hipster uh take which is oh considered harmful fixture uh yeah i don't think i need to rehearse arguments against oh uh and i know that obviously there's a uh sizable portion of our audience that are like but small talk maybe but. But OO still considered harmful. It's good dice.
Starting point is 01:25:27 Wait a minute, wait a minute. Do you just want to drop OO considered harmful and move on? Do I really need to justify it? Like, okay, to me, this is one of those things where I'm not going to convince anybody. You're just like signaling to the audience that yeah you know that i wanted to remove it because it felt like i'm it felt like too boring or basic of a take and just like branding myself but it it's also something that i think like the what i didn't put on here is functional programming considered harmful but in ivan's sense of considered harmful is a good thing because we
Starting point is 01:26:01 don't have enough of functional programming thanks uh but John. But I didn't put anything about, like, I wouldn't put if we had a considered helpful or whatever. Functional programming considered helpful, even though I like it. I just think, oh, it makes us think about our programs in a way that I don't think is actually helpful to think about for like 99% of cases. I think thinking about our programs as a bunch of nouns, as a bunch of things interacting, is generally a limiting way of considering stuff. And it's a conceptual framework that asks questions that aren't about your problem and makes you go down these rabbit holes i would think the same of even though i think like i think you should learn it i think it's good to go learn i think it's important blah blah i would say the same in my opinion of
Starting point is 01:26:56 like the very functional programming big types sort of thing, like bifunctors, even though I might think it's interesting to go learn those. I don't know that they're really helpful for thinking about your program in a lot of ways, even though I do think monads were helpful for me. Like, I don't know. I think OO in particular has a bunch of just cruft that I don't think it's helpful to organize your programs around. i i wrote this also because i was working on some android code where like the android system web view you have to subclass the chrome client and the web client and then the web view and then you have to make them talk to each other somehow but indirectly because they can't talk directly
Starting point is 01:27:41 to each other and now i have some state in my ui and i need to propagate it over there but that means i need a subclass and it's just like i don't want to think about i and then you see like the react native abstraction around this and all this was just to high to change items in a menu i had to do like these crazy levels of object and then the react native abstraction is menu items equals array the end and they do all the weird nonsense i had to do for me um so yeah i just don't think it's worth it so the natural phrasing of this one would have been to preface this with the but in our culture it might be confusing so i just said office considered harmful so if i say the office like am i referring to a tv show i think office like the office people going to an office working on premises like i think that's bad yeah private versus public in a language i also think that whole distinction is
Starting point is 01:28:41 bad and languages should not have it. Everything should be public. I think we actually agree on that. Wow. Wow. Nice. Yeah. Hype considered harmful. Dykstra.
Starting point is 01:28:58 You might as well just say like falling off of a bicycle and scraping your knee considered harmful. Dykstra. I have two left. Black boxes considered harmful. Dykstra. Like like the recorders taking anything as a black box the the intentional stance of i will never look into how database is running things because that is too low level for me or that's just a given fact nothing i can do about it i i know this sounds like a silly thing but i think people practically consider all sorts of things black boxes all the time and it limits they do you you talk to people about um performance and they'll say well you really don't need to worry in most
Starting point is 01:29:40 cases about the performance of your code cpu wise because it's almost all io bound which is almost always wrong it's it's not io bound in any strict sense it's usually some other cpu over there doing things right or it's you didn't properly access that io or you didn't cache it or whatever right like it's it's almost io is very fast these days. And so like, we consider a lot of it, or we consider like, memory allocation being a black box, and we don't look into the memory allocator. There's just a lot of things that we take. Of course, if I said, oh, you're considering that a black box, you'd be like, oh, no, I'm not like, I shouldn't, or I know that's bad. But practically, we draw a boundary of, and I won't consider how that works because that's beyond my purview.
Starting point is 01:30:30 My incredulity here is only that, isn't this the same as when I said, hey, not understanding the things that are hiding behind these convenient abstractions that people- You said DevEx considered harmful yeah in that the problem with dev x is it tries to turn things into black boxes that ought not to be black boxings yeah that's just not the way i would put yeah so i didn't if that's all you meant that i agree yeah that that was pretty much what i meant cool though with the more glad i could phrase it better for you uh thank you yeah you do a good service here on the show we'll get to that all right last one for me uh is i think rules
Starting point is 01:31:12 are considered harmful okay all rules what kind of rules are we talking about name a rule it's harmful including the rule that rules are harmful i i think okay i think uh setting up rules as like these are these are the ways we do things we are i am making rules i am instituting them on high you must blank is nearly always of course there's like commonsensical rules like we won't introduce security, known security vulnerabilities in our software, things that don't need to be stated, right. But things that need to be stated, making rules is the wrong solution to the problem you're facing. So you might say, we're not testing enough, I'm going to make a rule that all PRs must add tests, or you must
Starting point is 01:32:01 never have test coverage go down. It's the wrong solution. It's the wrong way to solve the problem you're trying to solve. And so I think we as software engineers lean on rules so often as ways of getting the conduct we want. And we forget that it's really about people's thoughts, their desires their the hearts and minds uh which has forever been ruined uh but the hearts and minds of people right like that is really what we should be caring about because rules don't actually get you the behavior you want in the long run they just get you the results you're measuring and the you're almost always aiming at the wrong thing so if you ever see yourself like i just want to institute this rule that to me is a time to reflect and go what
Starting point is 01:32:52 what's the real problem here and how can i solve it at its root instead of mandating i'm uh yeah i'm in complete agreement about this and my way of like my little internal mental uh mnemonic device is that like um i think of rules and i don't i don't know that i call them rules but i think of this sort of bureaucracy as a kind of scar tissue it is something that is generated as the result of some trauma and instead of addressing the trauma you've just kind of scabbed over the issue. Yeah, that's a good way of putting it. Yeah, that kind of institutional scar tissue is, yeah, I think it's bad. That's it?
Starting point is 01:33:33 Those are yours? That's mine. Okay, great. Well, I'll bring up my dad. So I have video games considered harmful. That's a good dice, Chris. Did you just not understand this essay at all and my note for it is i waste a lot of time playing video games you're just listing all good things uh yeah that's it all those substantial things that are things that people probably
Starting point is 01:34:01 disagree with in our industry i am am just going to list chocolate considered harmful. Dykstra. Yeah. Cause I eat too much of it. It's bad for my tummy. Uh, so then I don't have enough of it. The next one that I've got,
Starting point is 01:34:14 this one's more substantial. This one's not, this one's not a joke one that is meant to rankle Jimmy. Oh, okay. I have to read this a certain way. It's kind of like you're at the office considered harmful. Um,
Starting point is 01:34:24 this one, if I don't read it right, it just won't make sense. All Things Considered Harmful. Dextra! All Things Considered, colon, harmful. The radio pro? The NPR radio show, All Things Considered, yeah, is harmful. Why didn't you say All Things Considered, Considered Harmful?
Starting point is 01:34:44 Dextra! I'm making the word considered do double duty uh all things considered harmful which is just my little my little opportunity to work into this episode once again the perennial theme that i think that podcasting as a medium is very different from radio as a medium and i think that there's a lot of podcasts out there that want to emulate radio. And I just want to take a moment and say, stop, don't do that. Podcasting allows you to do things in ways that are wildly and wonderfully different from what radio allowed. And that's due to technology, and that's due to economics, and that's due to the circumstances of production and access to the
Starting point is 01:35:23 means of distribution. And it's due to the expectations of the audience. And it's due to the circumstances of production and access to the means of distribution. And it's due to the expectations of the audience. And it's due to, you know, the fact that one of them is on demand and one of them is broadcast on a schedule. And one of them requires being created in a studio and the other one doesn't. And I think that if you have to try and emulate radio, you should try and emulate Radiolab. That if you're going to make a podcast and you want to do something that is NPR adjacent, then start with Radiolab and go from there. So, all things considered harmful.
Starting point is 01:35:53 You just wanted to make sure that you could have the reading of that, that everything is considered harmful. No, but that's a good reading. It's a very Jimmy reading of that. All things considered harmful. Yes. And that was...
Starting point is 01:36:07 Dykstra. Philosophy Corner. My next one, considered harmful scolds considered dreadfully uncool. Dykstra. And in reading this, I'll read that again so you can parse it. Can I repeat that? Yes. And I'll read it again after I set up what it is
Starting point is 01:36:27 In doing the reading Go to statement considered harmful And doing some background reading You of course encounter like we said at the top of the show The fact that a whole bunch of people Have made their own considered harmful And that one of them is Considered harmful considered harmful
Starting point is 01:36:42 A lot of ink has been spilled bemoaning the considered harmful snow clone genre dykstra whenever you make a considered harmful dykstra scolds come out of the woodwork to chastise you for calling something harmful for being incendiary or whatever and i just wanted to say that uh sometimes it is fun to be incendiary and to play with this format. And so I think if you're the kind of person out there who's saying, considered harmful, you are a scold. And thus, considered harmful scolds considered dreadfully uncool. So what you're saying is you want more people to give considered harmful takes.
Starting point is 01:37:26 Dykstra. Yes, yes, that I like considered harmful as a format. Dykstra! I mean, I do hope that we get some good considered harmful takes. Dykstra. In the Slack or on whatever social media platform of your choosing. I'd love to hear, you know, people disagreeing with us, but also like, I want to hear your own takes on what you consider harmful
Starting point is 01:37:46 yes, that would be great discourse I'm going to skip startups considered harmful you know what that argument is I thought about putting that on my list I did, I was like should I? do I really want to? the reason I didn't because i think it's a more complicated topic yeah like my my notes for that one go into like ubi and all
Starting point is 01:38:12 sorts of other wild tangents so yeah i would say it's like are they really because there are some startups i'm like i don't consider that harmful but it's the ecosystem it's the fact that startups are a necessity within the systems that we have that i consider harmful i would like there to be alternatives to startups that are ways that new ideas can enter the world startup monoculture yeah that's that's great i have uh Dykstra. Have you tried to read papers? They're boring. Papers are boring. I tried reading a paper by Dykstra and my teeth fell out. Books Considered Harmful.
Starting point is 01:38:53 Dykstra. I have too many of them to read and they keep multiplying. There you go, Jimmy. There's another one of my, actually, it's a good thing, but I'm saying it's harmful because it's too good. There are people out there in our extended community who do think books are harmful because you don't actually remember what you read in them. And so you spend all of this time reading them and if you ask somebody what you read, you cannot remember it all.
Starting point is 01:39:16 And so they're a bad medium for what they're supposed to be doing. I think that's interesting and I really disagree with it. But that's not my take. My take is that... You have too many of them, and you don't have enough time. I had to include that one in my bring out your dead round, because you're convinced that I don't understand what considered harmful means. I'm so shocked that Ivan took the considered harmful meme and turned it on its head.
Starting point is 01:39:43 Thanks, Tra! Or, like, you you know ripped it into several smaller pieces and it's kind of pushing those pieces around on the table like look this weird dead thing i found um all right my new one is allowing your queen to be forked considered harmful it's good dice track fork your queen allowing your queen to be forked so if you have a queen and then it's like now we have two queens because we forked this queen yeah see i do i i've been learning chess lately and i've been playing daily games and i just got a message saying that somebody so daily games meaning i play or at least one move a day so that's the time format format. And I just got a message that someone resigned
Starting point is 01:40:25 when I forked their queen. In this case, it wasn't really a fork. It was more complicated, but it was more fun to say forking queen. So basically what you do is, like, you move a knight, and now the knight is attacking both the king and the queen.
Starting point is 01:40:41 Oh. Right? And there's no way for you to defend the queen with how the setup is so they have to move the uh the king the king and then you take the the queen cool i'd never heard that term that's fun very relevant radio yeah this is this is good good good at playing chess is good i got three more a small a and a large, in that order. The small, not supporting us on Patreon, considered reasonable, but like, come on. Come on.
Starting point is 01:41:10 That's the small. The medium, compilers considered harmful. Dyke strike. Which is, I don't know why you, Jimmy, would want to work on compiler stuff when what we should actually be building is live systems that you modify from within. You can do that with a compiler. Yeah, yeah, yeah. And you need a compiler to do that.
Starting point is 01:41:34 So, Kent, of visual languages you're interested in. I do think this is actually a really interesting project because most of them that I've seen, there is a paper I know that's on a visual formalism for visual programs. It's on my list. I haven't looked into it but i do think it's interesting because one of the things they complain about is that for visual programming languages people will formalize it using like the lambda calculus or some other and they're like but that isn't itself visual and so we need a formalism that is visual which i like the premise of it seems really interesting um but one of the things of course they, that you don't incorporate is the time dimension that you're looking for.
Starting point is 01:42:26 They're looking at more node-wire visual programs. And so, yeah, I do think compiling your visual programs into something that's a nice, good executable is something we should have and could use and would be nice. And this is something where I know so little about it that in my explorations of visual programming i always get to this point where it's like okay how do how do i actually want to construct a set of semantics that are expressed in terms of some meaningful execution concepts and and have them be you know evaluated or what have you like that that work
Starting point is 01:43:07 i'm always just like i don't care about that part of it and so i i feel the compulsion to just uh oh i'm just going to pick some existing system and build on top of that but like you say that existing system will not have been built with the new possibilities that it being visual and temporal afford you. Yeah, I think that this is something that I do think if you go back to making HEST, we should actually try to collaborate on. Because I have some ideas, but I'm not going to build out the user interface part of it, because that's too much work for me. Yes.
Starting point is 01:43:43 So your take on compilers is,ivan's take on compilers considered harmful considered harmful thanks sure yeah because yeah uh yeah stop building the kind of compilers that are just for compiling static text languages and i agree on that start start making some more dynamic systems yes static systems Static systems considered harmful. Thanks. I'm all for. So this is my last one. This is a big one.
Starting point is 01:44:10 Okay. And it is Jimmy Miller considered harmful. Thanks. He works on making textual programming better, which, as we've established, is not a thing that we should be doing. He has positioned himself within the upper tier of technology influencers so in that way he is a threat he takes orders from a dog named lemon no less than on two occasions during the recording of this very podcast he left the recording of this influential technology podcast to go serve the needs of his dog lemon he seems almost disarmingly gentle and sweet he doesn't swear on podcasts and it is for this list of reasons that we must not trust him and consider him harmful
Starting point is 01:44:53 yeah see i asked ivan how goofy his list was and he said not uh i said it a little bit i said a couple of them were kind of weird uh-huh a little bit okay he said a couple of them were kind of weird. Uh-huh, a little bit. Okay, he said not at all. If he said not at all, then I would know that they were goofy, which is why he said a little bit. Well, some of them are a little bit goofy. Uh-huh, yeah, yeah. So that one was definitely a weird one and definitely not a large one.

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