Future of Coding - Myths & Mythconceptions by Mary Shaw

Episode Date: December 29, 2023

In the spirit of clearly communicating what you're signing up for, this podcast episode is nearly three hours long, and among other things it contains a discussion of a paper by author Mary Shaw title...d Myths & Mythconceptions which takes as an organizing principle a collection of myths that are widely believed by programmers, largely unacknowledged, which shape our views on the nature of programming as an activity and the needs of programmers as people and the sort of work that we do as a sort of work, and where by acknowledging these myths the three of us (Mary Shaw primarily, and by extension Jimmy and I, those three people, that's it, no other people appear on this podcast) are able to more vividly grip the image of programming with our mind's eye (or somesuch) and conceive of a different formulation for programming, and in addition to these myths this paper also incudes a number of excellent lists that I take great pleasure in reading, beyond which I should also note that the paper does a job of explaining itself and that hopefully you'll find I've done a similar job, that's the spirit, please enjoy. Links $ patreon.com/futureofcoding — I've recently changed it so that there's only 1 instance of the INTERCAL tier available, so if you're interested in those perks you'd better hop on it quick before nobody else does! There's also a video, though I haven't watched it. Claude Shannon would have something to say about revealing information. Top 10 Hits of the End of the World is an album by Prince Rama. Listen to it as loudly as you can on Bandcamp, Spotify, or Apple Music. Val Town is the new startup by Future of Coding community founder Steve Krouse Ivan recently took a job at Ink & Switch on the "Ink" research track. Programmer Bums, or, rather, Computer Bums Limmy's Wa Retool MythBusters The Flop House's Final Judgements: Good-Bad, Bad-Bad, Kinda-Like CRDT Data Robust-First Computing is an approach championed by the hero Dave Ackley, and I have a well-informed hunch that you'll be hearing a lot more about it in future episodes. The T2 Tile Project is another Ackley joint that, perhaps, works as a wild example of what Mary Shaw means when she talks about an "execution ecosystem". Devine's talk at Strange Loop: An approach to computing and sustainability inspired from permaculture MUMPS (the medical thing, not to be confused with mumps the medical thing) is used by Epic (the software company, not to be confused with Epic the software company). The Glass Cannon podcast network. Lu's SPLASH talk Cellpond: Spatial Programming without Escape The Turing tarpit Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire by Erik Meijer, Maarten Fokkinga, Ross Paterson. Richard D. James is the same person as Richard P. (Peter) Gabriel, right? Similarly, see Neil Armstrong's work on Erlang (which is popular in telephony, right?). The Witness is not going to appear in our show notes. Jack Rusher. Jack Rusher? Jack Rusher! TrainJam Gary Bernhardt's talk Ideology Nobody remarked on these silly links last time, so this time I'm drawing more attention to them: Tode: Neopets • MySpace Berd: Angelfire • Orkut Bot: Geocities • Friendster https://futureofcoding.org/episodes/069Support us on Patreon: https://www.patreon.com/futureofcodingSee omnystudio.com/listener for privacy information.

Transcript
Discussion (0)
Starting point is 00:00:00 so ivan how much of this is your we don't talk about the thing that's changed why what changed so ivan always talks about the fact that like if we do something different we can't talk about it because talking about it makes it too obvious about what i'd prefer that we go as long as possible without letting anybody know i mean i i think it's going to be obvious because like my audio is so different. So right now I'm not at home. I am in a hotel in Kansas City. Why are you in a hotel in Kansas City? A horse show. A horse show. Okay. You're showing a horse? I am showing it to Kansas City. Whoa, you can't, you can't, this is PG. This is PG. You can't say you're showing a horse to kansas city what kind of horse are you showing jimmy a big one yes uh yeah so anyways i'm in kansas city
Starting point is 00:00:56 you know my wife janice is showing a horse here and the i will say though it is the weirdest venue for one fact. Okay, so you're always at these venues for horse shows. They're not glamorous. Yes, I am. Yes, I am always. I'm saying win one is at these horse shows. These venues are not glamorous. They're like county fairgrounds or state fairgrounds or whatever.
Starting point is 00:01:20 And a lot of times they're like these big concrete brutalist buildings that are dark and like warehousey. Horses love brutalism. Yeah, yeah, absolutely. The arenas are all nice, but then like the actual place where the horses are is not the nicest environment in the world because you have to fit lots and lots of horses from everywhere. And that's fine. It's right by a railroad track. That enough would be like, okay, this is kind of normal.
Starting point is 00:01:50 The weird thing is that it's multiple stories of horses what uh-huh wait what yes so like the usually it's just like one story but now there's like a ramp that goes up and then like above you think like you're in a car you know parking garage there are more horses up there and so you'll just be walking around and you hear a horse walking on the ceiling above you and neighing above you i don't know that i've ever been under a horse before exactly it feels very wrong like there should not be some uh a ton you know two thousand pound creature just like above me yeah even though it's through the concrete or whatever it just throws off everything because like when you're around horses you're you know you're paying attention to make sure you're not in the way of a horse yeah and now
Starting point is 00:02:37 all of a sudden it's flying it's flying hang on okay so that's why your audio setup's different this time yeah yeah so if i'm less echoey than uh you know no i i think actually i got a it's a pretty nice hotel room in downtown kansas city but the fact that it's nice means it's all hard surfaces. So it might be a bit more echoey. Yeah, a bit more echoey than normal, but otherwise we'll treat this as a normal episode, I think. Yeah, my setup's a little bit different too. Normally I don't really care too much about it, but I know that, Ivan, you do a lot,
Starting point is 00:03:21 so I've got to impress you. I've got to raise my standards for the future of coding. So what have you done this time that's especially different from how you normally record? I deleted my entire setup. Oh. And then I asked you for the template. That was my whole process from start to finish. But no, normally it has this, you know,
Starting point is 00:03:46 this whispery, relaxing stuff. Which I did hear you did an episode like that. I did do an episode like that. And thanks for throwing it to the Patreon. Dot com slash future of coding. Oh, yeah. The most recent bonus episode, if you are a Patreon subscriber,
Starting point is 00:04:04 is something I called Liminal Programming. And it is a recording of me talking in a quiet, gentle voice about visual programming. And it is narrowcast at one specific person, because they mentioned on Mastodon that they like listening to my voice as they fall asleep. And so i recorded an audio sleep aid for this one person and if you want to find out if you're that one person well subscribe to our patreon does the one person that this episode is targeted at do they subscribe to the patreon that would be telling the answer is no that's that's okay that would be like a gdpr yeah that would be a gdpr violation yes yeah fair enough is it a gdpr though since it's no ah oh god yeah you can only reveal information you can't reveal non-information i'm sure shannon would have something to say about this well yeah so that's what's uh that's what's different with me yep that makes sense yes yes this is so cursed i think it's uh the most important thing to to realize though about
Starting point is 00:05:14 this whole thing is that there's this big myth oh that this episode was just for one person but really like ivan just believes this but it's not really true. It's not objectively true. There's no way to prove it whatsoever. I think this episode was for everybody. But Ivan is just stuck in this myth that only some people care about liminal programming. And that kind of brings us so coincidentally into the topic of this episode. You're a magician, Jimmy. what a wonderful kind of magic you practice uh-huh this like beautiful segue about myths and misconceptions what does it mean to be a programming language anyhow no i'm breaking our overtalk rule no it's myths and myth conceptions i've been thinking of it as misconceptions this whole time oh my gosh it's
Starting point is 00:06:06 myths i i did too myth and myth concept i actually didn't read it that way you did read it that way i didn't mean to that was that was a freudian slip that worked um yeah myths and myth conceptions myth conceptions now i'm gonna speak with a myth this whole episode which is like a lisp but it's a myth so it's a oh what would it be it would be a a lism that's when they accepted m expressions into lisp that was actually good that was actually yes the unnamed person is unimpressed I'm doing the thing where I'm not saying the name of a thing there's a thing that I'm not acknowledging by refusing to name it
Starting point is 00:06:55 you mean like like Hest no not like Hest yeah either's fine either's fine anyway this is should we uh today we are talking about a paper by mary shaw called myths and myth conceptions what does it mean to be a programming language anyhow i'll start off with in the great tradition of talking about the first page of the text this one is is not fun yeah let's just skip right over
Starting point is 00:07:25 it i do not understand this first page at all it's supposed to be like an abstract yeah but like halfway through the abstract it just starts saying random sentences that's what it feels like to me like i i sat and tried to parse out the second paragraph of this and what the structure is supposed to be and i do not get it i don't know if it's a list i get it okay and that's why i want to bring it up because i had to just like skip over this thing in fact i'll go ahead and put out my biases here i struggled with this this paper i actually went and printed it out and highlighted it physically because every time i would keep trying to get through it i felt like i was making no progress and so i needed something that would show me that i was making progress oh my goodness okay i would add this was a very long paper yeah it was it was pretty long
Starting point is 00:08:19 it was like 40 pages which for us is long oh yeah i had the same trouble i didn't know how far i was through i was lost so i opened up the mini map on tl draw and uh i could see how far down i was and um that did help that wasn't a that wasn't a plug by the way that was not a plug okay but i'm gonna use my plug laugh whenever we talk talk about TL Draw, I'm going to do some plug laughing. Oh! For the audio listeners, here are all my pages. Let's see. Yes.
Starting point is 00:08:53 Those are some pages. And I'll share, you know, actually maybe this has spoilers in. But I could share the TL Draw room where I put my notes in. Yeah, I'll go start vandalizing it the way i vandalize your other tl draws you send me all right okay so i'm gonna read this second paragraph because i think it's a great intro summary to what this paper is about go to hell several persistent oh no no it builds up the previous i i made the i made the face even like i i was like okay i want to see how he's going to read the second paragraph when the first sentence
Starting point is 00:09:31 has reinforced this focus just like completely no no context this focus well unfortunately unfortunately that context is going to have to be emergent over the arc of the episode, because it's too late to go back now. Several persistent myths reinforce this focus. These myths express an idealized model of software and software development. They provide a lens for examining modern software and software development practice. Highly trained professionals are outnumbered by vernacular developers. That is a truth of modern software development not a myth yeah this is this is confusing as hell um thank you right okay hold on i i want to be so pedantic here because like this is what i was spending all my time doing
Starting point is 00:10:16 all right so first off this whole like refocus this focus it's like a bad focus of how we're not looking at software in its entirety and instead just looking at like mathematical stuff or something we can flesh that out more that's fine but it's like they provide a lens for examining modern software blah blah colon highly trained professionals are outnumbered by vernacular developers is that the lens yeah for which they yeah so is it the lens that highly trained professionals are outnumbered by vernacular developers i guess that's the lens because that's one of the myths no it's not the myth that's not the myth the myth is the opposite that's the truth highly trained oh are outnumbered by sorry yes that's the truth that's the truth that's the
Starting point is 00:11:04 truth it's not even the myth. But then like, and then writing new code is dominated by composition of ill-specified software and non-software components. So like these are all the truths. So then it just becomes
Starting point is 00:11:15 like a big list. Like every sentence from here on has no connection to the prior sentence. It's just statements. But what it is is each one of them is the summary statement of the
Starting point is 00:11:25 major points made by this paper yes and that's what's so confusing is like if they were put in a list format like especially this is you haven't read the paper and you don't realize like they don't say like we can summarize this as it just starts listing things and it's it would just i it took me so long to escape from this first page just because i i didn't know what that second paragraph was supposed to be doing for me i think the first paragraph is great which is sad that i've been skipped it and that you'll never get to hear it you'll never i skipped the whole page i'd like i didn't even i started at the beginning of the paper i usually don't read the abstract. It's spoilers. The second page is so much better.
Starting point is 00:12:08 Yeah, let's crush ahead to the second. And I think actually as far as summaries go, the conclusion I think is a great high-level overview of what the paper is about. I agree with that. So if we do a bad job of it, listener, then just go read the starting on page 36. You know what?
Starting point is 00:12:24 Just read page 36 to 38 and that's like that's a great you know you'll get the gist of the paper just from those pages i feel like we do have to give we do have to give some sort of introduction here like what is this paper about to ground the listener i'll crush that okay i'll do it perfectly. First try, no notes. You know what? Just before you do that. Sorry to interrupt. Sorry to interrupt. Page three, I think, is a much better introduction.
Starting point is 00:12:53 Okay. Because it is basically a list of the myths. That's what we're all here for, is the big myths and myth conceptions in programming. So, dear listener, I would recommend going to page three, reading that reading that then read page two then read the rest of it that's my advice anyway carry on please okay so here's my i'm not gonna cheat and actually read this i'm this is coming straight off the dome so this this paper i would i would propose using it as like a sorting function or like a, you know, like a bucketing function where if you read through this paper and you find yourself going, yes, of course,
Starting point is 00:13:30 yes, of course, I know this already. You are squarely in future of coding, you know, community, the heart, you know, you've been fully FOC pilled. You are in the right headspace for what we are and what we talk about and if you read this paper and you find yourself disagreeing with it where you say wait no that's not actually how it is it's this other way or you're saying that this thing is a myth but it's actually the truth or whatever or the thing you're proposing is like it has all these problems with it whatever you are not yet properly indoctrinated and need to,
Starting point is 00:14:06 A, go back and re-listen to all our episodes and Steve's episodes of this podcast, because that should convince you. But if not, then come into the Slack and start some arguments, and we'll see if we can straighten you out. Because reading this paper, I felt like I was a choir being preached to. Every point that it it made I found myself going yes of course of course of course of course of course I didn't get a lot of like eye-opening oh wow this is you know a new thing that I hadn't considered instead it was a whole bunch of like yeah that is a really juicy concise nice feeling way of I don't know why I put juicy in there, stating something that I intuitively feel and believe, but don't always have a one sentence tight way of explaining. And so this paper is
Starting point is 00:14:51 just full of these, like, you know, if you occasionally need to drop a bomb to shut down some Haskeller who's being all like, oh, formalisms are the most important, then memorize sentences from this paper because you can throw can throw those down at uh and like a smoke bomb and and win the argument so first a meta point you explain the paper by not explaining the paper no i explain what the paper does the effect of a paper is the the effect it has on the world not the source text whoa you'll know this paper if you already know all of the content in this paper yeah but second by by that i'm i'm not foc pilled i guess oh no we have to fix jimmy i expected based on like some of the trappings of this paper that it was going to be exactly how i've been
Starting point is 00:15:40 experienced it that it was i was the choir being preached to but i actually had to introduce new notation in my highlights which is our question mark oh in the same color highlight next to it and i have it in so many places because maybe i'm just being nitpicky maybe i'm just being pedantic but there are so many statements in here i just didn't understand i just didn't that just felt like there's some misunderstanding i'm having of what this paper's arguing for, because they just are so incongruent with everything else in the paper. I also had a question mark color this time, which I don't usually have. I did it in a few places, but there's also a bunch of places where I invented another color, which is for when i'm merely commenting and i think some of those were things i don't understand but didn't really want to admit to my highlighter you know what i mean
Starting point is 00:16:30 do you have a sentient highlighter you know someone's watching do you know it doesn't bode well that the very final sentence of the entire paper is in my pink, I don't know what this means, color. Uh-oh. And I read this like three times and I watched the video. There was a video? There's a video where she presents it. And so I read this, I skimmed it first.
Starting point is 00:17:00 And I was like, yeah, yeah, yeah, yeah. And then I watched the video and i was like wait hang on and then i read it again so i think i like ivan there is a lot in here where i'm like yeah that's obvious yeah but also like jimmy i have some things which make me go huh uh wait what what are you what are you saying here and like jimmy i also feel this is quite a long paper and ivan i would slightly disagree with what you said i don't think this is how you can drive home some of these points in one sentence this is how you can drive home some of these points in like 250 sentences like if you really really want to go deep or not deep just long you know what i mean anyway it sounds like i hate the paper i don't but i just uh you know
Starting point is 00:17:53 it was a battle and i feel good to be through the battle but yeah i do think there's some interesting things in here and i'll give a very succinct summary of what the structure of the paper is, which is Mary Shaw is proposing that there's these myths that people believe. It's unclear to me who those people are, but people believe, and they've messed up programming. And they're myths, not in just the sense that they're wrong, but that they really don't have any basis, and they structure the way we interact with programming. And so we need to overcome those myths.
Starting point is 00:18:26 And if we overcame them, we could change programming for the better. That's kind of the general structure here. And we can kind of get into those details. But that's something to have in mind is, I think, as the listener, you should be asking, are these myths? And what are the implications of them if they are?
Starting point is 00:18:43 One of the things that i do like that shaw does in this paper is speak to a really particular audience and so the audience she most often seems to speak to um or at least the the group of people for whom she says hey these myths are are probably going to have their most pernicious effects are programming language designers. So the people who are in an expert field where they're focused on building the tools that all software developers will do their work on top of, these people, because of these myths and the perpetuation of these myths, focus too narrowly or ignore certain types of programming activity or ignore certain people who do work that could be considered programming if you broaden
Starting point is 00:19:31 your horizons a little bit and in so doing fail to make the most positive impact with their work that they could if they had maybe not been deluded by these myths so i think i think that part like the focus on programming language designers that like really tight focus on audience is worth keeping in mind as we go through this because that's you know that's who these myths are meant to most directly target not you know folks like us who are yes we like to do our weird you know editor experiments and our spatial programming and our whatever i do which is not a thing um but uh it's not that group of people but it's the people who are like like um uh lou and i were at splash um just recently oh no i said your name uh hey hello it's me the seal is broken oh boy uh luke and i were at uh splash last week and that crowd like
Starting point is 00:20:30 that i think is the crowd that shaw has in mind for this paper is like the professional and academic programming language designers who are like putting forward you know here's the new approach that we're going to take to catamorphisms between abstract data types. This is a talk at Splash that I sat in on with something about catamorphisms and abstract data types. And I, brief aside, I sat in on this talk specifically because to me, I don't know any of what these words mean or any of the domain terminology. So I treated it as a 45 minute like abstract art piece. And it was incredible incredible it was like right at the verge of me being able to understand what they were talking about like i knew i knew i knew 75 of the words
Starting point is 00:21:13 they were using and it was it was uh that beautiful little space like right on the cusp of knowing what the heck anything was about so highly recommend that those people pull the wool off of their eyes with shaw's help i agree with that let's dive in let's dive in huge explosion you know i just want to quickly agree with that and say that me i might complain and you ivan complain hey we know all this already there's nothing new here but actually I think Mary Shaw has probably done the hard thing of writing it out in full or at least attempting to write it out in full and get the right people to hear it so yeah it's interesting to come at it from our point of view where all three of us are already making slightly
Starting point is 00:22:05 unusual programming things this is probably targeted at other people i wouldn't want to do it yeah um all right so so where do we want to be i have some i have some highlights just right off the top uh let's see. There's this bit that's about like what even is a myth that I kind of like right from the first page. And I'll just quote, A myth isn't simply a refutable claim.
Starting point is 00:22:35 In its purest form, it's a heroic narrative illuminating the human condition. It can establish a model for behavior and uphold social traditions. Myths have enduring appeal. People want to believe in them, notwithstanding contradictory evidence. This wish to believe elevates a myth from a simple, objectively testable statement
Starting point is 00:22:55 to a phenomenon whose appeal and persistence require interpretation. And that's by Carly Rae Jepsen, et al., 2009. Okay, I actually put this in pink which is i don't know exactly what this means and one of the things i don't know is like how does a myth compare to say just an abstraction so like when i talk about my computer doing things, it's not actually doing that. So like, when I say, you know, my computer, or my program changes the value, or it changes a text string, that's hugely abstracted, even though it's quite simple from what's actually going on, you know, I'm not going to say, first, it uses the move assembly instruction, and then it does this assembly instruction, and then it does this assembly instruction and then it does this
Starting point is 00:23:45 and that you know so that is kind of like a made-up story i tell myself because it's like it's useful but that's different to a myth i maybe it's like a sliding scale yeah yeah i think i think shaw does a good job kind of talking about maybe not quite answering your question on if that's a myth but we could even just say like let's assume it's a myth for a second. Let's say you have some statement about how your program works, and we want to consider it a myth, right? Shaw says a little bit later, the problem is not so much that myths are untrue as that they are incomplete. They should continue to guide us where they apply, but we should be acutely aware of the risk that they're blinding us to other possibilities.
Starting point is 00:24:29 And I think this really reinforces this point that you're making. Sometimes we talk at levels of abstraction that are good enough. They work for most of our cases, and then sometimes they don't. So maybe we think of variable assignment as happening, and usually it works perfectly fine with the simplified model we're talking about until concurrency comes in right and now that variable assignment was a myth right we acted as if it's atomic when it's really not or something yeah and so i think this is kind of the point that that this paper really makes is that these myths have some truth to them
Starting point is 00:25:06 they might be abstractions or as shaw puts it they're idealizations they hold an ideal conditions but reality is a bit messier right and so yeah i do think those abstractions can be considered myths as soon as they're leaky. If they're not leaky, they're not myths. There's a nice sort of unifying myth or mythos or whatever you want to say under which all the other myths could be captured, perhaps. And it's one that Shaw presents at the top of page three. She says, myths are stronger than tacit assumptions. They are embedded in our culture in a way that resists challenge. These myths arose in a bygone era, one that is even more idealized in memory than it was in reality.
Starting point is 00:25:55 An era with the belief that programming is the use of general purpose languages to create correct solutions to well-specified problems. Programming is the use of general purpose languages to create correct solutions to well-specified problems. That statement right there is going to get torn asunder. It is like four myths packed into one tight little sentence that Shaw is going to rip to pieces in the next section immediately following this one where she has a nice table of the different kinds of myths that we're going to dig into in more detail, but then also throughout the rest of the paper. So if you two are up for it, should we read through this table of what these myths are, this high level, like these are the myths? Or do you want to get to them as we go through the paper?
Starting point is 00:26:44 Because this is just sort of like an exploded table exploded table of contents so we could do it either way i want to know like right here right now all right which of these you think are real myths and which you know like what's truth and what's myth right now yeah let's have at it you know all right so i'll put out of the note that i'm i think we should read through this that's exactly what i think but i don't think we should read so this is a table with myth say myth myth mythos mythos i don't know how you should say mythos see mythos and then say pragmos i don't know what accent i'm doing i don't think we should read the say pragmos all right part we should just read the mythos the same mythos okay cool yeah i'm down for that let's just read the same myth so so the the pragmos is like reality
Starting point is 00:27:30 right like they're supposed to be the myth and then there's reality i don't think we should read the reality we should just read the myth all right and let let our listeners also think about which ones of these do they think are yeah are true myths yeah or reality yeah i mean the nice thing about this paper is that it does have this sense of structure from one myth to the next even if you get a bit lost in one of them then you get picked up very quickly by the next one ivan you've got to do some little myth introduction right you know like i do myth number one we could have done a top 10 myths that's exactly yeah yeah yeah top 10 myths of the end of the world yeah that's actually a really good album oh top 10 hits from the end of the world uh anyways it'll be in the show notes okay uh let's let's round robin jimmy since i'm
Starting point is 00:28:30 allowed to say your name as much as i want first myth programs are written by highly skilled professional programmers myth number two the code is the software. Software is simply the symbolic programmed text. And those two myths are followed by three purity myths. These three next myths together are called the purity myths. The first purity myth is the myth of mathematical tractability. Soundness of programming languages is essential. Correctness of programming languages is essential. Correctness of software is also essential. Thus, formal specifications are also essential.
Starting point is 00:29:14 And I think we should skip the last one. Okay, yeah, let's skip the last one. It'll be bonus for the listener if they decide that despite our best attempts this paper actually sounds appealing you can go and read it and find out what the last one is see that's the thing is like now you know despite our resistance this paper sounds appealing like this was linked so many times in slack yes so many people really enjoyed this paper i'm not saying i didn't i'm just saying i struggled with it just like like the Engelbart, right?
Starting point is 00:29:46 Engelbart is a great paper. Oh, I would much rather read this than the Engelbart. Yeah, yeah, yeah. I would rather read the Engelbart than this, but... I mean, I would. But I do think there's a lot in here. And if you're interested, you should read the paper. We wouldn't pick a paper if we didn't think it was worthwhile reading. Can I say at this point, a thing i really liked about this list of myths is the font the font and under the myth column it's very ye olde englishy
Starting point is 00:30:16 it sets the mood quite well let's see if that works out for them yeah no this actually i i you know i can't um this is a great opportunity. Welcome to the, let's talk about the design of the paper at the beginning of the paper club. I liked the design of this paper. Visually, it was very nice to read. It is not a gross two column photocopy of a PDF kind of thing. It's, you know, nicely illustrated. It's got these great prints of paintings and lithographs and that sort of thing i think these are lithographs some of them yeah the xkcd ones are definitely lithographs there's lots of xkcd sprinkled throughout here like four or five of them some of them were good some of some of them are some of the good xkcds even i mean it starts with apollo killing the python yeah whoa that classic xkcd post yes that's my favorite person yeah yeah when the reddit client killed the programming language all right so uh that brings us to the first section digging into a myth in detail, which is the myth of the professional programmer.
Starting point is 00:31:30 And this section introduces a new term that I quite like, vernacular software developer. So it sets up this dichotomy between professional software developers and vernacular software developers. And here's the quote that I'll read setting up that distinction. A professional software developer creates software as a principal occupation, usually for use by others, and has professional training in software development. A vernacular software developer, on the other hand, creates software in a specific context, has principal responsibility in that context, and has professional training, if any, in that context, rather than in software development. The software is a means to an end, not an end in itself. The alternative terms end-user and
Starting point is 00:32:21 end-user programming are pejorative. Non-professional is misleading. Many are professional, just add something else. I quite like that framing that end-user and end-user programming are pejorative. I also, I feel that way as well. And saying non-professional, yeah, that's like, you know, these are professional people. They're just professional in some non-software development domain. So Shaw is going to use the term vernacular software developer to refer to people who have to make software, but they're not making software for its own sake. They're making software to do something, and that's the something that is their area of expertise. Help me understand why end-user. I can understand why non-professional would seem
Starting point is 00:33:01 not respectful. Why is end-user programming pejorative? Well, I think that from what I've seen the term end-user programming used for is that whatever it originally meant, I think basically what it means nowadays is easy programming. Baby programming. Yeah, baby programming yeah baby programming
Starting point is 00:33:26 toy programming you know you can't do normal programming so you have to do end user programming i mean uh have you heard of this guy steve krauss not not a once never in my day he's uh said some interesting stuff about this recently he says that uh with his current uh valtown project he's trying to make it work well for was it end programmer programmers or something end programmer programming yeah which i think that was a term of art at least um i've seen steve hi steve uh credit jonathan edwards hi jonathan with uh with that term i think uh i think that's where that term may have originated but yeah this idea of like what if we took some of the nice qualities of end user programming that it's like by design approached very differently
Starting point is 00:34:21 from traditional programming but took that framing that approach to programming and made tools that were for real programmers like you know actual professional programmers i mean it's quite a funny phrase and programmer programming it kind of highlights that we're not actually using end user programming to mean end user programming you know it's it's almost like no it would be embarrassing to say end user programming you know it's it's almost like no it would be embarrassing to say end user programming you know this is not a toy thing this is real yeah yeah yeah that that captured definitely part of why i think end user programming is pejorative i'll throw out another another reason why end user and end user programming are pejorative and mostly focused on the first end user there's a a thread of thought
Starting point is 00:35:07 that says that the term user is a pejorative term um some people are some people do it on a linguistic um bent where they say oh user is like the term for somebody who uh who is addicted to heroin so we shouldn't we shouldn't use the term user because it implies like like that that term has some stink on it so uh we shouldn't apply that term to the people who yeah get the benefit from our software wow it's hard to get through that explanation without using the term use we shouldn't use the term use anyways well i i have seen this other uh i guess movement or idea of people not users yeah i'm on that i'm on that yeah yeah you're on that was that you no i'm on that bandwagon is that a intentional drug i'm on that yeah no i'm taking i'm taking people that's what i do as a podcaster is I take people. See, I'm in people ops.
Starting point is 00:36:06 Uh-huh. People. Have you not heard? This is the replacement for HR from Google, I'm pretty sure, is where the term originates. Instead of HR, it's people ops, which is just awful. I'm a PIPX designer. I do PIPX. People interface?
Starting point is 00:36:27 Yeah. And people experience. I have to admit, I don't see how end user versus vernacular feels any different. What have we changed in our conception of what these people need and what the solutions are going to be
Starting point is 00:36:42 that's different if we use the term end user versus vernacular vernacular is cool but i think it's really just trying to say oh and because normal programming's you know it's latin it's the it's the non-normal thing here's another one it keeps the framing focused on the relationship uh mediated by the software. So the professional software developer authors the software and the end user uses the software. And because we are looking at the software right now and the process of creating the software, we may intuitively elevate the software developer to a higher status in our minds and the end user is a lower status whereas what this is trying to
Starting point is 00:37:25 say here is no the people who are using the software and who are in fact writing the software in their domain specific area where they are this expert in this other context like those people are deserving of our utmost respect and our attention and so by labeling them end user it's sort of diminishing them in a way that could be avoided if we picked a a more respectful term i buy that a lot more i agree i i think um you know end user programming is also is almost a slightly dirty word yeah um and it's a messy definition and i think she's just sort of said i don't want to deal with that um i'm gonna specify the uh the this language i'm using which is more positive more respectful i personally would have gone less respectful to the professional software developers i maybe i would have just called those massive nerds and then the vernacular ones just normal people this reminds me of some like much older papers which talked about like programmer bums and
Starting point is 00:38:33 program have you ever heard of this no i've heard of priests high priests you gotta read this paper about programmer bums okay and it was it was about like the early culture of programming and how it became and I highlighted this word mystique in this paragraph. What did she say? Shaw says, part of the reward for this effort, referring to professional software development, is an associated mystique about having mastered the special knowledge. And there's this culture of thinking that programmers are people who just sit away. No one understands them. They don't talk to other people. They're programmer bums. They just code and then produce correct, perfect software that doesn't have to deal with a fuzzy world. It's right or it's wrong. And so I would have just
Starting point is 00:39:23 called them, yeah, massive nerd programmer bums, bums maybe then again she's not trying to appeal to me she's trying to appeal to these professional software developers so credit to shaw for finding something that is respectful to everyone yeah yeah yeah she's trying to appeal to the people who are making programming languages typically for professional software developers to convince them that these people ought to be making tools for vernacular software developers as well and um it's already come up once in this episode that um shaw loves her lists um like the the abstract had this big list of sentences that seemed disconnected, but that in hindsight makes sense.
Starting point is 00:40:09 I love lists too. I love lists. I also love lists. I highlighted a whole bunch of lists. Here's one. Vernacular developers are typically not trained nor interested in being trained to use traditional general purpose programming languages,
Starting point is 00:40:23 nor do they necessarily share the cultural knowledge of the software domain or its engineering sensibilities about system integrity, maintenance, backup, and the like. Instead, they use spreadsheets, databases, scripts, web authoring tools, constraint systems, graphic composition tools, macros, and so on. Instead of writing sequences of programming language statements, they write sets of related formulas, develop macros and scripts with follow-me examples, formulate sets of interdependent constraints, connect objects in diagrams, and develop user interfaces and websites with graphical tools. So there's your high level sort of like, these are the kinds of activities that vernacular software developers do.
Starting point is 00:41:12 And what I find interesting in that list is that these examples are all ways that they use the affordances that we've offered them. Like we as software developers, we as the builders of these tools like spreadsheets database scripts web authoring tools constraint systems graphic composition tools those are all like things that i've seen people do phd theses about and and give presentations and write papers and make cool prototypes and all that kind of stuff just to like get one of these things you know one increment better or like get it on the table get it out there into the world in some way or another and like as a personal example like constraint systems i recently joined ink and switch as a researcher on the ink track i don't think i've mentioned that here so oh congratulations
Starting point is 00:42:01 thank you thank you um that's that's the only big change that has happened recently around these parts. And so part of what we're working on involves constraint systems for vernacular software development. And I won't give more detail than that. But this really resonated with me because it's like, yeah, clocked, right? Here I am as an author of tools for quote-unquote non-professional software developers and i'm using exactly one of these things and so it's it's interesting to me to think about how would we make this list bigger how would we put more things in here how would we take the things that are in here and make them richer? How would we turn actual professional software development tools
Starting point is 00:42:46 like C++ or Rust or Postgres or whatever and turn those into things that feel more like constraint systems or graphic composition tools? I think there's just a lot of fun stuff you could play with in this little space that Shaw has carved out. Yeah, and I think with this section, we get not only this picture of vernacular programmers, but the fact that they vastly outnumber
Starting point is 00:43:10 the professional programmer. This professional programmer myth that a lot of people are spending their time doing these things that, by most good definitions of programming, Shaw would say are programming. You don't have to be using a traditional language to actually be programming. And so we have this whole group of people who are
Starting point is 00:43:32 doing tons of programming, most of the time not using a traditional language, a traditional programming language, and yet they don't get any support. They have to spend all of their times in these tools that weren't really designed for the tasks they're trying to accomplish. I have a buddy who's an environmental scientist who is now learning traditional programming. I think I've mentioned him before. And the reason is, is like, spreadsheets just stop being useful for the kinds of things he was doing. He got to a certain scale, and he talked about his workarounds of crazy, intricate, like, oh, well, I make spreadsheets for all of these different things, and I have gigabytes of data that I'm trying to process through spreadsheets.
Starting point is 00:44:16 And his only answer was even to go get a master's degree or something and go learn data science stuff. And that is the kind of thing that this paper really wants to point out that that isn't the way this has to be. The reason these people have found themselves in this position is not because they're unsophisticated, because they lack knowledge or anything. It's because the tools they've been given don't support the rich things they are capable of,
Starting point is 00:44:43 the rich ways in which they can think about computation. And I love this. There's an example. It talks about researchers where we had this well-known bug that had happened all because of a difference in how files are ordered on file systems between operating systems.
Starting point is 00:45:01 I think this is a great example where people had built all these tools for scientific computing that depended on things like order matters. And for some reason, the systems we've built don't even help you guarantee those kinds of constraints. And so yeah, I'll buy, I'll say I'll buy that vernacular might be a better term. I still think end user programming is not that bad, but that's okay. I'm curious, though, do people believe this myth? There's two ways of saying a myth is wrong. That it's not true. I think it probably is true that people who vernacular programmers outnumber programmers.
Starting point is 00:45:43 Yeah. But is it really the case that this myth is believed by a lot of people? Do a lot of people think that programs are written by professional programmers and that that's why they're building all of these formal tools? I just don't buy that. That's true. That's... Oh, you've convinced me. You've convinced me.
Starting point is 00:46:07 I don't think that, I don't see how this idea, even in its subconscious form, is what is making people not build these tools for vernacular programmers. I don't think it's that people think, oh yeah, there's just so many more programmers, or that this is what programming means. I think there's other reasons why people aren't building these things,
Starting point is 00:46:37 and I think it's around incentives. I think it's around how academia is. I think it's around what can get published, etc. That's why I'm saying this paper, paper i think makes a lot of good points i just don't understand what the argument is here for this myth i see what you mean maybe it's the well everyone knows that there are plenty of vernacular software developers out there. It's just no one cares about them. Yeah, or the kinds of people who care about them are the kinds of people who self-select into CHI slash HCI,
Starting point is 00:47:14 like human-computer interaction stuff, or who self-select into working on spreadsheets, which at this point are pretty heavily productized more than the domain of academia though you get a little bit of overlap there with things like state charts state charts still feel like an active area of academic research that are to me related to spreadsheets like in my mind but even then like state charts seem to be something where the ink has not yet dried on whether those are tools for serious professional, you know, the Jonathan blows of the world. The people who take themselves so seriously as a programmer that like garbage collection is something they like snort at.
Starting point is 00:47:58 Or if it's a tool for the people who are not even aware of what garbage collection is right so where where that technology ends up going tbd but the fact that we can kind of clearly see oh yeah there's the people in the world who don't garbage collect and there's the people in the world who like just assume that all programming has garbage collection in it because all the tools they use are you know that far away from the metal and that you you sort of specialize into you know working at somewhere higher up or lower down in that stack like it feels like the thing that's missing here is maybe cross-pollination between those camps like maybe the the people who spend a lot of time working on like machine instructions or compilers or that sort of thing that the jimmy millers of the world and the people who spend their time working on abstract
Starting point is 00:48:51 graphical constraint based rule system things the uh the uh ivan wilson's of the world ivan wilson well how do how do we portman tow our names uh luvin the luvins of the world i like that that's good the luvins of the world i ship it yeah yeah yeah and then we'll need to figure out okay when jimmy and i are in the same camp on something and not lou that would be the the jivins the jivins what and then when jimmy and lou are in a camp what is what is that that's the limmies the loomy the loomies limmy limmy what there once was a limmy from what i don't know it sounds like a limmy rick oh oh dear okay all right so the the thing jimmy was saying i do see that there is a a self-selection if not like institutional slash incentive driven
Starting point is 00:49:56 motivation for people to specialize in a way where they're focusing on vernacular developers versus professional developers i do see that happen i meet people and they say yeah i do this and that and that and that and i say have you thought about this other category of people who could benefit from that skill and they say no like the catamorphism talk that i sat in on as an abstract performance piece right one of the people in the audience had a question at the end of the talk where they were like have you thought about this other interesting way to use this idea that you presented and the person giving the talk who was like very like stern suit and tie academic like you know devout professional like i don't want to say joyless but um this person who's like who's like deep in it they were like no i've never thought about that
Starting point is 00:50:46 and i don't see why you would it's like they have so square peg in square hold themselves that considering applications of their ideas outside of the main domain that they've selected into is like it's a foreign idea and an unappealing one at that and so i think that is that is the audience of you know programming language designers that shaw is targeting is those people who are like you know i only work on incremental improvements to see compilation you know in this one particular way that sort of. I want to give one more angle on this same thing, and maybe I'm pigeonholing too much on this myth, but I also think you can look at this from a totally different angle
Starting point is 00:51:31 that vernacular programmers have had a lot of resources poured into their work. It's just that all of that work has been captured by commercial entities. Think about all of these. There's all sorts of ETL processes. There's all sorts of tools out there where you can spend tens of thousands,
Starting point is 00:51:51 hundreds of thousands of dollars to have your point-and-click ETL process. There's Microsoft who's put Copilot into everything now. There's been tons of work poured into how to make Excel do everything that you want it to do. I happen to work at a company that builds things that lets random people customize all of their help desk software. I am working on something where the new track that we're working on is actually called ProCode. It's supposed to be professional coders working on this stuff now. And the way that this has been seen
Starting point is 00:52:25 is that everyone who's been building out these systems beforehand were non-professionals. And yet, there's millions of lines of code written in these systems for non-professional programmers. If you actually look at it, I talk to people all the time who work with these tools that are specifically designed for vernacular programmers that are not geared towards software engineers.
Starting point is 00:52:50 Their way they're sold is, hey, you don't have to go borrow those programmers over there. The software engineers over there, you can do it yourself. Retool is a startup that's in this. I don't know that it's really the case that they haven't had much thought to put into these things. It hasn't been really, people are ignoring it.
Starting point is 00:53:15 It's just that their needs are very different from what academics explore because most of the people who are doing this work don't have the freedom to choose the tools that they want. This is the negative part that I'm saying. This is the incentive of why it is, is they're stuck with these commercial tools that their company imposed on them rather than having the freedom to explore these kinds of things. So I agree with the goal. We need to make vernacular programming better. We need to make with the goal. We need to make
Starting point is 00:53:45 vernacular programming better. We need to make it more expressive. We need to let people do more of these things. But I just wonder, is it really that we need more academic research poured into it? Or is that we need to change some incentives and structures where people have more freedom
Starting point is 00:54:00 to choose these tools? I guess this is the thing that I just found. I just found i just found this section unsatisfying and i know it's not a standalone section i know we get more into stuff as we continue on but i just want to put these thoughts out there of like are these the right myths for us to be focused on if we want the goal that shaw wants i want that goal i don't know that this is the path busting these myths myth buster style is the path to get there and you're saying you would choose a different set of myths yeah yeah i i did not make a list of my myths oh i wrote down three myths whoa coming in with the
Starting point is 00:54:40 homework i i mean like you know this is all i care about now this is my whole world well they're three myths yeah no oh no i don't think we should do them now oh okay so so jimmy and i have until the end of the episode to come up with some myths be entertaining conversationalists and to come up with our own lists of uh myths at the same time okay so my first one is i mean i might add another one i've been convinced by jimmy casting is the dominant new wilson is an incredible human being that's a myth that's not a myth listening to their toad pond podcast should be required as part of the elementary school curriculum that's not a myth that's true that's true well see ivan's just
Starting point is 00:55:48 doing that thing where he inverts the meanings of things like considered harmful dikester and then oh yeah it's a callback yes it is uh-huh by the way can i well i feel like we should give this first myth like an official seal. Oh, yeah, yeah, yeah. Does this get the, that is a valid myth and worthy or? Mythbuster style would be busted, is it proven? And then plausible. And Flophouse style would be, is it a good bad myth, a bad bad myth, or a myth we kind of liked?
Starting point is 00:56:26 Wait, what? I'm not well read enough to do myths chat oh that's okay i think this is plausible yeah i think this is a a myth i kind of liked plausible maybe if we nitpick there's some things but let's not do that you know i'm i'm all i'm all for this myth and just uh to to further counter jimmy in 20 seconds shaw includes a couple of examples of uh things that vernacular software developers do that could use uh some help from the tools and and and work of professional programming language designers. So for example, there's a character named Frida who has to take a spreadsheet that comes from her company, you know, high up in her company that's about preparing some annual report or whatever,
Starting point is 00:57:19 and she has to customize it to her department. And so each year the company sends down the new spreadsheet with the new format or whatever and she has to look at the new company spreadsheet last year's company spreadsheet and her modified department specific version of the company spreadsheet from last year and try and like you know crdt those by hand together into the new format spreadsheet just for her department so like trying to figure out all the deltas that have happened and put them together and that's that's the sort of thing where hey i've referred to this as her manually crdting them together
Starting point is 00:57:54 uh because crdts are good at that kind of thing right like and and git is well terrible but something git ask might be good at this kind of thing and so yeah wouldn't it be great if if uh if we could you know put crdts somewhere where frida could benefit from them and frida is not just a character frida is a real person yeah there's like a stick figure drawing and everything she's real to me well it says frida is a real person interviewed for that study so this was a real example yes and there's an actual stick figure drawing right there that i'm looking at with a circle and some lines and it's real to me i don't know why you're denying me the reality of this person jim but our numbers real well no no
Starting point is 00:58:39 i don't know is the sentence frida's a real person interviewed for that study, is that real? It's in the example. Like, it's part of the example. It's not outside the example. I can't. Myth number two. Myth number two.
Starting point is 00:58:56 Myth number two. The code is the software myth. The code is the software myth. Historically, program was pretty much synonymous with software. The mindset was that software systems are big programs constructed by compiling together smaller program modules, which are written in the same programming language and interact through precedence calls. Procedure calls. Oh no, I got it wrong all right
Starting point is 00:59:26 i'll do it i will do all readings i will do them flawlessly this is it's quite quite long words in there you know yeah oh i i uh people on the on the grade school schoolyard called me data because i liked to use big long words and i still like to use big long words procedure calls there i think okay great uh data was incidental debugging involved direct interaction with the schoolyard kids maintenance was a necessary evil driven by being beaten up every day at lunchtime documentation was missing or viewed as stinky. The behavior of the program depended only on explicitly taking the children outside and shaking your fist at them sternly.
Starting point is 01:00:12 Libraries in the underlying operating system, which changed only with explicit detention of the programmer. Lou has in their highlighting a color. Oh, it's spying. That is reserved for Ivan will have something to say about this and i scrolled through their pdf that they shared with me to find hey wait a sec there's a section here that is highlighted as ivan will have something to say with this so lou what what what do i have to say about this highlight that you've got well there is a clear distinction between a program and a system
Starting point is 01:00:46 right so like a program is maybe like a something you run something goes in something goes out or something goes in lots of things come out whatever a system is well actually it says a software system is a composition of programs and other resources including possibly databases that provide a computational service. It is created by software developers using some kind of software development environment. It differs from a program in scale, in scope, and in the developer's responsibility to the users of the system. And I know in the past, you have mentioned about the difference between a programming language and a programming system and i think there's some parallels here and i think i think there's this acknowledgement when
Starting point is 01:01:33 you refer to a system or when we talk about a system there's this acknowledgement of this system is not just a thing that exists in a vacuum in like a hypothetical world. No, this programming language or this tool or this application exists in the real world. And there are some fuzzy edges where this touches and affects the real world and vice versa. So maybe it has to cooperate well with other programming systems or programs. Maybe it has to work well with like real people using it maybe it has some data sort of embedded in that might change over time because our world changes for for me this also relates to robust first computing right all right heck yeah so time to actly on this episode is one hour 40 minutes all right but this is literally what dave actly talks about with this concept of robust first computing where
Starting point is 01:02:35 when we make a program it's not just a program it's a system we can say that it's in some ways comparable to a living system where over time it, it might need to react to changes, it might break and it might need to repair certain parts of itself. And I think this is basically saying the same thing. When we make a program, it's usually part of a system. Mary Shaw mentions like documentation or like what platform it's running on yeah I'm all for that there's sort of when you code something and you put it out there you don't just forget it it's part of the a bigger changing world there's a wild thing that she says at the bottom of this section that I highlighted specifically and I'll work down to it so this the thing that Lou had
Starting point is 01:03:24 highlighted saying oh ivan might have some thoughts about this it's part of a little sidebar and so the sidebar makes three points or it introduces definitions for three terms and the first definition is a program which is an executable definition of a calculation that accepts variable inputs she goes on to say a little more about it the software system which lou has wonderfully about, which is this composition of programs and other resources, data, etc., etc. And this third one is a software development ecosystem is a comprehensive software development environment. So we're talking about the development of the software, not the actual running of the software system or the program that you built, but this is the ecosystem of developing software. It includes tools, languages,
Starting point is 01:04:12 libraries, interface standards, and other resources that support software developers. The software system may run in an equally rich execution ecosystem. I love that term. Oh my goodness. Execution ecosystem as opposed to development ecosystem. That is extremely my jam. That is like, I'm the jam boy for this idea. Is that there is an ecosystem in which you develop the software and a separate ecosystem in which you develop the software and a separate ecosystem in which you execute the software.
Starting point is 01:04:48 And that is something that I don't spend a lot of time thinking about, except in maybe a very narrow way where I think about like, oh, how portable is this binary? Is it, you know, the kind of thing that is fat or universal and I can run it on some other architecture? Or is it, you know, cross-platform? Will the same binary run on windows and on mac os and on linux or you know is it compiled just for for one of those platforms and you know is the source code written in a language that is portable so you can compile it on you know unix or compile it it on Windows or what have you. And then, you know, it runs on that platform it's compiled for. That's, to me, a very narrow way of thinking about this execution ecosystem, where I think a bigger way of thinking about execution ecosystem is like starting to ask questions about like, what does it even mean to execute code? And so that like Ackley, you know, example, like Dave Ackley's, the things that he builds execute in a very special kind of environment where it's like, oh, yeah, this this thing that I made executes in an environment that is this large tiled grid of, you know, subdivided screens that is spread out over the wall in this building, you know,
Starting point is 01:06:06 it involves a definition of hardware in a way that is, you know, you need to define it quite, quite, um, in quite a lot of detail because it's so different from how we normally conceive of a, you know, a computer. We might think of, you know, a desktop or a laptop or a phone or something like that. Dave's over here thinking like yeah i want my my software to be able to run like as an organism and so i need to create like a like an actual ecosystem for it to run inside of and what would happen if you like cut your computer in half while it was running can you build your software so that it just keeps running even though you've just like cut it in half
Starting point is 01:06:45 that sort of thing so i think it goes even further even further yeah what you've described is this t2 tile project it's like a indefinitely scalable computer architecture that uses a whole like completely different set of priorities to our current computers. But that is work done by Dave's organization, which is, I think, just Dave, basically. But he's a good guy, so he does a lot. Dave counts as three people, right? Anyway, it's from the Living Computation Foundation, which presents a different way of thinking about code,
Starting point is 01:07:22 which I think really is relevant here. Because there's this concept of we ship code in so many different ways, in so many more places than is currently assumed. So when I say we ship code, that's often referring to pushing some code from your development environment into production but actually we're shipping code every time we make something run in our development environment we're shipping code when we put an example on a doc site that code is being run by
Starting point is 01:08:00 sometimes a computer sometimes someone's just reading it, and that code is like having an effect. It's like a very different way of thinking about it. But I think the important thing is that there's this acknowledgement of the larger ecosystem around something. And, you know, if we are only focusing on making one program run well in one specific constrained environment, that's not so useful as thinking about the whole ecosystem. Yeah, I think this is something that Shaw is definitely absolutely right about the reality here, that software is more than just a singular program text. I think anyone who's been working in,
Starting point is 01:08:45 especially if you've been in a big company, but in general, I think modern software engineering outside of compilers, this is just the reality you're faced with constantly. You realize that you can't make a change to this API because of code that exists not even at your company depends on the fact that that field is there. And that is nowhere.
Starting point is 01:09:09 There is no text that you have access to that tells you that. It's this kind of implicit behavioral specification. There's all of this data that you have to migrate. There's all these users who use your system in some weird way. The constraints on what your code can do depend on all of these other factors. And so you realize my software that I'm doing is not just this code I'm writing here. It's the concurrency mechanisms. It's that database.
Starting point is 01:09:38 It's Kafka. It's blah, blah, blah. I think this is just a reality that's really faced. And I do think there's an argument to be made that a lot of academia ignores this reality. Now, there are some great works that I do think try to do this, where there's systems trying to let you program at a higher level of abstraction, think about concurrency as a first-class entity, which is something that Shaw points out here.
Starting point is 01:10:04 Modern languages don't let us do, let us express this, but they are a little on the fringe. They aren't kind of the mainstream thing. And there's a bunch of things interested in like the formal semantics of a single language rather than thinking, how do we deal with this massive system that we're confronting? How do we, I think Jonathan Edwards has really interesting things along these lines. Like I said, a little on the fringe. I think Jonathan Edwards would be fine with me saying that. Where it's like, how do we do data migration? How do we handle schema change over time? How could we have something that lets us really think about program evolution?
Starting point is 01:10:43 That, I think, starts getting at these systems and how they evolve across time. So I think this one, I mean, when we're talking about the reality, I think there's no question. Software is not just a program, and it hasn't been for a long time. I think it hasn't been probably since the ibm 360 at least like
Starting point is 01:11:05 you know it's been it's been a much more complicated thing for a while and shaw recognizes that this section though is pretty chunky like we got yeah we got a lot here so we got this kind of first section of like the code is the software myth what kind of introduces some of these concepts and then we get a split where shaw says this myth plays out differently for vernacular programmers and professional software developers and i i kind of got this like professional software developers i do think there's some weird things in here uh but i'm just going to skip them and ignore them because i don't need to nitpick stuff i think this is is is spot on i mean We can comment on the professional one
Starting point is 01:11:46 if there's things that you all want to pick out. I think you mentioned, like, when you talked about layers, Shaw mentions the sheer number of layers that professional software developers have to deal with when adding something to the ecosystem. They're not just adding it to avoid. There's two good lists in the section talking about how the code is software myth manifests when looking at professional
Starting point is 01:12:13 software developers. One of them is that modern software is made up not just of code in a single programming language, but also of code in multiple languages, supporting technologies, large data sets, synchronization for distributed execution, interface policies, scripts, real-time data feeds, dynamically selected components, automatic unannounced updates, and so on, much of which is not addressed by mainstream programming languages. And then there's another list, which is the elements that are incorporated in the software may come from ad hoc, untrusted, unstable third party sources. They are under specified and may change their behavior without notice.
Starting point is 01:12:54 So she does do a little bit of discussion about the sort of the question of like a secure software supply chain, wanting bill of materials for software. That comes up in this section if you're familiar with those themes. Another list, software developers must scrutinize configuration parameters, wrangle APIs, set up data and communication protocols, manage the third-party bits, including the vagaries of unannounced changes, and generally worry about which bits not under their control are going to go awry next. Love these lists. Shaw, great at list writing. Make me very happy.
Starting point is 01:13:32 You're so good at reading lists. Thank you. You didn't have to put the word list at the end of that sentence. But there's the next section, which I think we have more interesting things to say perhaps which is it's so we looked at how this myth that the code is the software affects professional software developers now we get to look at the vastly more numerous vernacular programmers mostly use tools other than general purpose programming languages. So the myth that the code is the software breaks down
Starting point is 01:14:06 with vernacular programmers because they're not writing code. They're doing other stuff as part of their programming. And so if you are convinced that the code is the software, therefore, you know, we only need to focus on code related concerns. Well, you're wrong if you care about vernacular programmers because they're not writing code in general-purpose languages. They use a variety of tools and notations, including spreadsheets, scripting, data schemas, markups, domain-specific languages, visual web development tools, and scientific libraries.
Starting point is 01:14:40 Many of the tools don't represent the software as a static symbolic text. Software development may involve progressive tailoring of a system, collection of formulas and constraints and spreadsheets or CAD systems, or visual programming. So we are way outside the realm of the text code is the software. Now the software is something wildly different. It might even be visual programming. Thoughts on this section i will just put in a note that i do now have my list of myths so oh nice and they're they're real
Starting point is 01:15:14 not weird things that ivan wants to list out uh so i do actually now have it now that we've gone through uh ivan you you read enough lists i read enough lists that jimmy had covered a zone out and come up with some goods um so i i think this is interesting lists considered harmful dykstra i think it's weird the way that this myth is breaking down between professional and vernacular because you know for professional it was supposed to be oh, there's so many more things other than the code. And vernacular, it seems like it's like, well, the program isn't the code. And I guess I don't see why there needs to be a difference here,
Starting point is 01:15:59 because some of what vernacular programmers do is code. Spreadsheet formulas is code. Yeah. I think there's just like definitively a classic, you know, functional programming language. It's just put inside of a cell instead of in a text file. But I think I just don't see why this needed to be that different, because I think what professionals do that's not code is very similar to what vernacular programmers do that's not code. Really, I see the distinction as just which kinds of tools that they're using. Generally, professional programmers don't like a lot of the
Starting point is 01:16:36 tools that vernacular programmers use. Yeah. And whether they like them or not is a different question. But they are using these things, and programmers often, even if they could get benefit out of using those tools, there's kind of this cultural, no, I would not use that tool. And there's sometimes good reasons. Maybe they're proprietary, maybe they're whatever, but they're often just not using those tools. Why I was a little confused on this difference,
Starting point is 01:17:04 I think even Shaw points it out here. It's claimed that there's kind of this maybe a difference in working and how people work. And I'll read kind of, I'll try to read and see if I can not fail at reading because I'm not as good at reading as Ivan is.
Starting point is 01:17:19 Lists? Oh, just in... Sorry, reading lists. Lists, yeah, lists. Reading lists, yeah. Yeah, yeah, yeah yeah yeah reading lists Ivan's awful at reading anything other than a list it's usually just me doing my Ivan impression that's why the radio voice was added in so you wouldn't notice that it was me doing an Ivan No. Yeah, absolutely. No. No. So this is on page 234 colon 12. I don't actually know why.
Starting point is 01:17:51 Page 12. Yeah, yeah, but why is it 234 colon 12? Any idea? Because this was published as part of a longer journal, and so it's page 12 of this article within the longer journal. There were 234 articles? Yeah. this article within the longer journal. There were 234 articles? Yeah, it's the ACM Programming Language Volume 4, Hopple, Article 234.
Starting point is 01:18:10 Article 234, not in that... Sorry, it's not that there were 234 pages, it's that this is Article 234 in this. Procedures of the ACM Programming Language. I wonder if that's across all volumes or that volume. Anyways. I don't know. All right, so. It is especially important for these tools to support programmers
Starting point is 01:18:29 who are developing the software as a way of understanding their problems. So this is about vernacular programmers. So they're trying to understand their problems or the ramifications of their decisions. People who are using software to work towards a specification rather than from one. Programming in this exploratory mode involves getting feedback on whether initial ideas accurately capture the intention, then refining and extending the results to achieve a satisfactory program by progressive approximations while refining their understanding of their real
Starting point is 01:19:06 intention. So the idea here is this is like, you know, you're continuously developing what is the problem that I'm trying to work through. I don't really have a specification. I'm not really sure where I'm going, but I need to get feedback and see, is this the correct direction? Is this fruitful? And Shaw adds that this is talked about as a conversation and that many professional programmers work this way, but it's especially prevalent in vernacular programmers. I don't buy that this is any distinction here. I think that there are... I have not thought of a single instance where what I'm
Starting point is 01:19:48 doing and programming is not working through in a conversation with the code, with the system, what kind of problem I'm working on, what solution will work. I'm almost never working from a specification, even when I'm talking about like a compiler, like, you know, I'm almost never working from a specification even when I'm talking about a compiler. I'm looking on YJIT for Ruby. Yes, there is a specification in some sense. It's what CRuby does. And yet it was still this conversation back and forth. Will this optimization work?
Starting point is 01:20:19 Will I be able to implement it in this certain way? I just think this is how programming is yeah and it might be that this the reason that she's introducing this idea here is just because she needed to introduce it at some point and it just naturally flows here and not that she means to say that this doesn't apply to professional developers equally as much there's a weird sort of like uh yeah no we can't let vernacular developers have something that professional developers also deserve to have which is exploratory programming yeah the biggest thing that pops out to me from this section is kind of what jimmy mentioned earlier about all these examples of vernacular programming.
Starting point is 01:21:09 They sound like closed products or systems. So like one of the examples is like a geometric tool for, I guess, constructing diagrams for a variety of reasons, architecture, mechanical engineering, mapping. And I can think of some of these tools that I've seen. They're often something you pay a subscription for. The things you make in them are stuck inside them. You can't take them out and put them into another mapping tool or whatever.
Starting point is 01:21:35 You're stuck there. And Figma is like this. You know, I would say Figma is a form of generating CSSss and other stuff like i've copy pasted css from figma and and i'll do it again you know i like figma has been like a very high level way of generating css for me at times in my life um but like, did you see Devine's talk at Strangeloop? Yeah, it was great. Yeah, it was super good. Devine mentioned how some of these systems like Figma trap you, you know, they trap these vernacular software developers. You don't get good at designing maps or architecture or diagrams you get good at figma
Starting point is 01:22:26 and this is what i worry about when i see this difference that shaw mentions all of the professional software developer examples with with things that were very customizable things that they could be in control of things that they could take stuff out of all of these vernacular software developer examples seem like products seem like sass products that's a great thing to capture because shaw gives a ton of examples of things that vernacular developers are missing out on that professional software developers have, like programming language design principles such as precise syntax, abstractions, encapsulation, scope, and clear denotations. But you're bang on that there's like a whole other outside the text of
Starting point is 01:23:20 the code, outside thinking of the code as the thing, but looking at the broader ecosystem, differences between the way that programming tools are offered and the substrate that we get to build on top of and the materiality of the things we build versus what vernacular developers have as their material and their substrate and their environment. The software development ecosystem and the execution ecosystem differences Differences here are quite interesting. I think, though, the reason that these vernacular programs lack these things like precise syntax abstractions, encapsulation scope, and clear denotations are because they're built by industry. I think this closed source nature of these, this proprietary nature of these systems
Starting point is 01:24:07 is why we have a lack of these things. Because the way we develop software in industry is not conducive to these kinds of problems. If you look at, I'll use Salesforce. I've never written in Salesforce's programming language, whatever it's called. I have no idea, but I know they have their own. And I know there are people who have to code in it.
Starting point is 01:24:32 And from everything I've heard, it's not great. Another one that you could give example is like Mumps. Mumps was a medical software programming language, right? It was for databases. That's an awful name for a medical software. Yeah, why did they call it mumps? Or no, I think it wasn't medical originally. It was just databases, but the medical community took it up, right?
Starting point is 01:24:55 No way. Yeah, yeah. So mumps is used by Epic, which is like the largest electronic medical records system in the United States. Wait, not Epic Games? Yes, not Epic Games. Not that Epic. the other Epic. Okay.
Starting point is 01:25:06 And it's a crazy language from everything I've heard. I've seen a bunch of the code, but I've never had to write it myself. And it doesn't follow a lot of these things. I mean, you could even look at earlier JavaScript that was produced as a marketing effort, and it was forced in these timelines, and it didn't have clear semantics as good as it could have,
Starting point is 01:25:28 it didn't have lexical scope, et cetera. This is what happens is that we push these things out the door based on marketing efforts, based on what features our users are clamoring for right now, trying to solve the immediate problem, and then people get stuck with them, and backwards compatibility means you can't fix these kinds of abstractions and so they're these half-baked solutions over and over again so i i just think this i think lou you're absolutely right like all the examples in here like we see like autocad we see like google something or other microsoft something or other like it's or other. Like, it's always this proprietary software.
Starting point is 01:26:07 Yeah, one even involves Twitter, right? That's not possible now. Yeah, yeah. Like, these are the kinds of things where I really think, and if we think that it's, like, academia not doing its thing academia has supplied people with the means of of knowing how to apply these things i think personally they haven't applied them themselves because it's industry that's building these tools for vernacular programmers and industry has ignored academia i just think this is a deeper problem here than just researchers not focusing on these
Starting point is 01:26:45 things. It's even if they did, how do we get it into the hands of these vernacular programmers? So again, this isn't me like saying Mary Shaw's wrong, this paper's wrong. This is just saying, I think it takes one step further down the line. Yeah, our interpretation of the audience as being academic people who are programming language designers is too narrow. We also need to include industry people who are programming language designers or programming tool designers for these vernacular programmers. That's the thing that kept confusing me as I got to this point in the paper, is the industry people don't believe these myths. They never have.
Starting point is 01:27:25 They don't think that mathematical tractability is so important. They don't think that the software is the code. They don't think that software professional developers outnumber vernacular because they're the ones building all the software for all these people and they know how much is out there. So that's what's so confusing. It's targeted at the audience that isn't – that's what I'm confused about. I disagree in this one section where Shaw actually makes the split.
Starting point is 01:27:55 In this section, that myth that the code is the software, I think that does apply to industry people making vernacular programming tools because and it's they may like fall ass backwards into it but the thing that the ill that they bring upon the world is that they see their product as the whole universe and they build a tool like lou was saying that is proprietary and is closed and that way of looking at the world is like the writest large version of writest largest version of of this idea that the code is the software that it's like this thing is the only thing that we need to think about it's the be all end all it is the complete picture and you oughtn't not to look outside that and look at, you know, the databases and the runtime environment and the other tools and the get and the different kinds of activities separate from creating these very bespoke purpose specific tools in whatever proprietary thing you're using or the creation of those environments themselves there's like a myopia here and i think that that totally plays in this in this the code is the software framing
Starting point is 01:29:11 i see what you're saying jimmy i really do however i think the main message that shaw is trying to get across is that these vernacular programming tools are worthy of more attention and care and a bit of love and so i think that message is useful whether it's received by like the academics or the industry folks it's basically saying look these tools are like serious programming tools they're not just little drawing tools or they're not just little spreadsheet tools there's this like comparison is it that shows us look how different these things look and she's drawing a line between them and saying we need to treat both of them with a lot of scrutiny and a lot of effort and care so maybe there's someone in the industry who's who's reading shaw's paper and got this far and and that landed home but i think it's a bit uh harsh to say that you know mary mary shaw should be
Starting point is 01:30:15 reaching those industry people instead of the academic people i think ivan you were saying earlier about how she knows her audience like this is targeted at a very specific group of people working in programming i think it would be slightly unfair to say well she's not targeting this other audience you know she maybe she will next year you know or maybe i hope there's like a mary shaw equivalent in industry trying to drive those messages home in another way i you know like it's like if you brought an apple then i wouldn't complain that it's not a banana you know who the mary shaw is that's trying to reach industry it's us baby we're the we're the ones we're the ones who are bringing this message to the masses no wonder it's not going well so the next section i want to comment on this photo
Starting point is 01:31:08 oh it's yes me too yeah because i i didn't understand this photo when i first read it until a recent episode of a dnd podcast where why this photo would be included was explained uh so this was a pathfinder uh glass cannon podcast they talked about this not this photo but it happens to help me understand it so ivan do you know why this photo of a unicorn it's the maiden and the unicorn a unicorn resting its head on this young woman uh do you know why this is included here no jimmy i don't i also don't apparently it was believed that if you want to catch a unicorn there was a ritual you can perform you place a virgin out in a field and let them sit there quietly for a long period of time and then a unicorn would come and rest their head so this is purity myths so this is a
Starting point is 01:32:08 myth around the purity that would bring this unicorn that's what this picture is illustrating here is this myth oh my god uh that's i had no idea that's um that's a very art history ass direction for our show to go but that's why this picture was included yeah and that's why this painting was made that's what it's illustrating is this myth of how how you can find a unicorn you know a very strange medieval myth so we have the the first image in the paper is Apollo killing the Python. I think that's self-explanatory. It's like these myths. Let's kill these myths, right?
Starting point is 01:32:50 Mythical creatures, right? Giant Python. The second picture is Pandora opening the vessel and letting out all the, you know, the evils. That's the myth of the professional programmer, which makes perfect sense because programmers release evils into the world like you know following in the great tradition of mark andreessen the third image is vulcan forging the thunderbolts of jupiter and that's accompanying the code is the software myth which makes sense because you know software development ecosystem these tools these uh things that we have to forge that we release upon the world like thunderbolts the programming language purity
Starting point is 01:33:32 myths the maiden and the unicorn i think i want to be the unicorn this time that's how i'm going to be uh jimmy you can be the i want to be the virgin oh you want to be the virgin lou okay i was going to say jimmy should be the virgin and lou you can be uh the the bubbling brook in the background you can be the oh yeah yeah no i'll be that please yeah bubble bubble yeah yeah jimmy's at a horse show so i think i preferred it when i didn't know the reason behind this yeah the the abstract interpretation is um is more my jam knowing that there's like oh if i had actually gone and taken art history and listened to dungeons and dragons historical podcasts yeah i mean you can see the kind of the the maiden is painted in a way that you would paint mary right there is not there isn't the
Starting point is 01:34:15 blue that you would expect from like mary but it's very symbolic of mary here right so the programming language purity myths i've highlighted the entire first paragraph. I'm going to read it because I love this. Beautiful. Mainstream traditional programming language research focuses on purity, symbolic notations with precise specifications and well defined semantics that support provably correct solutions to well-specified problems. This has given rise to a pair of related myths that mathematical tractability of programming languages and the correctness of software are essential. And these two myths invoke a third supporting myth that specifications can and should be
Starting point is 01:35:03 precise, complete, preferably formal, and available at the beginning of the programming effort. Yeah, I hate these. I hate these so much. It's so bad. This is like 100% my jam that I cover myself with and let the bugs of righteousness bite me. This is awful. Mathematical tractability, go away. Correctness, go away. Specifications away specifications hate them don't want them next section i guess okay i i want to point out a tension here this is not me disagreeing at all but i do want to point out a tension here between this myth and the last one which was we talked about how vernacular programmers need things like precise syntax and abstraction and
Starting point is 01:35:45 etc and all of these things that that were pointed out so precise syntax abstractions encapsulation scope and clear denotations these are all mathematical tractable things and so i guess what i'm curious about is, I think the specification one is just kind of obvious. I don't think anyone outside of academia, at least, really believes in specifications. At least not upfront specifications created separately from the act of programming. Yeah, yeah.
Starting point is 01:36:18 People might think we need to be a little bit more, a little less loosey-goosey. But no one's like, hey, we should formally specify every single program we write in industry. But I think that there's this mathematical tractability. I think we have to walk this very fine line. It's very easy to say math equals esoteric or catamorphisms or category theory.
Starting point is 01:36:44 But even having precise syntax esoteric or catamorphisms or category theory. But even having precise syntax and understanding all of those properties, this is mathematical tractability. And it's the things that make us be able to deliver software that gives us the kind of, I think Mary Shaw calls it fitness for a purpose, rather than correctness. That's what lets us do this this is the mathematical tractability.
Starting point is 01:37:09 We have to have some of this. And so I'm just curious to see how do we see this line between mathematical tractability and like we have to have some of it. Who has to have that though? like whose whose problem is that right like is the problem of mathematical tractability the problem of the programming language researcher or is it the problem of the programmer and i think the objection that i have and that maybe shaw has is that a lot of programming language developers love these mathematically, you know, the soundness and provability kind of capabilities and try to offer them in the work that they make in the programming languages that they design and their theorem provers and all that sort of thing and say,
Starting point is 01:37:58 oh, the problem with C++ is that it has undefined behavior and therefore we need to be more rigorous in defining c++ or level up the ability to make formal claims about the c++ systems that we build right that we need that kind of like cock level soundness and uncertainty in our code and i think that that's the the part that i object to i'm all for let's have these you know formal properties let's do this reasoning let's you know have this elegance but like keep it over there like go do it in your ivory tower don't make me have to write software with that that stuff i want to be over here with like drag and dropping like graphical gooey widgets and and having them snap together satisfyingly
Starting point is 01:38:45 because you did all the soundness stuff needed to make that snapping work so that it does what I want it to do but I don't want to have to like prove to my programming environment that I'm doing exactly what I mean to be doing Andrew okay can I can I can I yes please sorry um please yes one of the most frequently said comments about some of the things that i make is people say is this turing complete or like i'm not sure if this is turing complete or it appears to be turing complete and and it is like what appears in my YouTube comments on Twitter on Mastodon and more recently it has been uh part of the feedback I got when I submitted uh to Splash the person who reviewed it and actually the feedback was extremely useful but one of the points of feedback was this appears to be true and complete, but I'm not
Starting point is 01:39:46 entirely sure. Which is why in the actual presentation itself, I put a little jokey section where I just proved that it was true and complete and then carried on without saying anything about it. Because I always feel like it's really not the point. The point is Shaw's thing. Is it, what does she say? Does it have the fitness required? Yeah. Is it fit for purpose? Yeah. So the main thing for me is, is it fit for purpose? And I've come up with this new concept where instead of looking at true incompleteness,
Starting point is 01:40:19 which I don't find very useful, I ask, can I do the things in it that I want to do? And I have a new name for it called luring completeness. Do you get it? It's like loo, but it's like, and the thing is, it's a really hard thing to measure and to prove. And it changes. And it's fuzzy. And you know, maybe luring completeness isn't what's important to you. Maybe Jimmy ring completeness is what's important to you. Or maybe it's our vernacular programmer ring completeness is important to you. But I think that's a far more useful thing to focus on. The thing is, turing completeness is easy to hit, but there's something appealing about it. You know, it's this myth that it's really important.
Starting point is 01:41:09 And it's this myth that we need to check this box. But like it's the Turing, what's it called? The Turing tar pit that you can get stuck on focusing on it. It doesn't matter. That's just one very small extreme example. I wonder about, are these other examples of mathematical tractability are they useful or are they just as pointless as true incompleteness i do want to just highlight something though that you you lou said in your q a asked by some anonymous person in the audience
Starting point is 01:41:41 was it ivan yes yes, it was Ivan. Ivan asked, and I really found this interesting, Ivan said something to the effect of, when you're exploring these features in CellPond, is it the user interface that's giving you all these ideas of what you can do, or is it the VM? There's definitely a leading question where Ivan assumed the answer was going to be the user interface.
Starting point is 01:42:12 You answered, no, it was the VM. The VM was more capable than that user interface. I guess in my mind I see this as that two sides. You've built this tool that's very interesting for vernacular programmers, in my mind. But also, it was the VM, this mathematically tractable side of it, that produced all of these ideas. I'm curious how you see that tension, because the stuff you're working on is mathematically tractable and sophisticated.
Starting point is 01:42:41 And that's where you're getting all of these ideas. I don't know. This is a tension that I'm just curious how we resolve. Yeah. Basically, this relates to this specification section as well. It might surprise you to hear that I actually think this general concept of specification is really important because it's really about design. So Shaw says that there's this myth that specifications can and should be precise, complete, formal, and I agree with her on that.
Starting point is 01:43:16 I think that they don't need to be like that. But I would say that it is important in programming to have something planned and designed ahead of time. That specification, I'm going to call it a specification, might be written down or it might be in someone's head. But there is a specification that you're working to. And in another Q&A, I did say I mentioned the cell pond spec, the specification. And I mentioned how i actually deviated from it for performance reasons so yeah you're right so i'm working from this vm i'm
Starting point is 01:43:51 working from this specification but this specification is not built and designed to meet mathematical tractability it is built and designed to meet something very fuzzy, which is luring completeness. And I think that's the main difference here. Like, there is only one person that could answer, is this luring completeness or not? And it's me. I like it. I like just because something is fuzzy and hard to measure doesn't mean it can't be designed towards. And I think that's what a lot of people who work in academia and tech academia, who probably enjoy being able to prove things to other people. Some things are really hard to prove, but it doesn't mean they're not worth working towards.
Starting point is 01:44:42 I come from a world of teaching where I have really mixed feelings towards assessment. We put kids through so many tests that are pointless and don't help them. But then we also do lots of really helpful assessment, like in the moment, just having a conversation with a child, checking their understanding, allowing them to give feedback to you. That's a really fuzzy fuzzy question and it goes really wrong when governments and departments for education i've got some i've got some some uh deep-rooted feelings here anyway some institutional trauma yeah the new future of education podcast yeah art history and our education no but it goes really wrong when they try to turn these fuzzy concepts into mathematically tractable measurable statistics
Starting point is 01:45:30 and and i i see this disconnect we're trying to make programs systems for the real fuzzy world mathematical tractability doesn't help with the real fuzzy world maybe it helps with some stepping stone along the way but the end goal the target is something fuzzy and i think that's that's what this vm was designed for this rhymes very nicely with our episode about uh legalism when we looked at lawrence divers the rules yeah of code is that what it was called whatever one that was the yeah the interpreting the rules of code uh interpreting the rule of code parentheses on the s there's something later on in this paper that made me think of that too which is where shaw mentions about health systems yeah maybe we'll get to that later maybe
Starting point is 01:46:22 if there's time who knows yeah but say we're like uh we're like halfway through oh we're fine we're fine we're fine we're fine we're more than halfway through the myths though i know we're probably gonna skip the last myth yeah we are yeah yeah ai no you're not saying it i'm cutting that out that's fine you can cut it out all you want i'll just keep scattering it throughout make your editing job harder that's fine i've done worse uh yeah so so there's uh there's a there's a passage in here that i actually want to call out as like this is the one part of the paper where i have a bone to pick with mary shaw can i guess can i guess yeah you can guess it's on page 17 uh yeah it is the like third paragraph that's on the page uh yeah
Starting point is 01:47:14 yeah yeah yeah yeah i i also have this is triple question mark territory for me and three colors of highlighting yeah this is nasty so let's i'll build up to it because i guess we're going to rip this one up um so it's under a section titled the myth of mathematical tractability favors mathematical elegance over expressiveness or domain specific power and she begins the section. Traditional programming language research emphasizes generality, soundness, completeness, richness, abstraction mechanisms, elegance, and so on. Love this. The researchers have deep expertise in different programming models, procedural,
Starting point is 01:47:57 functional, logic, data flow, object-oriented, and the formalisms that support reasoning about the programs. They design languages intended for use by professional software developers who are adept at generalization, modeling, abstraction, and symbolic reasoning. Using these languages requires programming expertise and, in many cases, mathematical sophistication and maturity. Love all this. No notes, no problems so far. All good. Double thumbs up. Agree on all points. Love that there's like four lists in this one paragraph. Super good. Very good. And she continues. But how widespread is that mathematical proficiency? According to the Stack
Starting point is 01:48:38 Overflow 2020 Survey of Professional Programmers, referenced Stack Overflow 2020, only three quarters have earned a college degree, and fewer than two-thirds of those received an undergraduate degree in computer science or mathematics. So fewer than half have college education that would suggest any proficiency in formal systems, even assuming that proficiency persists into their careers and is at a high enough level to handle type theory and category theory. Even more concerning, over 15% of the professional developers didn't think that college education is even needed to be a developer. In other words, there's significant dissonance between the level of formal proficiency expected by programming language researchers and that attained by developers.
Starting point is 01:49:29 Holy f***! I cannot get mad enough at this paragraph. It conflates so many nasty things that are awful, that I hate. I don't know if she's trying to make a point here that I missed and took the wrong point away from it but what i think she's trying to say is that it's and i'll you know what i'll put some weasel words in there to even help her case it's very likely that if you are going to use the sorts of mathematical tractable fancy features in advanced programming tools for professional software developers like type systems and category theory that it's important that you have a background in formal mathematics
Starting point is 01:50:13 and you attain that background through formal education i think that's her point i think that point sucks i think that point is awful i think that point is just. I think that point is just... I have the same gut reaction here. I think I figured out an interpretation that saves this section for me, because I tried to. And here's the interpretation that makes it not as bad, right? Let's start with the assumption here
Starting point is 01:50:43 that programming language researchers assume everyone using their programming languages have very sophisticated mathematical background which is already objectionable but sure i'll grant you that yeah but let's say all these researchers really think everyone has this complicated mathematical background. And now Mary Shaw is looking for evidence that suggests that is the case. And the best evidence we can get is formal education. Is that the only way you can get the necessary background? No. But how do we measure it otherwise? Okay, look at these surveys. It looks like people, even the people who are formally educated probably don't have the sophistication expected that's like the the weaseliest way i can interpret this section
Starting point is 01:51:32 but yeah there's i i'll get rid of the weasel things and just say there's so many conflations here of like that a formal education is the only way to obtain this that you need that sort of formal background in order to use things like type theory and category theory like that researchers expect this i it just this section just confused me and it felt unnecessary for the argument as well like i just don't see how it undergirds anything here and i admit that there's just a bias because i have no formal education i do appreciate the different reasons the two of you get annoyed ivan is just objecting to like you know i guess this elitist idea that's slipping in here and jimmy is just annoyed because the argument doesn't need it you know yeah that so wait among other things i agree with that
Starting point is 01:52:24 framing of jimmy's objection i disagree with that framing of my objection my objection here's a sentence here's a sentence that a human being wrote all right here's a half of a sentence okay even assuming this proficiency persists into their careers and is at a high enough level to handle type theory and category theory suggests a world in which people go to college or university and they study whatever they study and that is like inflating their balloon of knowledge and then when they leave that that you know realm of study and enter the world that that balloon gradually deflates throughout the course of their career as whatever knowledge that they picked up
Starting point is 01:53:06 you know is lost to the to the falling sands of of memory time and that that's it that that's the whole model for how it works to learn something like the mathematics that you'd need in order to be able to work with type theory and category theory like yeah that that that hurts like that's awful that that that's not a a straw person argument that is not a what's the gender neutral of straw woman oh you know i uh i'm to have a niece slash nephew-in-law soon, right? Oh, whoa, yeah. So, I looked up what the gender neutral term for, like, uncle and auntie. Uh-huh.
Starting point is 01:53:54 And they're just so bad. What are they? I don't want to be a pibbling. That's what I'm saying. That's what I was going to mention, pibbling. Pibbling? Pibbling? pibbling pibbling pibbling pibbling parent sibling oh i like that so much but you know what like the gender neutral term for nephew and niece is nibbling i like that too that's great doesn't no, it sounds like a disease, you know? We've got the piddlings.
Starting point is 01:54:29 So, I think it's actually strawribbling? Stribbling? Just change it to scarecrow. I think, just for the clarification of doubt. A scarecrow is a straw person. Yeah. Just for any listeners at home, I am non-binary. That's why I'm joking about it. Yeah. that's that's the context needed carry on i'm i'm binary but i'm also joking about it that
Starting point is 01:54:52 well because you know we're good friends you know that's how it works that's how it works you learned it here anyway oh can i put in a can i say something that would be like a that would literally boost the demographic of your audience please okay i'm just gonna say this phrase and then some people will get this joke a very small number okay heat from fire fire from heat that's it thank you lou i appreciate that yeah like this this this balloon of knowledge idea just hurts so much because it ignores all of the learning that you can do outside of a formal institution, which feels like something that Mary should be cognizant of and arguing for given all the other stuff going on in this paper baffles me that suddenly we get into this sort of you know academic supremacy mindset it implies that going through formal education is actually a way of accreting knowledge not just accreting like a credential um which i think for most people it is ah come on
Starting point is 01:56:02 even i like formal education is a way of accruing knowledge. There's no question. Is it the only way? No. Is it knowledge that you'd accrete better and faster than alternative ways that you could accrete knowledge outside of a formal institution? I don't agree. I think it's one, person relative. There are people who really, formal education really jives with them. Sure. And that is something they really enjoy and that's the way they learn, right? Yeah. And then two, there's kinds of things that are not propositional knowledge but like tacit knowledge that you gain in academia that are hard to gain elsewhere.
Starting point is 01:56:43 Certain forms of writing writing certain forms of review like certain practices around proofs or whatever right like i think that there's even though i am i have none i don't think we should completely diss on the formal education all right well i'll save dissing on formal education for the next time that perennial theme comes up uh because you know gotta keep powder dry i think it's one of many ways and here it's listed out as like the only way but in my head canon this this clumsy paragraph isn't there so i don't think we need to worry about it cool i expect uh every every paper we do from now on we're gonna get the the loo cut yeah yeah in my head canon this isn't there
Starting point is 01:57:27 and neither is i mean in your head canon the last myth isn't there either right so right yeah so what you're saying is we don't need that for luring completeness yeah basically do i want it yes or no no i don't want that paragraph it's clumsy it's not alluring so it does not does not make it into the alluring completeness absolutely not yes uh there's another um there's a little example on this page about um somebody asking in a github request the i think maybe one of the authors of f sharp or one of the people, one of the maintainers to add a feature and their reply, which I loved is adding type level programming of any kind can lead to communities where the most empowered programmers are those with deep expertise in certain kinds of highly abstract mathematics, e.g. category theory.
Starting point is 01:58:21 Programmers uninterested in this kind of thing are disempowered. I don't want F-sharp to be the kind of language where the most empowered person in the Discord chat is the category theorist. That resonates with me because I have had people argue against visual programming for the same reason, saying like, I don't want to have to have artistic skill
Starting point is 01:58:40 to be a capable programmer. And so by creating a system where you require like artistic ability in order to do the programming work it's it's going to be exclusionary towards that kind of person like i've legitimately seen that opposition come up and i love it because it's like you know you are getting close to a deep realization thank you a programmer for raising that objection um yeah i i love this thought that it's like yes there's different ways that people can express themselves and have computers do something as a response to that i think that's
Starting point is 01:59:17 a lean into it kind of a thing not a lean out of it kind of thing which is my way of saying type level great add it in put all the types just i think. Which is my way of saying type level, great, add it in. Put all the types. I think, though, this is an innovation of TypeScript. TypeScript has type level systems. You can do a lot of very advanced type systems work in TypeScript, and yet
Starting point is 01:59:37 what we don't see is that category theorist being the one empowered. We see a lot of users being empowered. So I think this was actually a user interface issue and an education issue and a framing issue rather than just the fact of type level programming. And so that to me is what TypeScript really overcame, which I think is fascinating.
Starting point is 02:00:00 So I'm hoping that visual programming will also let me, who has no artistic ability, be... You just got to overcome that, right? Let me do something cool, even though my art is awful. That would be very interesting to me, where it's like, oh yeah, there's a hierarchy of people who are able to make good use of visual programming, like true visual programming.
Starting point is 02:00:22 I'm not talking Scratch, Max MSP stuff. I mean like the one where you're doing drawing as the programming activity where there's like, you know, some people with basic like stick figure level art skill are able to do some work. But then as you have more and more artistic proficiency, there's like a kind of expression that you can make that is like meaningful to the computer that people without artistic capability are unable to express to the computer that's the like that's wild i love that thought so this goes on to like dsls here after we uh after we dis on people without formal education uh we uh dis on programs that are not domain specific
Starting point is 02:01:06 uh i don't know i don't know where this like this section i agree with the thrust of this section but i was confused on the setup of it yeah well like dsls are often ad hoc and so they lack a sort of formal rigor that maybe some other programming systems have but dsls are are wonderfully useful for obvious reasons especially if you're a vernacular programmer i think there's just an appeal here to say hey can we get i don't know what the appeal here is actually you know what yeah yeah it's this like this is where i don't like the tension is is here because like what what this what this section is saying is like mathematical tractability bad right to oversimplify but dsls have not been giving the loving care and attention that is regularly lavished on general purpose languages.
Starting point is 02:02:07 What is that loving care and attention? It's mathematical tractability. Yeah. I'm just so confused. We talked about the problem is mathematical tractability. That's all these language designers care about. That's the time and attention and care they're putting into their languages. And we don't do that for DSLs.
Starting point is 02:02:25 But what tools is the researcher supposed to use other than these tools they've been using for general purpose programs, which is their math? Maybe we need to cut mathematical tractability in half. Maybe we've glommed too much onto that term. Like you said hey in the previous section talking about uh you know the design of denotations and abstractions and all that kind of stuff that's the mathematical tractability maybe that's the mistake we're making is that shaw
Starting point is 02:02:55 does not consider that stuff to be the mathematical tractability part because like here's a quote right the sheer volume of software development based on notations and tools other than traditional general-purpose programming languages cries out for care and attention. So DSLs are crying out for care and attention. those, you know, ivory tower experts, from opportunities to trade generality for power in a language while maintaining the formal rigor now largely reserved for general purpose languages. So that myth of mathematical tractability is about like, hey, we only want to apply our effort to domains where we can like write formal proofs about what this software is doing. So any efforts that we make like you know coming up with better notations or coming up with a like an elegant way to have concurrency at the
Starting point is 02:03:54 programming language level rather than you know as some weird ad hoc layered on top you know collection of nonsense like any any nice properties that we might want to imbue a language with should not be reserved for the languages in which in in which we can make like strong formal statements strong mathematical statements we should also be doing that work in these ad hockey dsls where we can't make these big formal statements. They deserve just as much power and expressivity as the general purpose formal languages. I'm confused. I think what you just said at that last sentence
Starting point is 02:04:31 made me even more confused. Awesome. But I'm going to ignore that one for a second. How are mathematical tractability and formal rigor different? Because Shaw says here that we need to trade the generality for power in a language while maintaining the formal rigor now largely reserved for general purpose languages so the way i take the statement is stop focusing on general purposeness that's what the generality for power in a language right
Starting point is 02:04:59 don't have make it generally applicable to everything focus focus on their domain, but imbue it with formal rigor, aka mathematical tractability. I don't see how formal rigor is not mathematical tractability. I think those terms seem a bit vague to me. And this is what I found reading through it was, wait, what bits are good and we should do and what bits are not good and i know what i think like i could i could say like from my own opinion that mathematical tractability can be a blocker it can make you too focused on like the internal workings or implementation of a system instead of the actual like human fuzzy facing design and i think i want to keep taking it back to this concept of system versus a program because you can prove the
Starting point is 02:05:54 mathematical tractability of a program but it it might be that you can't actually prove certain things about a system and and it's not like should we do more mathematical tractability proofing or whatever it might be actually the thing we're trying to make which is a system not a program we can't even do it even if we wanted however i would say that i think it is a bit confused um or at least i got confused when I was reading it like maybe that's a maybe that's a me problem I don't know but like there's this one paragraph in particular which I highlighted in red because I don't like it where where should I you know with respect Shaw states and and I've I've been reading this and i'm struggling to find a point to start reading
Starting point is 02:06:45 a quote because it's like a lot of you know referring to previous things yeah yeah yeah as we as we have stated um but it's on page 20 and basically she says proponents of the former referring to uh i believe like mathematically tractable programs, general purpose programs. For example, value minimality of the language base for its mathematical properties, while proponents of the latter, referring to systems for vernacular programmers where you're not caring so much about the mathematical tractability of something. Well, for example, value richness of the constructs available as part of the language. Okay, so I have a huge disagreement there, because Shaw is stating that domain-specific languages are away or tend away from minimalism.
Starting point is 02:07:43 And they're better if they're more complicated and more rich, and they provide like a bigger breadth of options. But I don't think that's necessarily true. I don't really see a supporting statement here behind that. I think sometimes the best domain-specific tool is just the thing that does that one thing that someone wants to do.
Starting point is 02:08:04 Like that's the whole point of being domain specific it's honing in on less so i feel tangled up with some of these points i don't fully understand but i think that like the core message of mathematical tractability is less relevant to fuzzy real world systems that i agree with and i think that's in my head canon that's what i'm taking out i think all of this could be cleared up and i understand why it's not there all of this could be cleared up if we could just point at some of the people who are believing the myths right like i know that why it's not yeah but i'm just i i continue to be confused on who it is that's believing the myths and i would love
Starting point is 02:08:45 somebody who just like accepts these right like if we can find somebody who'd like just like we'll say you know a well-known researcher who'd be like these aren't myths these are facts right and and maybe that exists if we and we could just point at them and say that's the kind of person i'm thinking of then i i think this would all be clear because like when i read that section about minimality and language base and its mathematical properties versus richness of the constructs, richness of the constructs available as part of the language, I think Ruby. Ruby is a language that's all about the richness of the constructs. It is not a minimal language in any way, shape, or form. It is about piling in a lot of stuff, right?
Starting point is 02:09:27 And that stuff is useful. It's good. It lets you express things in lots of different ways. And then a minimal mathematical base, I maybe think of a Haskell, but minimal, kind of hard. But like the core of Haskell, right? Like the core of Haskell, or maybe like the core of haskell right like the core of haskell or maybe like the core of some scheme right like i these are the kinds of things that i think of as having this minimal base for its mathematical properties but then who are we talking about because those are
Starting point is 02:09:57 both language designers valuing different things like i i just i i wish we could just point to somebody because there's so much in here that I feel is right. So much in here that I think is the point of this paper. I do think we are overly obsessed with mathematics. I do think we don't pay attention to the vernacular programmer enough. We focus on mathematics to our peril where we stop actually solving real issues that people are having. That core of the myth is so true.
Starting point is 02:10:26 There's a reason we don't cover a lot of... I can't just open up any computer science journal and pick an article out of there, and we do it on the podcast. Yeah, or we'd be talking about catamorphisms of abstract data types, right? It would be really hard, although there is a paper on catamorphisms, so we totally could do. As an abstract art piece,'m 100 there uh yeah it's called uh functional programming with bananas lenses envelopes and barbed wire oh that sounds like scala uh i i knew i could at least get you
Starting point is 02:11:00 with this is uh eric meyer is the first author listed here and that goes through recursion schemes which catamorphism is uh yeah right yes yes so yeah yeah anyways but there's so many things that are just overly mathematicized that it becomes very hard for not just vernacular programmers to be involved but industry programmers to be involved and i think that that's a real valid critique it's just when we get into the weeds here, I know that there's a way, there's an interpretive lens to make sense of all of the things that are being said here. And if I try to take the right lens, I end up agreeing with them. But then I start questioning again, as if we've switched frames and taking different lenses here. And I think that's the problem with the volume of this paper.
Starting point is 02:11:45 It's so large and has so many different approaches that you get confused between which approach is being taken at a given moment. You know, this is a solvable problem. We could literally speak to Mary Shaw and ask her to name and shame, you know? Yeah. Richard D. James did it in the incommensurability album that was like that was good it was like brocca and cook versus whoever the lisper person one richard d james yeah affix twin yeah like you're trying to you're trying to get okay you're trying to confuse them with somebody else i didn't know that that was a person in Apex Twin.
Starting point is 02:12:28 Yeah, no, Peter Gabriel and Richard D. James, great computer science recording artists. Who also was the shepherd in this writing. That's what listed as the shepherd of this. Of this Shaw paper, what? Yeah, yeah, it's a very topical. Yes, yes, right. You're talking about Peter Gabriel. gabriel uh-huh yeah yeah
Starting point is 02:12:46 yeah so okay i think we should wrap up this this section here even though there's a lot more about correctness and specification i'm not sure that unless you really have some thrust that we can go to and not get lost in the weeds here this is a a long section. All right. Can I, I said my piece about specification. That's gone. But correctness. Yeah. This is a hundred percent robust first computing. And Dave Ackley is listening to this right now
Starting point is 02:13:19 and saying, no, it's not. But, okay. But this section is talking about correctness and kind of an over emphasis and over focus on correctness and correctness can mean multiple things it can mean like correctness of a specification completeness of a specification but it can also be about needing computers to be correct. And there's a section called good enough is often good enough. And it sort of maps out different kinds of computer program. On one end of the scale, the two dimensional scale, we have things like finding a restaurant, appointment scheduling, it doesn't matter so much if the computer gets those things wrong
Starting point is 02:14:06 but obviously it matters a bit but not as much as the other end which is things like nuclear safety devices self-driving cars medical implants and it's very important that those things are correct and sure highlights the point the good point that not everything needs to be 100 correct things can be slightly wrong they just need to be good enough because you know we're working in a in a world where there is this element of fuzziness you know computers like people like any other part of this big system we're in can be wrong in In robust first computing there's also this concept that computers up until now have been focusing too hard on correctness and also efficiency and that just doesn't reflect the fuzzy boundaries to our world and And yeah, I see that same point here, this incompatibility with
Starting point is 02:15:07 completely 100% of the time a computer being right is not compatible with the rest of the world. But what I don't see here in this chapter is this concept of robustness, because maybe because it's a very sort of specialist or niche area the thing is i care less about whether a medical implant in me is correct or not and that might sound weird all right but imagine this you have a medical implant inside you that's regulating your your body in some way i want to tell you that no computer is always correct. It's just not possible. No computer is always correct. They have bugs in them. They have other things that go wrong with them. Hardware failures, whatever. So let's just say that 99.999999% of the time, it's correct.
Starting point is 02:15:57 But what about that time it's wrong? And in robust first computing, the idea is that those times that you're wrong, you're not that wrong, right? For me, that's more important than maximizing correctness. For certain things, where safety is involved or security is involved, I'd much rather something is mostly correct than correct as much as possible. So I think Shaw is right to pull out this issue of hyper focus on correctness but i'm not sure what the sort of solution is or the replacement do we just need to get better at it for some things or how do we get better at it for some things and how how do we let go of these other things there's a um an interesting contrast between that robust first worldview where the emphasis is on not minimizing the likelihood of error, but making error states survivable, which kind of rhymes with neil armstrong's work on erlang and the view espoused by a lot of functional programmers where you want illegal states to be irrepresentable you want to make sure that
Starting point is 02:17:12 if the code compiles then it's going to run perfectly and that the latter view is sort of assuming that the environment in which the software is going to run is fully predictable and fully controllable. It's like, okay, if we know everything about the circumstances in which this program is going to be run, then we can make some hard guarantees about the way that the program is going to work at compile time. And they really lean into that in a way that I think is kind of cool but the robust first says well we don't know what the runtime environment is going to be like somebody might come along and cut my cpu in half if my cpu were built to be a robust first computer it would be able to survive
Starting point is 02:17:58 being physically cut in half and just carry on perhaps a little bit more slowly or perhaps you know needing a little bit of time to recover but it could you know carry on regardless that's not going to be a catastrophic failure condition whereas if i took some haskell program that's running on some chip and i cut the chip in half i don't think anybody in haskell land is worried about that happening the way that dave is worried about that happening so So I think this like example of like the T2 tile, which you're referring to, which can, you know, literally be cut in half and carry on working is an extreme example. And it's quite a fun example. So I think it's often what people think of when they think of robust first computing, because it's like, you know, it's on Dave's YouTube channel, and it looks very cool and
Starting point is 02:18:44 impressive. But really, robust-versus-computing is like a lot more boring than that. And I mean that like in a positive way. Like, don't worry, it's more boring than that. So for me personally, my legal name is different with different places. So like my doctor is one thing, my hospital is the other thing. So things go really badly when my doctor requests that i have an appointment at the hospital or vice versa so what happens is they're not used to people having two different names on two different systems which which i didn't want
Starting point is 02:19:16 to happen i tried to avoid it but what happens often is that the computer crashes because they've said that no our type system is correct it says that these two name values should be the same right and it was an oversight right they didn't think that people could have different names in these two different places but the way they decided to deal with that was not robust first they decided we're going to crash out because then we'll find the bug quickly and maybe we'll fix it well they haven't the robust first thing to do would be to handle that and to say like how are we going to recover from this error state that we're in so i think there's a kind of like a straw person with the robust first stuff that people think it's just about making a really
Starting point is 02:19:59 cool computer and it is you know that's part of like getting people to discover it just how local first is to other stuff but anyway like um so you know at the end of the day it's it's just kind of a mentality and a measure of software how robust first is your hospital booking form right are you gonna deal with these dodgy names and this is like a very common thing where names that are not expected make programs crash sometimes i can't put my name in because it's two characters long but anyway i'm not saying that like you know everything needs to be robust but it would be helpful to have it as one of these measures when we talk about correctness let's also talk about robustness because they're completely different things and and very compatible things too as somebody who has not read or watched any actly so uh i'll just say
Starting point is 02:20:51 thank you at least for kind of you know getting some context here i think this is definitely something we should cover yeah in the future you know probably you know next weekend uh uh even though i'm getting the gist of it probably the listener who's not familiar also might be a little lost on some of this because it's not something we've you know really explored here i will say just because i'm sure some people right now are screaming at the the podcast as you do uh that you got to remember when we're talking about correctness here we're talking about this myth of correctness this mythical version of correctness because if we talk about like maybe a more robust definition of correctness it would include all of the things that we're talking about with robust first software it would
Starting point is 02:21:35 include like how do we how do we remain correct in these strange circumstances blah blah i know robust first clearly has some other stuff going on with it than just that but i'm sure there's somebody saying you're just not understanding correctness criteria you can define all of those things we're talking about this this siren song of correctness as shaw puts it that this idea that we can be absolutely correct and not have to think about the purposes we just have to think about these mathematical properties right it's kind of a scarecrow version of correctness um correctness as it manifests as opposed to the ideals of correctness that we would like to yes uphold via robustness and via you know whatever other things harry lang yeah what have you so we we haven't rated this myth right well we're not done
Starting point is 02:22:27 this myth yeah there's there's a list there's a list oh no you're gonna read the list i'm gonna read the list you're so good at it so software correctness is intrinsically problematic because of many types of uncertainty i love i love this i knew it was gonna be this one yeah it's the big list and it's also it's the biggest one it's the biggest list but it's also the list that makes me happiest to think about um because for every one of these think about like what is the future of coding ask outsider perversion of what we know of as programming when you refract it through this warpy lens. Even if individual modules can be formally verified, they execute in an unverified software environment. Even if the compiler and operating system were correct, it's not practical to verify the rest of the software stack,
Starting point is 02:23:19 nor are the specifications of all the layers such that a given program's interaction with them can be formally verified. Simply identifying which versions of which software elements affect the behavior of a system can be challenging. Hence, the current interest in the software bill of materials, which we could actually do an episode on that at some point, and the software supply chain and that sort of thing. I think there's some super FOC relevance there. Understanding of software's requirements may co-evolve with software development, which precludes a firm fixed specification. That's, you know, waterfall is bad, right? Don't do that. Do the programming where you discover what it is that you're going to be building through building it. That's a perennial theme in this paper, and I think we're all fond of that.
Starting point is 02:24:12 Much software is now provided in the cloud. Current practice updates it continually and without notice. There's your local first thread. Software embedded in physical systems is subject to the uncertainties arising from the physical systems. Like your CPU could get cut in half. Yeah, that's like the flashy example, but I also love it because it's also a very common theme in science fiction, you know, that overlaps with programming and how we think about it. Solutions to societal problems are hard. These problems do not lend themselves to even forming consensus on the problem definitions, let alone definitions of success. They're called
Starting point is 02:24:54 wicked problems. That one, right? Perennial theme of the show, the legalism rule of code episode, all about that. The whole idea that, you know, programmers keep trying to solve social problems with technical solutions. And finally, acquiring specifications has cost. So it makes the most sense to get the specifications relevant to the task rather than trying to be complete. I love this list. I think this is a great list it's full of provocative challenges to the worldview that you can like define here's what the correct software will do open shot easy straightforward example that programmers can do on their own in advance of going and writing some some code of course shaw then goes on to say yeah the thing we want is not a correctness specification.
Starting point is 02:25:45 We just want some criteria for fitness for purpose, whether the software is good enough. And that depends on things like the consequences of something going wrong and the likelihood that a problem will be detected and corrected before anything goes seriously wrong. Closes the loop on all the stuff that we have said in this section so far. No notes. I agree with you. i agree with you i agree with you oh are we gonna blow right past to the we'll leave this as an exercise for the for the reader who wants to go and read this paper there's actually a lot of good stuff in this paper even though we're kind called SynthWell. It's a program that generates generative music. And it's a really nice example where Richard splits themselves into
Starting point is 02:26:36 two people and the two people have to collaborate on this problem. It's very nice. Yeah, I got very confused by that by that you know especially because who is that the the person in the previous example that there was a stick figure frida yeah frida yeah the real person i was really looking forward to a uh you know richard and dick are both real people and it's the same person you know yeah this was very metaphorical, this section. Well, you have to know that Richard P. Gabriel, there, I said their stage name, is actually a real person and I believe a friend of Mary Shaw. And also wrote some papers that we have previously covered on this show. So, like, this P stands for Peter. Peter Gabriel is like a hero of our program.
Starting point is 02:27:24 Yeah. So, I knew that. p stands for peter peter gabriel is like a it's like a hero of our of our program yeah so so i knew that however i didn't know if like uh you know it's like jacqueline hyde where richard p gabriel transforms every night you know into into dick but um no it was an enjoyable section highly recommend yeah recommend reading the paper just for that section um oh i have so much green in this section. Oh, and then we get to skip the following section because it's the one about the fall of Icarus. So we're going to just ignore that.
Starting point is 02:27:53 We'll have no discussion of waxed wings on this program. And that brings us to the conclusion. Which is the best part of this paper? Yeah, the conclusion whips. Honestly, this was the thing where I got to this section and I started going back and being like, wait, that's what that section was saying. I think this could have been at the beginning.
Starting point is 02:28:17 Yes, should have been at the beginning. Yeah, we had a summary at the beginning and I think had it been this summary it might have helped every section along and it might have helped focus it i think that that this this paper could have used some editing and in my opinion on to focus in on some of these arguments and just make them a little sharper because there's so much packed in here, you get lost in the weeds. And I think that's kind of what we did. We got a little lost in the weeds.
Starting point is 02:28:49 But this brings us back to breaking down each of these myths and the way in which the myth distracts us. And I love this phrasing, that the myth distracts us from doing certain things. I will not try to read them because I know I will fail at reading them. But we get each of these myths in turn. And the one that I particularly liked, though, is this idea of the professional programmer. Why was this professional programmer myth brought up? I will read this one, I guess.
Starting point is 02:29:25 The myth distracts programming language designers from opportunities to improve software overall by bringing programming language design expertise to the notations and development processes that support the needs of vernacular programmers. I think that this professional programmer myth here, I will, once we, a little bit of spoilers, once we get to my list of myths, I want to twist this one. But I think this is really important. I do think that we are not using the tools that we have as programming language designers, which I just count people in the future of coding community, whether you're doing that or not, I bet you you are, in some small part,
Starting point is 02:30:08 being a programming language designer. Or you're thinking about it. Right. I think even the APIs we build, the software we build, oftentimes we're building these kind of implicit languages in part of it. I think there are ways we can build that expertise and broaden it.
Starting point is 02:30:24 I think that it is a very generably applicable tool that can be used, whether that's in visual programming systems, whether that's in constraint systems, whether that's in whatever, right? Even more traditional systems. I think these are things that are just not more widely used. And I love this phrasing of the myth distracts us. I think this is a key
Starting point is 02:30:46 that i wish the paper focused on in a little tighter fashion there's a um a wonderful list and i'm not going to read this whole list i'm going to say we're all going to take turns reading bullets from this list oh nice which is the the list of suggestions that Mary has for things that we could do when background and mindset of our intended users, hide the complexity and higher mathematics, for example, with domain-specific abstractions. The advent of low-code environments suggests a niche in software development that presents an opportunity for providing better languages to a wide audience. Support exploratory programming that seeks understanding as well as programming to satisfy specifications.
Starting point is 02:31:50 Bring the power of programming language design to scripting, markup, graphical, mashup, and other domain-specific languages and tools. Bow, bow, bow, bow, bow, air horns. Whoa, yes, this one. Very good. Okay, but what does, like, bring the power? It's kind of fun, but also, like, that's, that's, what does that mean?
Starting point is 02:32:11 What makes you go air horns? Expressive power. Like, a lot of, you know, no-code, low-code tools are, like, extremely limited in what you can do with them. And general-purpose programming languages are extremely unlimited. And I think that there is a beautiful
Starting point is 02:32:29 fusion that you could have between those two things. I interpret this a little bit differently because they also say domain-specific languages, which are not supposed to have the expressive power. So... I disagree with that framing. I know that that's probably the definition, but I think it's a bad definition.
Starting point is 02:32:48 Okay. Well, I'll just say another interpretation. Cause I also liked this. I think there's another way of interpreting it that I think is positive, which is that oftentimes these tools have these very ill defined edges to them. Right. I think of a lot of these commercial tools where you can do that except for it's kind of hacky and kind of bad
Starting point is 02:33:09 and there's these weird, why does it work that way? Well, because we released seven different versions and we never fixed the crunchy edges of this. To me, the power of programming language design is that we've figured out over a lot of years how to have a cohesive design right we learned from the mistake of javascript how to do some scope and stuff like that we learned from the mistake of python how to do packages we've learned how to from the mistake
Starting point is 02:33:38 of pearl how to not make every random paint splot a valid program. We've learned how to fix some of these issues. And so I think that to me is like, a lot of these tools haven't learned these lessons. And I continue to repeat these problems that past programming languages had because we haven't applied some of the latest research and ideas here. That's what I took out of this.
Starting point is 02:34:03 100%, completely agree. And just to sneak it in here my definition of domain specific language is basically like a language where the kind of expression that it encourages you to do matches the kind of domain problem that you're trying to solve and bonus where it has like a good ass standard library for the kind of thing you're doing so if i'm doing like computer graphics for a video game, and I want to do some like generative graphics for the game, I don't want to have to go write that in C++ or maybe Lua. I want like a domain specific language that's good for generative graphics within the, you know, polygon tool set or whatever
Starting point is 02:34:42 it is that I'm using. It doesn't have to be limited expressive power or limited capability it just has to be like no this is an environment that is like focused on a domain other than the creation of software that's my personal definition of domain specific language would elm meet your criteria yes not not in the ultimate way yes that you want yes like elm would be a dome yes domainspecific language in your thing because it's focused on web apps. Interactive websites, yes, exactly. Elm is a domain-specific language for making interactive web apps.
Starting point is 02:35:13 Even though Elm is also a general-purpose language in its general expressive capability. Java is a domain-specific language for creating massive employment in IT. So the next example is, Enrich type systems to elevate noisy or probabilistic data to first-class status in the language and to capture provenance of data from different sources. Make provisions for contingent results that may change after the next time a machine learning model is
Starting point is 02:35:45 retrained. Support contracts about behavior of data as part of the type system. We didn't get into that part of the paper, but there's a part where Shaw explores this. But I love all these ideas. I love this idea of like, enrich the nature of data that can be talked about in your type system like that that probabilistic data in the type system like i need that uh for what i am working on right now at ink and switch like that would be very helpful to have is you know if typescript could let me talk a little more expressively about probabilistic data that would be awesome yeah providence i think is one that i have really wanted. I worked on a medical recommendation system where we did a bunch of rules
Starting point is 02:36:29 and stuff and made recommendations on prescription renewals or whatever. And one of the things we had to do in this kind of ad hoc manner is track provenance. Because we needed to know, why did this recommendation happen? What rule made it so that we get this result, and why didn't this one fire, and et cetera? And that was one of the most complicated parts of the system, and you could easily get it wrong. And having something that
Starting point is 02:36:54 can track these things, not just for security things, but also for understanding my program and which systems talk to what, I think, fantastic. Love that idea. Last one, Lou. I gave this one two ticks, actually. So this is a good one.
Starting point is 02:37:10 Explore ways to determine how good, by whatever measure, software needs to be for a given application, as well as how good a piece of software actually is, so that it's possible to evaluate good enough in context. And this good enough thing came from the correctness section. It's saying, how correct does this particular piece of software need to be? Or like, how consistently correct does it need to be? I love this idea. I am at a loss for what this means.
Starting point is 02:37:43 And that might be the best. To me, that actually is like the best thought right like i love the idea of exploring different ways of determining how it's quote unquote good by whatever measure right i love that because i think this is something that we ignore we tend to act as if we have a defined notion of good and everyone else agrees with our notion of good and that's what determines it and we never explore these sorts of things so i and maybe i quibble with uh measure but like it's by whatever measure uh like it's not really about measuring and assigning a number right it's like by whatever means um Yeah. So I love this. Yeah. I have no idea how you go about
Starting point is 02:38:25 this, but I love it. I mean, I've definitely like been in design conversations or seen conversations or seen rationales out there where there's too much of an emphasis on trying to get that 100% solution. Oh my God. I'm not fricking referencing jonathan blow am i no yeah we never do that here that's forbidden not under my name not on my name he's the witness is not going to be in the show notes this episode i blocked him on twitter man anyway yeah no no but there's the what am i saying sometimes you just need a 90 solution sometimes a slow program is better than no program sometimes a program that crashes if you do things to it the wrong way is fine sometimes a program where you have to run it a couple of times before it has
Starting point is 02:39:19 its effect is fine sometimes a program that doesn't do the thing you need it to do in terms of like the effect it has on the world is okay if it does something else that is like valuable like shows you oh this was not the right approach to solving the problem right like the evaluation of the program can happen in so many different ways if you make it context-aware. And it's only when you try and divorce evaluation from context that things go wrong. See also previous discussion about assessment in education, which government instituted, every child in the country gets a numerical score that determines their future. That is so divorced of context that it's awful. So I want to read these next two sentences right after this list,
Starting point is 02:40:12 because I think it kind of resolves the conflict that I was having with this mathematical tractability. And I think it really just puts in a way that I think I just wholeheartedly agree with. I don't think I could quibble with this kind of conclusion here. This is like Shaw's conclusion of what needs to be done now. Above all, the programming language research community should make these improvements in a way that exploits the power of the formalism while still supporting the background, mindset, and workflow of the intended beneficiaries of these improvements. Capabilities grounded in formal mathematics have great power, say, mythos,
Starting point is 02:40:53 but making them effective, say, pragmos, requires packaging them and presenting them in a way that provide the power without the obligations for users to master the formalism. I think that's spot on. I think that is fantastic. I think this is the power of programming language. You take something that was a specific problem that someone had to understand all of the details of, and you solve it in this general way without them having to know all of this. Think memory management and garbage collection. This is something where there's so many complicated properties that have to hold for garbage collection to happen. You have to really think about all of these details, but as a programmer, you don't need to know all of those details. And even the things you might need to know, like, oh, I allocate and i'm allocating too much and like the older gen like some things you end up learning it's still not all the details you look at how the
Starting point is 02:41:50 jvm does garbage collection and how it does thread safety and all of that there's so much that goes into this and i i do think this is the power of a language-based solution in the broader sense of language-based where this is the the medium in which we write rather than specific solutions to specific problems trying to tackle this broad generality and paying attention to that audience and not making them learn all of those details i love this i think this was this is the thrust of this article that I am just 100% behind. So maybe I am FOC-pilled, despite all my quibbles. I agree. I think the thing I like about that statement and this conclusion is that it's clear that Shaw is trying to bring out the best
Starting point is 02:42:36 of both kinds of programming world out there. I have a lot of respect for her trying to be a bridge between two things which sometimes seem quite separate, like in that section where vernacular programming and professional programming were compared. There's a lot of difference with strengths and weaknesses, and she makes the case for combining them together. There's another section of this conclusion that I really like. The programming language myths arise, I think, from a deep-rooted need for certainty. Indeed, it is possible to find certainty within a formal system. The world, however, is uncertain, messy, non-deterministic, robust first, ambiguous, human, it does not lend itself to the precision
Starting point is 02:43:29 required for formal definitions, non-binary, and that prevents the certainties within our formal systems from being translated with confidence to the world. We should certainly continue to aspire to precision and completeness, but we should also provide support for practical software that runs in a context of inherent uncertainty. And that is robustness. That's robustness. I think now is the time, unless Ivan has something in this conclusion. No. All right. No, nothing to add.
Starting point is 02:44:12 Now is the time where we have to list our myths. Yeah, sure. Our replacement lists. I haven't thought of any myths. Well, you have 30 seconds. I'm only capable of speaking the truth okay okay well then then this is your let me tell you how to do this myth i am only capable of speaking lies oh dear oh no you just have to like flip your myth ivan say this is not true and then speak the truth you know what i mean i'm very bad at doing
Starting point is 02:44:47 that i only understand things correctly and and uh yes anyways maybe maybe after the two of you do yours i'll have thought of something okay here's my first myth okay long papers are good I may have written this immediately after reading this paper like three times so there may be some emotions caught up and tangled up there but and I say this directed to the ink and switch employee on the zoom call
Starting point is 02:45:23 called out long papers are fine but i think we've in this specific paper we i think we would have all appreciated yeah like a bit of editing it sounds so anal to say right you know like i really love this paper but i i love it so much that i want those key points to shine even more you know yeah i think some of these things could have been appendices sorry did you say appendices appendices appendices but this isn't it pembis isn't that the like the gender neutral pembis was that what it was wait yes a pimp a pimple pibbling pibbling there was pibbling but wasn't there pimbus wasn't wait
Starting point is 02:46:08 no not mumps listen no you can cut that cut that part out but long papers are not not good not always good myth two, making a programming language is something only an elite few can do. I like that myth. I think making programming languages is something that, for some reason, is seen to be this insanely difficult thing. I would say that it is difficult, but it's only as difficult as most other programming tasks. Completely agree. I don't know if it's the Dragon Book or something. It's got this weird status.
Starting point is 02:46:51 And myth number three, the tech world isn't completely morally bankrupt. Wow. That came out of left field there getting them all in on the first episode lou this is great it just needs repeating you know yeah it's repeating uh moving on yeah yep i'm sure that won't be a perennial theme yeah i think that would we need to find some good stuff on that for sure. Yeah. I don't know of any good papers on the moral bankruptcy.
Starting point is 02:47:29 Oh, don't worry. We'll get there when we get to my myths. Oh, boy. You have myths now? I have myths now. And those were your three, right? You had three myths? Yeah, I had three myths.
Starting point is 02:47:39 Okay, okay. I have one myth, which is vernacular programmers and professional programmers are significantly different from each other. That's my myth. Hmm. Okay. Hmm. You think they have more in common than what keeps them apart? Recast this whole paper and just talk about both professional and vernacular programmers and the needs that we all have collectively,
Starting point is 02:48:06 all kinds of programmers. It works just as well. I think that this division between professional and vernacular programmers needing different things is what has made this problem where vernacular programmers are given all these proprietary things and they don't have the general power and etc but it's also made the problem where professional programmers get like
Starting point is 02:48:32 ultra nerdy tools or not well designed and not paying attention to the graphical design the visual design of things like i think all of these this division is to me a myth i don't think that we're actually that different and i think that focusing on the needs of one versus the other is causing some of this problem myth busted i like that i've actually just added that to my list too so i can't steal his list this is just four items it is well it is wait what it's lose three in my one yeah yeah yeah was that your full list jimmy you have one more don't you no no it's just one that was it uh-huh okay well mine yeah these are gonna sound familiar my first one oh my god i think lou said this my first one is that papers are good papers are good papers are good right that's kind of what you said lou except you added some extra words in there that aren't necessary i did yeah i said long yeah exactly um
Starting point is 02:49:36 it's true yeah i i don't actually like papers as a medium yeah i agree we should have more books no no well so i actually had papers are good and i put underneath that considering saying it instead reading is good somebody who shall remain nameless in our slack was saying that they read 300 books a year and like 50 papers a week or something like that jack russia say the name three times and they'll appear on the show again. Jack Rusher. Jack Rusher. Jack Rusher.
Starting point is 02:50:15 Who dares speak my name? Oh, Lou. Wow. Nice to see you and Ivan and Jimmy. Ah, looks like you're recording a podcast well you know I've got no time to stay in chat I have to get back to my reading I had a wonderful conversation uh very short conversation with Jack on on our train ride train jam where he was like what have you been reading? And I'm like, I don't read fiction. And I made the mistake of putting the word fiction in that sentence.
Starting point is 02:50:49 Yeah, I think that there are so many other ways that we can be communicating these subtle, nuanced, delicate, beautiful ideas to each other. And I'm very interested in exploring all the ones that don't involve reading. Stay tuned. Hopefully, if I have my druthers, I won't have my name on another Ink and Switch essay. That is another also one of those like perennial themes of the show. I think we've made this public, but I'm very interested in finding works that we can do that aren't papers. And I would love to look for some non-paper things for us to talk about. So my uh one that i'm stealing is i want to denormalize sharing scrappy fiddles so yeah so so uh so uh what was normalized sharing scrappy fiddles that's the myth um oh yeah and the thing i want to say there's no context for that for the
Starting point is 02:51:40 listeners they're gonna go what is that what is that so everybody who's listening to this should follow lou on mastodon um because lou has been recently doing this tremendous work where they say normalize sharing scrappy fiddles and then accompany that with a post of some thing that is a scrappy fiddle meeting a song or a little video demonstrating something some kind of work that is like rough and unpolished and unfinished and and the sort of thing that you'd normally be timid about sharing because you know oh it's just a little throwaway thing that's not worth sharing and lou if i'm not mischaracterizing you you've been saying no share those things it is good to share them yes it's morally wrong not to share them and i'm going to come in and say that it is uh it is harmful to
Starting point is 02:52:32 share them because and i think this you know i'm being a little bit glib here um i think it is actually good to share these kind of things and i struggle a lot with sharing scrappy fiddles because i care too much about the attention economy and how limited everybody's attention spans are and how we should you know save our the attention that we generate for the things where it really matters and that we should only be putting things out into the world that are very deeply considered i say on a rambly digressiveressive podcast. So that's myth number two. Can I counter your myth? One sentence? Yeah, you can counter my myth. Yes, please.
Starting point is 02:53:11 I think it's more about being anti-gatekeeping. And sharing doesn't have to be online. It could be with someone who you're sitting next to, or that you live with with it doesn't need to be taking someone's attention away i think in music making and in the world of programming there are a lot of elite clubs and people try to dissuade uh you know newbies so i guess my myth about like only an elite few can do programming language work i don't think that's true and know, when you post up some little bit of music you make online, sometimes you get some slightly negative feedback, which can be slightly shocking for newbies. And, but you know, that's, that's the whole point of the normalized sharing scrappy fiddles movement is to try to, uh, I guess, bring these things to the forefront and have a bit of
Starting point is 02:54:02 fun with it. Yeah. I think if nothing else else if it helps people learn how to give good positive feedback that's a that's a great value that we can do it's like hey you sometimes don't need to tell other people what they should be doing differently if they're sharing a little precious idea out there you don't need to say your idea was not done properly here's the proper way to do ideas um do you have another myth i have two more i'll keep them quick the third one is uh that programming is a job and the fourth one is uh so i can deal uh by that i mean that like yeah you you're down with that jimmy yeah i'm done with that um i think uh that like programming is a thing i was tempted to say or that like programming is a thing that people do um that's the myth that one i'm less i'm not so sure about that one yeah
Starting point is 02:54:51 uh so the the thought would be that programming like if if programmers were good at their job then they would make programming go away like it would no longer exist uh because we'd all just turn ourselves into vernacular programmers the fact that there are people out there who are like no i like programming for programming sake those people are bad and we should not be listening to their podcasts so very pointed do you know any of those yeah yeah very pointed accusation there yeah yes and the fourth one is that um i never do this kind of stuff that's the fourth myth what follow lou on uh mastodon it's uh they are at toad pond follow them on youtube at toad pond follow jimmy on mastodon uh j H. Miller. Follow Jimmy on Twitter, because Jimmy's still on Twitter for some reason.
Starting point is 02:55:47 I haven't posted on either for a very long time, so I need to think of what I want to do with social media. Follow me on Mastodon, at SpiralGanglian, or go to my website, Ivanish.ca. Back us on Patreon, because we've got a lot of mouths to feed on this show now um please my loo their microphone it's so it's fine it's so it's so fine um it's fine okay the light in their room actually no actually the light is broken i'm glad you noticed yeah yeah yes i
Starting point is 02:56:25 didn't notice but oh well it's broken you were complaining about it yeah it's really dark in here yeah yes uh support us on on patreon uh to get to get the bonus content that you crave if you're the one person who we recorded liminal programming for back us on on patreon and uh and then find out if you are in fact that person there i did the thing that i don't do and then uh i guess we should end it the way that the paper ends things which is our myths should inspire us but they should not hold us captive okay but i actually don't know what that means like like uh i guess i guess maybe it's because i'm not held captive by these things perhaps yeah i think you're held captive by the myths that you don't recognize as being myths that's the trick oh my god if mary shaw has done
Starting point is 02:57:18 her job somebody out there didn't realize they were held captive by one of these myths and now knowing that it's a myth they're freed so really that's the lists that we should have come up with or like what are the what are the things you don't even realize are myths reminds me of gary bernhardt's ideology talk that's a good talk which is about very much the same sort of topic i like that at the end he says closure is good because i like closure and i like that at the end of that talk, he's like, yeah, closure is good. But yeah, the idea here is that like myths aren't bad inherently. It's just when we don't realize that they are myths and everyone froze for me. Oh,
Starting point is 02:57:57 cool. Cause my hotel internet probably cut out. Oh, and you froze for me. Yeah. You just froze for me, but we got the the final word yeah there you are perfect timing he's back are we back you're back hello hello
Starting point is 02:58:13 hello yep you all froze for me one two two perfect uh i'm gonna hit stop uh you should both hit stop to save me from one two three

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