Future of Coding - A Small Matter of Programming by Bonnie Nardi

Episode Date: August 23, 2023

This community is a big tent. We welcome folks from all backgrounds, and all levels of experience with computers. Heck, on our last episode, we celebrated an article written by someone who is, roundin...g down, a lawyer! A constant question I ponder is: what's the best way to introduce someone to the world of FoC? If someone is a workaday programmer, or a non-programmer, what can we share with them to help them understand our area of interest? A personal favourite is the New Media Reader, but it's long and dense. An obvious crowd-pleaser is Inventing on Principle. Bonnie Nardi's A Small Matter of Programming deserves a place on the list, especially if the reader is already an avid programmer who doesn't yet understand the point of end-user programming. They might ask, "Why should typical computer users bother learning to program?" Well, that's the wrong question! Instead, we should start broader. Why do we use computers? What do we use them to do? What happens when they don't do what we want? Who controls what they do? Will this ever change? What change do we want? Nardi challenges us to explore these questions, and gives the reader a gentle but definitive push in a positive direction. Next time, we're… considered harmful? #### $ We have launched a Patreon! => patreon.com/futureofcoding If, with the warmth in your heart and the wind in your wallet, you so choose to support this show then please know that we are tremendously grateful. Producing this show takes a minor mountain of effort, and while the countless throngs of adoring fair-weather fans will surely arrive eventually, the small kilo-cadre of diehard listeners we've accrued so far makes each new episode a true joy to share. Through thick and thin (mostly thin since the sponsorship landscape turned barren) we're going to keep doing our darnedest to make something thought-provoking with an independent spirit. If that tickles you pink, throw some wood in our fireplace! (Yes, Ivan is writing this, how can you tell?) Also, it doesn't hurt that the 2nd bonus episode — "Inherently Spatial" — is one of the best episodes of the show yet. It defrags so hard; you'll love it. #### Init Bug report: Frog Fractions. Oh the indignity! Hey, it's The Witness in our show notes again. Getting Over It with Bennett Foddy is the better game, even if it spawned Only Up and other copycats that miss the point. The Looker gets the point. Getting Over It is a triumph that emerged from a genre of games that are hard to play: Octodad, QWOP, I Am Bread Braid arguably spawned the genre of high-minded & heady puzzlers that all try to say something profound through their design. Cookie Clicker and Universal Paperclips are good incremental games. Jump King and Only Up are intentionally bad. Flappy Bird was accidentally good. Surgeon Simulator and Goat Simulator are purely for the laughs. Stanley Parable, like Getting Over It, brings in the voice of the creator to (say) invite rumination on the fourth wall, which is what make them transcendent. Here's the trailer for Bennett Foddy's new game, Baby Steps. So on the one hand we have all these "bad" and """bad""" and sometimes badgames, which actually end up doing quite well in advancing the culture. On the other hand we have The Witness, The Talos Principal, Swapper, Antichamber, QUBE, and all these high-minded puzzly games, which despite their best efforts to say something through their design… kinda don't. When comparing the "interactivity" of these games, it's tempting to talk about the mechanics (or dynamics), but that formal definition feels a little too precise. We mean something looser — something closer to the colloquial meaning when "Gamers" talk about "game mechanics". Silent Football might be an example of "sports as art". Mao is a card game where explaining the rules is forbidden. #### Main The Partially Examined Life is one of Jimmy's favourite philosophy podcasts. Two essays from Scientific American's 1991 Special Issue Communications, Computers and Networks are referenced in the first chapter, one by Larry Tesler and one by Alan Kay. The other essays in this issue are also quite interesting to reflect on from our position 30 years hence. Apple's Knowledge Navigator video, and HP's 1995 video, are speculative fiction marketing about conversational agents. Rewind.ai is one of those "Computer, when did I last degauss the tachyon masticator?" tools. (Oh, Lifestreams…) S-GPT is Federico Viticci's iOS/Mac Shortcut that strings together ChatGPT and various Shortcuts features, so that you can do some nifty automation stuff via a conversational interface. It feels like similar things could be built — heck, probably already have been built — with "If-Tuh-Tuh-Tuh" or Zapier. When Ivan reaches for domain-specific terminology, LUT, Arri Alexa, and Redcome easily because, like, he wishes he had occasion to use them. To hear the story about the Secret Service busting down young Jimmy's door, listen to his episode on the Code With Jason podcast. C Is Not a Low-level Language — a fantastic article about the illusion that our source code closely matches what actually happens during execution. What Follows from Empirical Software Research? Not much, according to Jimmy in this delightful article. Jimmy likes to reference Minecraft's "redstone" which acts a bit like a programming system, so here, have a video about redstone. Ivan saw this video via Mastodon, about someone making a "real" camera in Blender, and… just… 🤯 — https://www.youtube.com/watch?v=YE9rEQAGpLw Jimmy's orchestra struggled with an inappropriately formal approach to Coldplay's Viva La Vida. Knuth's up-arrow notation One meaning of "end-user programming" is about allowing people to build their own software. Another is about modifying existing software, and here are two interesting links related to this second meaning: sprout.place is a lovely website where you decorate a little virtual space together with some remote friends. It's like a MySpace page mashed-up with a Zoom hang, but better. Geoffrey Litt is a researcher who has tackled both meanings of EUP, but his work on the second meaning is especially interesting. For instance: he worked on Riffle, which explored the consequences of putting the full state of an app inside a reactive database, which is especially interesting if you consider what can be done if this database is available to, rather than hidden from, the end user. To the best of our recollection, Jonathan Edwards has advocated for "end-programmer programming" as a helpful step toward end-user programming. Get in touch, ask us questions, please no more mp3s ahh I can still hear the bones yuck: Ivan: Mastodon • Email Jimmy: Mastodon • Twitter DM us in the FoC Slack Support the show on Patreon lol stands for "lots of love" https://futureofcoding.org/episodes/066Support us on Patreon: https://www.patreon.com/futureofcodingSee omnystudio.com/listener for privacy information.

Transcript
Discussion (0)
Starting point is 00:00:00 the british had a concept called a jam boy never heard of this this sounds definitely not problematic yes not at all so like british colonialists had a jam boy a young lad they would smother and jam to attract the bugs wow yeah wow yeah so janice has jokingly called me her jam boy before wow because i just all the mosquitoes come to me and not to anybody else apparently it's good work if you know it's it's terrible work if you have to do it yeah i mean that it has to be one of the like most degrading things i could imagine right like oh you take all of the all of the bugs for all the rest of us and i'm one of those people who just gets absorbed in the thought of what it means for another living creature to be like taking your bodily fluids like the you know spongebob zoom in level uh-huh like in the way that like alien abductions are
Starting point is 00:01:06 kind of creepy because it's like oh yeah they put a bunch of tubes in my body and like drained all my fluids and replaced them with alien fluids or whatever very strange for me to think about like yeah this person's job is to be abducted by bug aliens like that's their job is to be the one who gets probed as it were so so how did you feel about frog fractions then ah see that seems to like really fit in right with your your conception of bugs yeah i mean i didn't go to bug court if you haven't played Frog Fractions, you have to. It's very good. Spoilers a little bit, but you know. Yeah, it's a game, an educational game, where you're a little frog sitting on a lily pad, eating little bugs, little flies that fly around with numbers written on them,
Starting point is 00:01:56 and you have to try and eat them in the right way to satisfy the educational objective. And it goes from there in a direction where it sort of makes a bunch of very silly kind of explorations into what it even means for something to be a game yeah it's very fun and it's always fun to show other people the game as well yes because you know there's this certain level of like they're looking at you like how nerdy can you be that you're trying to get me to play a fraction game yeah and then over time they get it and it's like oh what i work with a bunch of people who are gamers and who are not capital g gamers but they play video games they are you know they're modern citizens who participate in the dominant art of our era yeah and i was trying to
Starting point is 00:02:47 explain frog fractions to them and i'm i'm i'm the person at the office who's like hey have any of y'all ever heard of blank and they all look at me with blank stares and so i'm trying to explain frog fractions and and after kind of sitting there you know staring at me a gog for a while not sure what that i'm talking about they're like that that sounds like the video game equivalent of noise music and just dismissively shut it down and so i'm glad jimmy that you of all people are aware of of the of the finer more refined interesting things that my rubish uninspired co-workers are not partial to. I've seen a couple different streamers
Starting point is 00:03:30 play Frog Fractions not knowing at all going into it. They let their chat choose what game they're going to play and then they start playing and everyone says Frog Fractions and they're like, wait, what? It's just a very fun experience. It's like i saw one person
Starting point is 00:03:46 playing the witness um and no spoilers here because i don't think anyone should spoil the witness but there's certain things that happen in the game that are very different and interesting than what you thought were going to be there and seeing i got to watch this one uh streamer i didn't know at all but uh i got to see the moment when he like discovered those interesting things. And it was, it was really neat. Right. Just to like see somebody else experience the same thing you experienced.
Starting point is 00:04:14 And I feel like frog fractions, it's kind of this, like just watching people go, Oh, this is this bizarro land that I'm in. I don't think a single episode of this show has gone by where we haven't in some way or another brought up Jonathan Blow and or The Witness. I mean, The Witness is a really good game. Yes, I put The Witness in our show notes more times than I think any other link, including
Starting point is 00:04:36 Dynamic Land. I mean, it is a good game. There just there's a lot there's a lot to to learn from it or to experience i do think it's it's worthwhile yeah but i think it's also trash like i i am i am fully of two minds at this point about it i will never mention it again i loved it i i binged it i played it for like 40 hours straight you know breaking only for fits of sleep um but yeah i like its philosophy is science and that the things that it chooses to say or not to say well to be clear i don't like the narrative parts or whatever that are in there yeah i just completely ignore those i actually think that that was the thing that i think is the least interesting aspect of it and like is not very i don't know i almost feel like it kind of i know that obviously jonathan blow would not agree but i think it kind of
Starting point is 00:05:36 ruined some of the the aspects of the game that i found so interesting like did you play um getting over it with bennett foddy i have not played getting over it or have you seen it do you know i've watched it and only up is also is a big game right now oh i don't know that yeah it's like 3d getting over it but yeah like i i feel like getting over it had a lot in common with the witness except for the witness has its you know it's one or two sort of surprise reveals that are very enjoyable and the reveals of getting over it are less about like look there's a dimension to this game that you weren't expecting and more about like you know what it reveals about the medium itself and i find it much and it's decidedly shorter and focused on just like making
Starting point is 00:06:27 a point and and then being done whereas the witness to me feels very much like you know we're all gonna sit here in our desks and stare straight ahead until we appreciate the grandiosity of this of this thing that we're doing so i mean yeah i think if every video game were like that you know it would be uh not fun have you seen the the parody witness yes the looker yes yeah yeah that's great yeah that's hilarious yeah yeah the looker's really good i haven't actually played it but i've watched people play it yeah and like i think that's actually probably more enjoyable than playing it yeah i like i totally get where you're coming from like there's there's a certain i mean we need a variety of games but the thing is like it's not like it's
Starting point is 00:07:13 like the witness spawned a bunch of copycat games that all are exactly like that either right it kind of can't and that's what i think is interesting about it is that it is kind of a one-of-a-kind game whereas like getting over it did spawn a whole genre yes and no like getting over it might have spawned or it participates in the genre of games that are hard to play like octodad and quop and i am bread games where the the frustration of playing them is a draw and i think the witness participates in this genre of games that are high-minded heady intellectual puzzlers where they're trying desperately to find ways that the actual design of the game and the interactivity of it can make a bigger statement about something and i do think the witness didn't spawn a bunch of copycats because it was just another entry in an already
Starting point is 00:08:14 thriving area of gaming arguably spawned by braid and you have a lot of these puzzle games that i've enjoyed very much but that were i think all fumbling around trying to say something. And I don't think that that actually culminated in them saying something that has stuck and really advanced the medium in a way that getting over it, I think, has. See, I see getting over it personally and the genre it spawned which i do think is quite i would draw the lines quite differently i see it almost yeah i see it almost as like obviously not quite as crazy as this but almost like incremental games right like cookie clicker right like what they did was say all right what what is it to be a game like this? Let's strip it down to its absolute bare minimum.
Starting point is 00:09:13 Let's make it so that it's not about quality of controls. It's not about, you know, in fact, this game actually makes you frustrated. It makes you not enjoy the way these things work. And yet people want to do the challenge and it kind of took advantage of the this like simplicity and gameplay along with the speed runner mentality whereas i think the incremental games took advantage of simplicity of gameplay and number goes up equal satisfying and so there's i definitely think think getting over it is a much I mean, I think it's much better than an incremental game, right? I'm not trying to say that they're
Starting point is 00:09:50 of the same quality. Well, I mean, Universal Paperclips was pretty good, too. I haven't played that. It's quite good. I can imagine the premise. But I do think that it spawned a bunch of games like Jump King is another one. And then Only Up is another one and then only up
Starting point is 00:10:06 is another one where it's like bad controls is part of the game and then it's about becoming very good at those controls and being able to perfect it for the people who are going to play it a lot the people who play it once it's just can i beat this challenge and that's what i think is interesting about the game is it like calls, can I beat this challenge? And that's what I think is interesting about the game, is it calls for this replayability and speedrunning that is now a meta of the game industry. Flappy Bird did that also. Flappy Bird did that sort of viral, social, like it's a skill-testing challenge.
Starting point is 00:10:43 The badness of it is what makes it endearing. But I think Flappy Bird was accidentally bad. No, it was intentionally bad. I don't think this person meant for it to be any good, but it was accidentally good, I would say. Okay, that's fine. Yeah, I'm just saying, yeah, I think they weren't trying to make it good by making it bad.
Starting point is 00:11:06 Correct. Yes, yes. Whereas Getting Over It, Jump King, etc. are, right? That's what they're, that's the whole interesting thing about it. And then you get, like, Surgery Simulator, which is more, it's still making it bad and making it good, and it's still challenging, but it's more for the laughs. Yeah. making it bad and making it good and it's still challenging but it's more for the laughs yeah right and that's where i think there's like a lot of difference and like goat simulator is also like making it bad right it's like how can we just take ragdoll physics and do silly things yeah and the humor comes from the physics and the interactivity of the game whereas i think
Starting point is 00:11:43 in in something like the stanley parable or getting over it the humor comes from the voice of the creator being present in a way that surgery simulator i am bred goat simulator the voice of the creator is not there and it's that extra ingredient like the voice of the person who made it and And Stanley Parable did this as like a theatrical production. Like there's a narrator who speaks directly to you, but it's a character. Whereas Getting Over It had like Bennett Foddy himself narrating the game, where now like Bennett Foddy and a couple of other folks have a new game coming out.
Starting point is 00:12:23 They put out a trailer and in it bennett foddy voices one of the characters and you know that it's him immediately because it's like oh yeah that's him from getting over it like you know that voice now and that sort of i don't even want to talk about it in terms of fourth wall because i think that that misses the point a little bit but that that role of the voice of the author coming through much more clearly contrasted against the fact that the thing that that author made
Starting point is 00:12:53 is like intentionally terrible. I think that sets up a really interesting interplay where it's like, look at this thing that I made, it's so bad, but I'm going to talk to you about its badness in ways that make you feel something kind of meaningful to you that the witness and the talus principle and swapper and antechamber and like cube and all those like high-minded puzzly games never did they never set up an interesting tension or an interesting contrast between what the game interactivity i'm avoiding using the word mechanics because that's yeah you know it
Starting point is 00:13:33 has a meaning but colloquially the way people use the word mechanics there's there's not enough interesting tension or interplay between the mechanics and between what the game is trying to say it's sort of like they they tried to set up these mechanics to say something through them and i think the witness is the greatest example of that without spoiling the things that it reveals is like ha you didn't know this was going to be in here it's saying that through the mechanics and it's trying to use that to make a broader point but it didn't find an interesting enough relationship between what those mechanics are and the point being made for that point to actually be interesting and there was a lot of discussion about like oh yeah we're using games to say things that you couldn't say in any other medium and that always rang a little bit hollow to me until
Starting point is 00:14:21 something like getting over it where it's like now there's an opportunity to make that argument again that i think sticks where you're saying like the the thing that getting over it is doing it's something you couldn't do in a book or in a movie because it's your own failure to perform at the challenge that it sets up that the game is then going to talk about and you could do it with like a sport you could make a sport or like a you know like a like a schoolyard kind of game that does the same thing that getting over it does but i don't know that there's a lot of people making like sports as an art in the same way that there are people making games as an art i don't want to i don't want to get us
Starting point is 00:15:05 too far afield here yeah yeah yeah but i don't think any of this is making it in so we can we can go as deep as we want i do actually know a game that does exactly that um a schoolyardish game called silent football hmm it has nothing to do with football whatsoever uh but the whole idea behind it there's also games like mao that kind of play similarly but silent football the whole point of it is it's a absurd set of rules that you have to follow and you kind of all sit in a circle and you have to follow all these rules and your failure to be able to follow what are seemingly simple rules and to combine it all together is what makes the game so fun hmm can you give me an example because i this is rigging a bell but i i could not tell you more about this off the top of my head yeah uh so there's kind of like these like
Starting point is 00:15:56 baseline rules right that you always have to be doing and then there's like the actions in the game so one of the rules is you can't show your ivories and uh ivories are your teeth so no matter what you're doing you can never show your teeth and then you also uh can't speak unless spoken to there's like this whole series there's the game master and they lay out this whole series of rules uh about what you can can't do and they're always the same and then what you do is you kind of do different movements to pass the ball so if someone passes you the ball you can uh you can do an action like this uh which no one can see i'm putting my arm on my bicep and then hitting my head with my other arm. Anyways, there's all sorts of weird actions where you can pass the ball to different people in different ways.
Starting point is 00:16:50 There's different rules on how you pass the ball. And if you break one of these rules, the game master is basically going to interrogate you and try to get you to speak out of turn or get you to smile or get you to do all of the things that are breaking the rules. And then you get points, and if you get three points get you to do all of the things that are breaking the rules and then you get points and if you get three points you're out of the game the whole point is this like kind of social aspect where like nobody's able to follow all these rules well and you're kind of like making fun of yourself for not being able to do it but after you play it for a while it's also
Starting point is 00:17:20 like this the meta evolves if you play with the same group of people because like you've gotten very good at not laughing in certain things and now you have to like try to force different scenarios right and so like the whole game the whole fun of it is that you can't do it there is no game that plays out perfectly and when it starts playing out perfectly you end up changing what the game is in some way to make it better. And that's what we did. We had all sorts of, we played it so often. We had all sorts of variants. And when we were playing with the people who were good, we would add on more draconian rules
Starting point is 00:17:52 and it made the game fun and laughable and all of that again. Yeah, that to me sounds also a little bit like a lot of the improv games that you play in the theater. Like there's like a set of rules, thus making it a game. And you having to kind of navigate that rule space that formal language if you will yep um but the fun of it comes from sort of like looking at how other people are navigating it and and trying to navigate it yourself but also navigate their
Starting point is 00:18:25 navigation of it like that kind of you know doing it together we're like doing this by yourself would be no fun at all and so yeah these games like getting over it they do i like i'd argue that they're the thing the extra spice that they've got is that they're also trying to say something but the thing that they're saying in the case of getting over it, at least to me, the thing that it says to me is like, isn't it so silly that we do this to ourselves? And let's laugh at that.
Starting point is 00:18:53 And I think that that's all that it needs to say. Like, it doesn't need to say anything, especially deep or profound that like changes, you know, oh, I'm going to go, you know, revoke all my material possessions and go devote myself to the grand cosmic joke or something like that but i do think that it wants you to come away from it expecting more out of other games in a way that i don't know that like these sort of uh like theater games or this this um incredibly violent football or whatever you call it silent it's a silent football
Starting point is 00:19:25 is uh is is it's meant it's just like pure fun in a way that i i enjoy a little bit of that kind of high-minded you know sniffing my own farts stuff that that you get from some of these video games we have no segue we have no you had one there and then you just kept talking you know yes no there is this uh you know these games form a formal language in fact that is the topic of see the thing is if we segue off of that you can't cut it out yeah but that's the problem is i don't think that that's that sidebar there was worth it i think that that was good warm-up for us i think we need warm-up yeah i don't know that i can include 35 minutes of us talking about what we think about video games that nobody's played i don't know i mean intercalcal was a lot longer of talking about a programming language nobody's programmed in.
Starting point is 00:20:31 And there was, I mean, yes, I know that that was, and I'm not supposed to talk about episodes, so this will definitely be cut out, be cut out, be cut out. There's podcasts that I listen to that they'll reference back old episodes they had where like like the partial exam in life they had one episode where like the first 30 minutes is them talking about star wars and they got so much hate and love for that episode some people like they got a bad review on itunes where it's like i thought this was a philosophy podcast in the first 30 minutes they're just talking about star wars cut it out and they mentioned that and then they got a bunch of comments being like, I love the banter and the completely off-topic things. But I actually, yes, I know, we got too far into video games
Starting point is 00:21:13 and what exactly they're accomplishing, but I think it does actually line up very well here. I mean, there actually is a quote in here that, like, games are one of the places we find formal languages. But we're reading A Small Matter of Programming by Bonnie Nardi. We're reading A Small Matter of Programming by Bonnie A. Nardi.
Starting point is 00:21:42 Yeah. Clean take. I didn't read the subtitle. Perspectives on End-User Computing. Bonnie A. Nardi. Yeah. Haha. Clean take. I didn't read the subtitle. Perspectives on end user computing. So this is a classic text. I think a lot of people in like the future of coding community, even if you haven't read it, you would be familiar with it. And I do think it's kind of striking how different it is from most programming texts because it's not written
Starting point is 00:22:05 by somebody who whose job is being a programmer or computer scientist right it reads so vastly differently i think than almost any programming book i can think of and yet like really does show i think a deep understanding of programming and the way in which we go about it and all of that so i do think this is going to be in my in keeping with my tradition of talking about the meta of talking about these papers i do think this is going to be a harder one because we first went out to read just the introduction and we kind of realized maybe not and so i actually don't know which parts either of us read and which parts we want to highlight i hope you know which parts you read i have no idea which parts i read okay cool yeah uh what i did was i made each page randomly appear and then just read each page in random
Starting point is 00:22:57 order because i thought you know that's for sure the way this is supposed to be read yeah because this this and not intercal is definitely the the episode do something like that yes yeah no i do know which parts i read uh which dung which dung engelbart paper would have been improved by reading it in that way and dung engelbart was totally a freudian slip i'm not letting it go but uh i will say you know some parts i read more closely than others and i've read this before but it's a big long book right and we're definitely not going to be able to cover every and big long book i mean 130 pages it's not actually a long book as far as books go but it's long for an episode yeah yeah we could. We could do like, if we really wanted to,
Starting point is 00:23:45 if this was the kind of thing we were looking to do, we could do like an episode per chapter or something like that, our episode per chapter. And that would not be a hard thing to do. I didn't finish reading this. I'm going to finish reading it. And then I might want to come back and do like a, like another episode about the second half,
Starting point is 00:24:00 just because I think there's, there, there might be some stuff in there that, that would be interesting to talk about just independently, like on its, as a thing unto itself. Uh-huh, yeah. I think I would be more interested in taking some of the references here and chasing those down.
Starting point is 00:24:19 Yes, which, as you know, I already went and read a bunch of articles from this special issue of Scientific American from 1991, where they have a bunch of authors that we're familiar with talking about the advent of networked computing and what that's going to bring about as change to computing, as we know it authors including alan k larry tesler vince surf and a whole bunch of other household names of you know the the pioneers of computing and a couple of those get get referenced a few times in the in the early chapters of this book i think um in particular there's a tesler article that we'll talk about i'm sure in a minute and a k article that set up kind of two differing views
Starting point is 00:25:05 of what's coming uh that might make programming more accessible to the lay person and so nardi does a really good job of kind of contrasting those visions but one thing i wanted to say just in in the meta talking about what this book does that makes it different from the other things we've read that i enjoyed is especially compared to the last reading we did that i found hard to follow on my first read through this book goes a little bit too hard in the other direction maybe of saying you know here's what we're going to talk about no really here's what we're going to talk about and then we talk about it a little bit and it says we're talking about this and then it talks about a little bit more and it says that's what we talked about and here's what we're going to talk about next and really bit and it says, we're talking about this. And then it talks about a little bit more and it says, that's what we talked about.
Starting point is 00:25:45 And here's what we're going to talk about next. And really here's, you know, what we are going to talk about next. And here's what we talked about. It does a lot of place setting at the, at the intellectual table maybe. But I, I actually didn't mind it so much because for one, it made it more skimmable. Like I could skim through this more easily. I didn't fully commit to randomizing the pages, but I did jump back and forth a lot as i was reading this and i think that this would actually be a really good accessible entry to somebody who's comparatively
Starting point is 00:26:16 new to the field and who doesn't necessarily know all of the ideas that this book covers because as i'm sure we'll find as we get through it a lot of the things that this book covers because as i'm sure we'll find as we get through it a lot of the things that this book talks about like it talks a lot about spreadsheets and it talks a lot about different aspects of end user programming and different things that make programming accessible to to non-programmers and the dynamics at play a lot of it will be retread for us folks who have been steeping ourselves in this space and reading k and playing around with these ideas and following people on twitter who talk about spreadsheets a lot um these will be familiar ideas but if you're new to this area if you are
Starting point is 00:26:58 a new listener to our show or if you're if you know somebody who wants to find their way into thinking about ways that programming could be improved this book does it's it's not the most pleasurable read maybe in the way that i would say brett victor or k are more pleasurable reads um but it does cover a lot of the ideas that i think we have taken as as bedrock of our perspectives on this. Yeah. It was kind of hard for me to figure out exactly who the audience is. And I don't mean that like it jumps between it. I think it's a pretty consistently well,
Starting point is 00:27:37 you know, written for an audience. I'm just, is it, it definitely doesn't seem to be written for programmers. I think it's written against programmers it's written like a lot of it is saying hey programmers might believe x y and z but we we don't believe that and here's some reasons we don't believe that which i really enjoy yeah and so it almost seems maybe to be written for the more like anthropology side of
Starting point is 00:28:04 this because that's what a lot of this is coming from is kind of this anthropological look at end user programming and looking at like empirical studies and things like that. I think there's some great little bits in here in the preface and introduction about like the point of empirical studies and what they help us do and what they don't, which I thought was great. But yeah, I think it is, if you're coming at this assuming a programming textbook, you're definitely going to be disappointed. But I think what's so interesting is it ends up referencing a lot of things that I think are very relevant research, very interesting research that don't get talked about in programming. And I will say, I read this, the first time I read this was a few years ago, and I thought a lot of this introduction here was completely pointless. And now, thanks to GPT, things have changed. Yes, yeah.
Starting point is 00:28:59 So, yeah, the introduction, it's responding to this popular claim circling around in the late 80s, early 90s, that the next big breakthrough in computing is going to be conversational agents. navigator where they show off a a hypothetical vision of the future where somebody talks to their macintosh computer and asks them to perform a bunch of tasks on their behalf or if you're familiar with the uh similar video from hp called 1995 which i haven't watched but it gets referenced a bunch in the same breath as knowledge navigator so i'm going to assume it's the apple one but slightly worse uh the uh the gist here is that there's this belief that computers are right on the cusp of being something that you can talk to the way you talk to a person and that we're just a couple of small innovations away from making that happen and so futurists like tesla are imagining what that future is going to be like and they're preparing everybody for it and there's this sort of i don't know if it was a consensus but at least
Starting point is 00:30:13 you know not not having been around at the time uh as a programmer i was around as a six-year-old um the uh the consensus i get from reading the background for this paper seems to be that people are anticipating a future where AI as we now know it exists in the 90s. And, you know, circa 2015 or 2016 or 2017, that didn't really seem like a thing. And now circa 2023, it suddenly has new relevance. It suddenly has new relevance it suddenly has new resonance so reading this and reading the tesla felt like holy cow some of this is way more relevant than i'm used to and some of it is way less relevant some of it is totally off the wall and so that that was really funny like how pebbly how uneven it was reading some of this
Starting point is 00:31:06 background material and reading this preface it's like it jumps back and forth between examples of things that seem still futuristic and still out of reach and then things that are so like so long since the history's been settled and so long since we've actually like achieved the things that it talks about that it just seems like why am i reading this this just seems like a settled matter um a settled matter of programming uh yes so a small matter of programming i do want to comment on this this is what it's called and and we hear that this is like something that was normally spoken about that's what you know we're told at the something that was normally spoken about. That's what we're told at the beginning, that people would say something like,
Starting point is 00:31:50 it's only a small matter of programming at the end of a lengthy technical discussion. I have definitely never heard that phrase. I understand the phrase as soon as I hear it, right? I can imagine the context, but I've never heard anyone actually say that. And I do wonder if that was really in the lexicon at the time or not and the idea is supposed to be that like uh you know it's a small matter of programming and kind of like an ironic sense like oh well there's actually a lot of work to be done uh it looks like it's totally doable but it's going to be real hard once you actually start
Starting point is 00:32:25 digging into it and of course like we can do it though right like we programmers can solve this actually difficult problem that we're downplaying i think i've heard it said in the same way that people say sufficiently smart compiler ah yeah yeah well yeah we can probably do that but g it's going to be hard or um you know maybe it's possible maybe it's not but uh there's only so much we can do about that right now and we got to get into it one way or another it's it's such an interesting title because i don't know that it actually connects up at that well with the the topics of the book i i guess i don't get the play on words here and that i feel like has to be there it's a stretch definitely but the the topics of the book i i guess i don't get the play on words here and that i feel like has to be there it's a stretch definitely but the the interpretation that it's like end user programming
Starting point is 00:33:12 and this idea of making programming not about general purpose languages that can do anything that have to be used by experts who are deeply interested in programming but instead these smaller task specific languages that are accessible to a lay person that's like a a shrinkification of what we know of as programming and so it's let's let's turn programming into a smaller matter so we could say it's a matter of small programming yeah yeah we could that's good yeah okay yeah so what we're going to look at is how could we take programming, which has been the activity of only programmers, and bring it to the end user?
Starting point is 00:33:54 Yeah. Because right now, as of the writing of this text, also right now as of 2023, it is not common for people to actually program their computer. And by that, I don't mean learn a programming language, but be able to do, you know, use the powers that we as programmers can use when dealing with our computers, they're kind of stuck in this fixed application and the way the computer was set up for them by programmers, and they can't extend it in any meaningful way.
Starting point is 00:34:26 And so what we're going to get here is a few examples where you can extend the functionality, namely like spreadsheets, statistical packages, and CAD systems are the three examples that come up, and look at what makes them work and how we could extend that to other applications. Spreadsheets and CAD systems, it's funny because the way that it looks at them and understands them, where you're you're taking a task that was previously reserved for programmers and making a domain specific tool. So I'm thinking like Squarespace, right?
Starting point is 00:35:17 Used to be that you had to do HTML and CSS and JavaScript to make a website. And you had to learn about DNS and you had to learn about FTP and whatever, and whatever whatever and instead you just use a little drag and drop thing where you're manipulating some template that they've made for you you know you can find some examples like that but the the the elephants in the room are still i think 3d modeling tools and spreadsheets like when i when i talk to people about hey what do you look at as great examples of end user programming systems are like, what are the most successful programming languages out there? That's a tweet that I've seen go viral, you know, half dozen times is like, you know, how many users of Java are there? How many users of Python are there? How many users
Starting point is 00:35:59 of Excel are there? And the Excel users is like, like you know hundreds of millions or maybe a billion people like it's so much bigger than what we think of as you know typical programming languages and so i i think it's funny that that the field has not changed that much in the time since and in fact with this whole like oh hey you know conversational agents and in light of gpt making a comeback it's like it feels like we're at the beginning of the 90s still today like we're back in the position that we were at the time that this book was written at the same time you know the conversational agents they're imagining here we're not realized in any way right like they had they couldn't actually you couldn't actually speak in
Starting point is 00:36:41 you know natural english and get something reasonable out and you still can't and you still can't so you can uh not not the way they were envisioning no i would say you can't that's that's why i want to make clear is like it's this is where i think it's really hard to convey well the distinctions between the way they're envisioning it in this text, right? And the way, you know, conversation agents were imagined and like what we have today, because I think there is kind of this like default assumption that like, yeah, of course, GPT-4 gets some things wrong or whatever, but like you can just have any conversation with it. And it is just like having a conversation with a person.
Starting point is 00:37:25 And I feel like it's the same way when I played Halo 2. I thought, oh, wow, these graphics are so realistic. Just look at how real that looks. And now you go look at footage of Halo 2 today, and you're like, no. I feel the same way about the conversations you have with ChatGPT for. I've got a great quote about that, about the march of graphics progress.
Starting point is 00:37:51 I think that's a perfect example. The quote I love is, it was an interview with, I think, some president or something like that at EA in 1999 or 2000 or something like that. And they said, know hey yeah the graphics for for um uh you know madden 2k 21 or whatever or 2k1 right 2001 madden 2k1 like the graphics are amazing and they're like we're gonna want to play the trailer for madden 2k5 for a couple of minutes
Starting point is 00:38:23 before we tell you that it's not actually a video recording of a real football game that was their cold shot was it's like by 2k5 you know we're at the beginning of the 2000s and in five years the graphics are going to be so good that you're not going to be able to tell them apart from a from a televised uh football game we're still not there and yeah inevitably we will get there like that one to me does feel imminently achievable like the the the number of circumstances where i'm seeing computer generated graphics that are indistinguishable from film or tv you know i'm seeing more and more examples of that all the time yeah um and there's this great thing that
Starting point is 00:39:03 autodesk has been doing since the 90s maybe even earlier where they they make this game where it's like let's look at these photos and you have to identify which ones are cg and which ones are real and they get like very cg looking photos of real things and very real looking photos of cg things so i love that kind of stuff i love that space and i love that we're going through that now with with conversational interfaces and i'm sure it's going to be the same thing where it's always going to feel just around the corner and as time goes on there's going to be more and more circumstances where we we have some interaction where oh yeah that feels like a new threshold has been crossed or in this one example it was indistinguishable from a real person but in you know in all these
Starting point is 00:39:46 other cases it still has a long way to go yeah that's how i feel about a lot of the the video game graphics today that like there are moments especially if you take stills out of certain like you know i've looked at some like gta modded you know things where like there's a picture from the game and you're like that does look like a very stylized real world shot right like i could imagine that being a photo but usually once you start seeing things in motion and the way shadows change and like the light reflecting it's like all of those little it's the uncanny valley right like all those little details kind of like make you go that feels off right and even the most realistic things and i feel like chat gpt we were so used to computers never being able to respond to us in natural language and like understand our natural language that like now it feels so magical in some ways and the longer i've
Starting point is 00:40:41 used it the more i understand what it's good at but also the less I'm impressed by some of it. And the more I start seeing those gaps and seams where you wouldn't expect that from an assistant that's a person, right? So from the Tesla article in this Scientific American special issue, there are a couple of example prompts that you would be able to give to a conversational agent that i loved because they are they're like they're very pure right they're very childlike they're not somebody who's been playing with gpt for a couple of years and already knows the limits of what it's able to do and i enjoyed reading these and thinking about is this something that we could do now? Is this something we're going to be able to do soon?
Starting point is 00:41:27 Or is this the kind of thing where we're not even close? And so I'm going to hit you with these, Jimmy. Okay. And then we can see where we go from them. So one of them is, you'd ask your conversational computer agent, you'd ask your knowledge navigator, on what date in February did I record a phone conversation with Sam? So for that, it's like, okay, the agent needs to know all of your recordings, or at least when they're happening, like your metadata about recording phone conversations, right? So it's assuming, runs on your own device and
Starting point is 00:42:11 has no cloud integration whatsoever so it's extremely limited in that sense but because it's local we're allowed to be behind the privacy firewall and get access to your personal information in a way that you'd be uncomfortable with a cloud service doing it so that's an interesting dynamic and then on what date in february so it's asking like you know hey look through my phone logs and find this kind of thing that's something that like the actual doing of it like hey go find a phone call from february like i can do that on my smartphone now i just scroll up my call history and look for oh okay back in february here's my phone conversation with sam or if it had like a search field i just search for sam and find the one from february that's an easy one yeah but the social context
Starting point is 00:42:55 around agents social context around ais is is what's making that difficult yeah like i feel like you could there are programs out there now that will record everything you do on your Mac. Yes, Rewind.ai is one of them. Yeah, I haven't used it. No idea if it's good or not, but that definitely seems like the kind of pitch that you would imagine.
Starting point is 00:43:21 And being able to take all of that information and then ask that question, that seems very reasonable to do. Just no one's had a fully baked version of that. And yeah, you could talk about privacy, but people are going to be fine with shipping that off to the cloud. It's really more the context window that makes it hard.
Starting point is 00:43:39 And that's why there's the vectorized databases and all that stuff that people are doing to trick things things yes i'm definitely on team i want live streams like i you know at least once a week if not once a day i hit something where it's like oh i saw this thing i remember details about it and i have no way to tell my computer hey find that entry in my browser history or find that message from this person on whichever service it was on. I know the content of it. I could describe that in intimate detail, but I can't get back to the thing.
Starting point is 00:44:12 So yeah, that concept of live streams is definitely, I'm on board with that as long as it's running locally on my machine with no cloud component. Gotcha. And that's what Rewind is supposed to be doing from what I understand. Yes. And that's what Rewind is supposed to be doing from what I understand. Yes. So the next one...
Starting point is 00:44:29 Make me an appointment at a tire shop that is on my way home and is open after 6 p.m. So make me an appointment. You can do that. Yeah. Yeah, Google has a service, and there's a few other ones where... Yep.
Starting point is 00:44:44 Where it places a phone call and has a service and there's a few other ones where yep where it like places a phone call and has a synthesized voice and we'll we'll navigate that conversation and yeah yeah at least they demoed that i i haven't seen it actually ship do you know if it shipped i know that google's use it using it to get updated hours on google maps yeah yeah right so that's one of the things that they're doing is like when it comes to holidays they'll just have an agent call in and be like hey i was curious what your hours were on such and such date and then record those but that's that's different than the like hey as an individual i want to wield this ai to act on my behalf. It can navigate as an individual.
Starting point is 00:45:26 When I had an Android phone, it can navigate through automated voice systems, call trees, in order to get you where you want. I feel like, yes, you could combine all of this to make this work. This seems like a feasible thing given all the technology we have. Is there a product out there offering it right now? I have no idea. Here's where I want to go with this. Is there a product out there that's offering
Starting point is 00:45:51 both this and the previous one and the next one? All as one thing. And that doesn't just handle these specific tasks. That's how Apple and Google roll. They take these things very task specific, very one thing at a time and uh that's that's interesting to me because that that feels like a a path towards a hodgepodge of of brittle systems that have seams between them rather than one cohesive you know foundation upon which we can do whatever we want so what's our next one yeah the third and final one is um distribute this draft to the rest of the group and let me know when they've read it
Starting point is 00:46:30 yeah that one felt like nope yeah yeah like you can imagine a very very limited scenario where you can say this where you're already in software that can distribute drafts and check if someone's read it and you type that in instead of pressing the one button you would have pressed to do exactly that right but like the idea of just in general it understands all of like this draft the group and then can know when they've read it i i don't with the like various ways in which software works i have no idea how this makes sense at all and each of these pieces like there's three pieces in here there's distribute this draft which is like okay we've got some draft we're working on and the software is aware of what that is and we can talk about it it's a you know an object in the system or whatever there's the
Starting point is 00:47:29 the rest of the group and so we have some notion of like okay a bunch of people that we need to like contacts or whatever and then they'll let me know when they've read it we have each of those pieces individually and we have some tools that are aisIS or adjacent. Like there's a project from Federico Vittici of MacStories.net where he made a shortcut on macOS and iOS that wraps GPT and gives it hooks into a bunch of Mac and iOS features because, you know know shortcuts lets you do that and so he did the the leg work to figure out okay here's how we can parse the responses and submit the prompts so that if you want it to to ask gpt to do something like make me a playlist with music that sounds like this artist's early work it can do that because it has the okay figure out who this artist is and what their early work sounded like that's gpt and then the make me a playlist is like the apis for that exist so the let me know when they've read it is like read receipts or whatever or maybe you know ping backs or something
Starting point is 00:48:35 like that or uh you know you could you could set up some kind of a like an email based thing where if you have gpt running on both sides and hook it up to be able to send and receive emails like that's there's some like api gluing together zappier kind of stuff that could get you there the rest of the group implies like okay i have this set of contacts and i've given it some name and so i can you know tell gpt to do that and that distribute this draft like this to me feels like you know the the integration of a of a simple scripting system like like if to or zapier or shortcuts and gpt and an environment where you have you know software doing each of these tasks that offers
Starting point is 00:49:19 you hooks that those scripting things can plug into like this also it doesn't feel done by the os provider the way that the previous ones are already done by our os providers but this one feels like an opportunity where some end user scripting tools plus gpt could get you there yeah at the same time so the point of these agents is they're supposed to act like people it's supposed to be a personal assistant right that like these agents are supposed to be just like you had a person doing it and everything we've described that you would need to have set up and their conditions that would have to happen in order to make all of these things happen you just wouldn't need with people yeah right imagine you told this to an actual person so first off they already have the context of what this draft is right they'll know what you've been working on and if not they'd ask
Starting point is 00:50:16 like what what draft are you talking about they know the group like you know they know who will care about this based on what the content of that draft is and who is important to do this. Even if you've never made a list of those people in any setting whatsoever, they would know who. And if they've read it, they can make an ad hoc way of figuring that out even if they don't tap into anything like, hey, I sent this to you, please reply after you've read it. yeah they can ask the person yes and like if the person doesn't reply and like
Starting point is 00:50:50 also not only can they do that because you're gonna say well chat gpt could send an email and say please tell me when you've read this but people aren't going to reply to that because why would they because it's just some random like like, the social aspect of, like, oh, I know that person and I know why they're asking me to reply when I've read this. Versus a random program told me to reply when I've read it are two very different things. Yeah, or I get a lot of emails from that person saying, hey, have you read the thing? Please reply. Yeah, so I do think that this, this is what I'm talking about, where the graphics analogy,
Starting point is 00:51:32 we sometimes say, oh look, we could do all of these things, and we forget what the baseline we're comparing it to is. But I think the point here is less about that, although we do get into like, why this, like why conversations maybe aren't what we think they are. But it's really that the imagined thing here was that the programmer would have to give the system these abilities. Yeah. abilities. And that these abilities are, like you said, kind of like pre-programmed, ad hoc sorts of workflows that somebody knows, yeah, maybe they compose and combine in some way. But the fundamental units
Starting point is 00:52:15 are made by the programmers that the programmers will make these agents have their reasoning capabilities and that the end user can't modify those things. What we imagine end users doing in all of these quotes are kind of mundane tasks of moving information around or requesting something happen, but not the complex computational aspects.
Starting point is 00:52:42 Yeah, this distinction between the like because there's kind of two distinctions here that you've just spoken to that nardi brings up that i really appreciated that are like good grounding for thinking about one of them's the distinction between in an imagined scenario like this or in some kind of a conversational system there's still programmers who are expert computer people who are creating the affordances for these kind of things to even be done and then there's the end users who are able to through a conversational interface invoke those behaviors that the programmers offered them so that's distinction number one and then distinction number two is kind of related to that. Like what work is the system doing the computer system and what work is the,
Starting point is 00:53:31 the user of that system doing? And the user of the system is doing kind of mundane, like, like they're almost acting like an NPC doling out fetch quests. And the computer is the one that's doing the actual work in this picture and i that that second one i think is a little bit like i'm sure there's a lot we can get out of that exploring that but it's a little bit limited by the fact that these are very generalized examples these are very generic examples they're not examples where the
Starting point is 00:54:07 the person is asking the computer to do something in a very domain specific area like if the example instead was you know uh yo dingus because i don't want to invoke my smart assistants i'll say i'll use the colloquial yo dingus apply this lut to all of the clips in this project that were shot with the aria alexa that's something that i can't easily do through final cut through the interface that it offers or through da vinci resolve but that that information is there right the metadata on each of these clips in my video that it was shot with the aria alexa as opposed to the the red or whatever camera um that that information is there and the the lookup table the color remapping that i want to do for for color grading it knows what that is and so applying that to all of these clips like
Starting point is 00:54:57 that's that's a laborious chore that i would rather the computer just do for me and so there's an example of something that a conversational interface could do where the person doing it is very task-focused. They're very much thinking about, here's the result that I want to get out, and I know what's involved in achieving that result. I just don't want to have to go through the task of doing it. And the two ways of solving that
Starting point is 00:55:21 are the conversational agent's way of just have a sufficiently smart computer agent that knows all of the things that it needs to know to go and do that work for you versus what nardi is going to argue for in this book that i'm also kind of more on the side of is just make a really good user interface so that the person can do it themselves and that even if and and i'm gonna do the thing that you did last time that i admonished you for and jump ahead to conclusionary thoughts before we've even laid out all the exposition but the um that distinction that she sets up here between the work that the programmer is doing and the work that the user is
Starting point is 00:56:05 doing where she's saying like the user is is sort of limited by what the programmer allows them to do i don't think that that distinction ever goes away like i don't think that any and you tell me what you think jimmy but like she sets that up really early on it's like there's this this problem where programmers are are put in this position where they can kind of do whatever they want and users are put in this much more limited position where they can only do what the programmers have allowed them to do and that's that's one of the big questions to me so if you want to to get into that now, it's just something I keep thinking about, but we could also save that to the end.
Starting point is 00:56:48 I don't know. No, I think this is interesting. So let me, we haven't actually quoted from this paper at all. Yeah. And you say you're jumping ahead to the conclusion thoughts or whatever, but also we get even in the preface
Starting point is 00:57:02 what the end goal of the paper is, right? Like what is the world that we should see? We are ultimately leading up to, end users will freely write their own applications when they have task-specific programming languages embedded in appropriate visual frameworks, and they will write applications in collaboration with other users. So there's these three parts. There's task-specific programming languages,
Starting point is 00:57:28 visual application frameworks, and collaborative work practices. These are the three things this book wants to explore and say that this is what in-user programming is going to look like, is if we can combine these three elements, we will get users beyond the humdrum programming or the humdrum computing of, you know, scheduling a task or whatever to doing the grand things that like Alan Kay envisions of like children writing simulations of complex natural phenomena, such as biological and physical systems to better understand how they function.
Starting point is 00:58:06 Right. But I kind of agree with you that as soon as we're saying these task-specific languages and we're getting past general purpose programming to what we would call DSLs or whatever, it still feels like the end user is trapped into what the programmer will allow them to do. You think about spreadsheets as the quintessential example, but as soon as you want to do something like get some data from that website over there, I know there's like some weird ways you can try to do this and there's ways of exposing an interview but it ultimately depends on like
Starting point is 00:58:52 that becomes a very hard task to do in a spreadsheet right and so there always are these limitations and this is why i i will say up front i don know. There's part of me that is... There's part of me that's skeptical about the end-user programming idea. And it's not because I think end-users can't program or shouldn't be able to, or that we don't need a better relationship to our computing environments, but that it feels like, if it's good, it feels like an unachievable goal that pushes us in the right direction
Starting point is 00:59:27 rather than something we will ever actually accomplish. So what would it mean to accomplish end-user programming? Yeah, I think that's part of my uncertainty around it. I think if you ask somebody like Alan Kay, it might be that a good amount of what we spend our time as normal computing users doing is computational work, is exploring ideas and using the computer to help us do that, is building simulations and tools for thinking through problems
Starting point is 01:00:05 and understanding the world. And maybe we spend some time in entertainment or whatever, but that is a significant chunk of our time, is those other tasks. That's what our computing use is. And I think if we go that strong of a vision, it's kind of hard to imagine because I don't think a lot of our life
Starting point is 01:00:29 is spent doing those things. Yeah, this is the Brett Victor Magic Inc. like three-way breakdown of some software is just for getting some information out. And I think I would also include entertainment in that. You know, we have very good interfaces for entertainment. And so the way that they get the value out of the digital world into your life
Starting point is 01:00:55 is pretty well handled. Then we have that second kind of software, which is the manipulation software, where you're not just using an interface to get information out of the computer, but you're you're not just using an interface to get information out of the computer but you're also using an interface to affect a change to the model that's in the computer and you're doing this this back and forth dialogue with the computer and that's the one where i think this question of end user programming has a bit more relevance compared to that first
Starting point is 01:01:22 category of just getting information out and then that third category in magic inc is communication software where you are you know using the computer as a way to facilitate an exchange with another person and once again i don't think that end user programming has as much relevance to that third category it certainly does i don't i'm not being absolutist here like there's there's relevance across all of these different kinds of usages but i think the one that's most interesting is the one where the user has come to the computer because there's a job that they want to do and they need to use the computer as a tool to do that job and the nature
Starting point is 01:02:01 of the job is like the manipulation of digital information in some direct way whether that is writing something you know in a in a word processor or calculating something or doing statistics in a spreadsheet or creating something that is a model for the real world like in a cad program or you know creating an entertainment product creating game or creating a video or creating a simulation or something like that or or creating a a game or a video or a simulation for the purpose of your own learning process to get that k angle on it the role of end user programming becomes most clearly relevant when we're looking just at that second category. Yeah, I think that one distinction I think is useful to draw here is like end-user programming
Starting point is 01:02:55 in day-to-day life and end-user programming as part of a function of a job, like a physicist, a chemist. You know, this is the, I was trying to find the quote here, but this is the context that is imagined, is that these people are not just unsophisticated computer users. They're people doing big, important jobs that involve some computational aspect. And that's why you can see, like, with Dynamic Land, the shift towards, like, the chemistry lab
Starting point is 01:03:24 and, you know, trying to focus on those sorts of activities. Because I do think if we consider the scientific uses or more complicated uses of this, you can imagine end-user programming making more sense than the day-to-day life use of end user programming yeah and these examples from tesla are all day-to-day life kind of things that's that problem i had with them versus the example i gave of you know you're editing a video and you want to apply some lots it's that the the ones where it's about um so on what date in february did i record a phone conversation that's a communication kind of thing or like an information retrieval kind of thing it's a it's a magic ink category one or category three hurricane of usage um uh the second one make me an appointment at a tire shop that's on my way home and it's open after 6 p.m that's a like
Starting point is 01:04:21 straight up and down category three and then distribute this draft to the rest of the group and let me know when they've read it is a category three that came out of a category two and so yeah none of these examples are satisfying because they're not they're not the i think the most interesting space which is that second category where you are trying to do some work that is important to you in the real world. And this is, you know, while we're jumping around, this is a distinction that Nardi draws a couple of times that I enjoyed very much, which is clarifying that the difference between an end user programmer and a programmer is that a programmer is interested in computers just as a thing unto themselves. And end user programmers are people who are just trying to get something done and they don't care about the computer they care about the
Starting point is 01:05:09 thing they're trying to do and like that's a classic you know we've heard that one over and over and over again we know that that that distinction but it's worth being very clear about that that when we are looking at the kind of work that people are doing we're interested in that group who are not looking at the computer as an enjoyable thing to work with unto itself they're not interested in programming because they want to do more programming they're not here for a yak shave and good time they're here because they want to actually you know solve the climate crisis or solve geopolitical instability or solve childhood obesity or you know solve these things that are actually important problems not figuring out whether c++ undefined behavior is a bad thing or a good thing there yeah on page five of the introduction
Starting point is 01:06:02 we got just who are end users and this this first paragraph, I think, is getting at what you're talking about. programming problem, who would rather follow a lengthy but well-known set of procedures to get the job done. The converse of this statement, putatively from a collection of MIT graffiti, goes, I would rather write programs to help me write programs than write programs. Which I resonate with this last one, right? Like, I would much rather write programs to help me write programs than to write programs. I will not do things the long way because I'm not interested in them being done. I'm interested in the doing of them and what that involves is me not having to do repetitive tasks, but me getting to exercise some creative freedom of writing a program right i don't actually care about their end result generally speaking this is amazing to me that we've hit on this i want to i want to live in this moment for a minute uh-huh um and this would be a great uh like community survey question to run which is how many people would put themselves in one bucket or the other
Starting point is 01:07:23 bucket and of course i'm sure most of the people in the, in the Slack at least would quibble with, well, I don't know why these are the two buckets because that's the kind of people in our Slack. It's a good place. If you're listening to this and you're not in the Slack, you should join.
Starting point is 01:07:40 But that I am absolutely the opposite end of that. And I'll share two quick bits on that. One of them is that I was recently complaining to a friend that publishing these podcast episodes is a stressful time for me. Because I have to run around and do a lot of different things. I have to upload an MP3 file. Actually, I have to render the MP3 file. I have to optimize it uh i have to upload it to the service that i use i have to get all the show notes in a markdown document in one git repo
Starting point is 01:08:12 and then convert those to html and then put that ht or convert them into like rendered plain formatted text rendered formatted text and paste that formatted text into a field on the web page of the host of the mp3 file and then i have to uh push the changes in the git repo and hit publish on the uh the web forum for the for the podcast and then i have to go to a bunch of different social media platforms and write a thing for each of them and this friend said to me you could just automate all of that you could just make it so you only have to do one copy of the notes and you only have to do one social post and whatever and to me the thought of trying to automate that is is infuriating like just thinking about it makes my blood boil because all i can think about is
Starting point is 01:09:03 all of the past times when i've tried to automate things that are high stress high importance high risk and that the automation has fallen over or has had some error and then i've turned a moment of uh you know hey i gotta put this show out and i gotta do the right things in the right order at the right time i've turned that into a debugging exercise where it's like oh shoot the podcast is published but none of the show notes are right. And then the automation has failed me at a critical juncture. And I'd much rather just do it the hard way and make sure that it gets done right, even if it means I have to attend to a lot of little fiddly details that I would rather not have to attend to. See, I'm very bad at attending to those details.
Starting point is 01:09:45 So when I do it manually, I get in the same situation you described with the automation of, oh no, I forgot to do blank and now this thing is in that state, but I don't remember what I forgot and what steps I did or did not do. Whereas when I automate it,
Starting point is 01:10:01 I can like, you know, put that auditable-ness in, right? I can put that auditableness in. I can know which steps worked and which ones didn't and check on them. And then if I have to go manually do them, I feel better because I have a list there. I'm very bad at following process manually. Very, very bad. I get distracted if if there's any that's why like if there's any process that takes like it's like a a few minutes loop right it's like wait three minutes do blank i will not remember after those three minutes i will be off on doing something else and it will
Starting point is 01:10:38 take me hours to do it wow i am learning so much about us going through this i am the total opposite i'm extremely detail oriented i'm extremely good at following manual processes exactly and i always assumed that that is why i gravitated towards programming because i didn't i didn't go to school for this i didn't i didn't like choose to become a programmer i was trying to make computer animations and interactive simulations and games and websites because i had things i wanted to make that were cool that i could share and the programming kept coming up in each of my hobby areas in each of my passions in my music and in my art and in my animation and in my wanting to make games programming kept coming up as a thing like i i had hypercard as a kid and i've used hypercard a lot i've put many many many hours into hypercard
Starting point is 01:11:32 but i never learned hyper talk because that was you know why would i use that when i could just use complicated amalgams of buttons to navigate through this very complex structure and if i need two variations of a card depending on some state that's just two different cards that i've drawn manually different ways rather than one card with some generic behavior and when i got into 3d animation like there's this whole scripting system in tcl and so i kind of consider tcl to be my first textual language because that's what was there and i i kind of learned oh when i make a cube and put it at this spot there's these commands in the programming log behind the scenes that's running all the you know the 3d modeling the internals of the tool that's printing out all
Starting point is 01:12:18 these instructions is tcl and i can copy paste them and change the numbers and make it do it so i can do stuff faster through the text than i would through the mouse but like why would i do that i can do it manually through the mouse and it takes longer but then i get a more immediate visual feedback of what i'm getting at every stage in the process and so yeah yeah i've never changed in that respect even though i now do a lot of programming. And I hate the thought of automating things that I could do manually. Yeah, I would say that there's two aspects of why I found programming so interesting. One was automating all of those things I had to do manually. So I can think of a number of different examples,
Starting point is 01:13:02 but it would be even things that were so minor that I just did not enjoy having to... I made a Firefox extension for changing music because it was in one tab, and I had to switch to the tab and press the next button or the pause button. So I made it in the bottom bar so I could have to do less.
Starting point is 01:13:21 And I spent a lot of time building that. And then I found also that I was building these little extensions for the, there was this Firefox extensions, little beta called Jetpacks that were actually really cool. And they had this, they had a sidebar that slid out temporarily.
Starting point is 01:13:36 They called the slide bar. And you could put little apps in your slide bar. So like you could have like, if you highlighted a word and went over to your slide bar, you could have a Wikipedia app your slide bar. So you could have, if you highlighted a word and went over to your slide bar, you could have a Wikipedia app, and it would automatically have looked up that Wikipedia article and put it in your slide bar.
Starting point is 01:13:52 And I built a few of these, so you could have websites over in the slide bar that could react to what was in your browser currently. And I built a few of these, and then I realized, oh, and I published them on their little Jetpack store or whatever which wasn't like a legit store it's just like a wiki um and i realized oh well a lot of these are just website with blank attributes so then i made a generator to generate slide bar extensions right
Starting point is 01:14:19 like i i've always liked to automate things that I could have done manually. That's how, I mean, that's how the Secret Service ended up busting in my door was me automating something I could have done manually. If you want to hear that story, is that, is that in our bonus episode? No, that, that story was in the i went and guessed it on a code with jason and i talk about that story there damn can't work in a plug gonna have to cut this out but i will say the other part of why i like programming was just the understanding the inner workings of things and if i was able to create it myself like i liked the the inner
Starting point is 01:15:18 workings of stuff i would always i loved the idea of taking things apart i never had the like tools or knowledge of like taking electronics apart and I never had the like tools or knowledge of like taking electronics apart and putting them back together. Although I did do it a little bit with like a, there was a PS2 that someone had that was broken and they gave it to me. And I was like, oh, can I take it apart
Starting point is 01:15:35 and just learn how things work? And I did. And I found, oh, there's just actually one of these ribbons that is not connected. Then I had a working PS2 and that was super exciting, right? So like the knowing how things work under the hood and recreating them myself
Starting point is 01:15:48 and understanding the computational aspect. And still to this day, the most fun programs I have that I like writing do absolutely nothing useful for me. I don't really like making useful programs, but I also like automating things that I would have to do manually. So it's kind of like a both. Both I want it for the completely useless programs,
Starting point is 01:16:13 like writing programs to help me write programs. But also, I cannot do manual tasks. I'm so bad at it. I'm going to keep us on this tangent, because I think this is gonna come around to the nardi in a really interesting way so you you talked about taking things apart and that's what attracts you to maybe scripting things or maybe having you know learning how to program like it's that it's that desire you have to to take the
Starting point is 01:16:45 thing apart and it's funny because i also i was the kid who had a like a you know a baby carriage that i um screwed a broken vacuum cleaner into and built this little like mobile rolling like service tank and that was my like how i played as a kid was i had this you know contraption that i had built i was a and i would go around trying to fix all of the things with my mobile service wagon thing and i was i was very much like a like a take it apart but it to me when i started getting into 3d animation and seeing like okay here's the visual representation that i'm using, and it's very manual and interactive and direct manipulation versus here's the, you know, when I open this window, here's this log of all the code that is being invoked to actually build the underlying representation to me there was never any doubt that the thing that was in the 3d viewport was the real thing and the thing that was in the text log where i could you
Starting point is 01:17:50 know it was a repl that would directly manipulate the data of the 3d scene i was building that was just like a debug view that was just like a a secondary sort of peripheral you know if you're a person who prefers to work in the old school way you can learn that and do that and yeah it has some power but it also has limitations in that it is non-interactive in the way that the real-time 3d viewport is and so to me i think this is this is maybe where some of this like hey programming's inherently spatial comes back around to us is that like the the scripting of the thing to do it for you is much less real to me than the doing it myself even if they're just two ways of getting at the same underlying set
Starting point is 01:18:41 of apis or features of whichever software we're sitting on top of and to me like the code that makes the app is less real than the app itself and i think one of my favorite sort of things to point to about this is that there was this article that went around the internet a couple years ago called c is not a low-level language that looked at the way that c is is actually executed on modern cpus that do like instruction reordering and they do branch prediction and that do all these things where you think you're writing you know some code that's going to execute in a certain way but then there's a compiler pass that's going to change the code that you wrote into something different it might do inlining it might not and you know a lot more about this than i do jimmy so i'm retreading stuff that's going to be tired but and then it executes on a cpu that's not even going to obey the the way
Starting point is 01:19:36 that the machine instructions that are fed to it are written and it's going to make its own intelligent decisions about what to do and then you get specter and meltdown and like to me that that was a real a heartening thing to read because it suggests that yeah like the machine code is not the real thing the intermediate representation that goes through clang and llvm is not the real thing. The C that you wrote or the C++ or the, you know, Swift or Rust or whatever is not the real thing. The functions and data types and those abstractions that you've created are not the real thing. The design doc that you've created is not the real thing. Like there is no real thing. They are all just different representations of some, of something.
Starting point is 01:20:24 And I don't know what that something is maybe that something is is to you know to do a sort of look at it from the legalistic lens that we had last time is the actual execution that happens and the effect it has on the world and if that's the case and if the effect of this running code on the world is the thing that is the most real about this software, then like it's if that effect that it has is on you, the person sitting in the chair world are at best like different views of something but at worst they're like you know incidental hallucinations on the path to achieving something that you could have achieved without the computer at all and we're deep into ivan's philosophy corner i apologize i'm not supposed to be the one taking us here. But yeah, to me, there's something about all this programming that we do that never feels real in the way that looking at a wireframe
Starting point is 01:21:31 of a 3D model feels real. Yeah, see, I feel some of the tension you're talking about. Especially, I think that C is not a low-level language is a great example of like hey all of the stuff you thought was going on in your mental model of the way it works is not actually the way it works right and the things that you take as ground truths about the way that code works because that's the argument it's responding to it's responding to people who are sort of absolutist about like well you know java or a visual programming language are
Starting point is 01:22:07 just putting an inefficient ineffective sort of arm's length remove from the real truth of the matter and that programming in c is where you get the real truth of the matter yeah it's the way your machine really works and everything else is fiction, right? Yes, exactly. Yeah, and you ought to be programming the way machines actually want you to, right? And for me, my gut here is, you know, you ask what the real thing is, my gut reaction is to say the computer is the fake bit, and the program is the real part. And the program does not depend in any way on the computer. It does not depend in any way on its execution.
Starting point is 01:22:53 Whoa! Does that sound like an interesting idea? If so, listen to the aforementioned, referenced but not described, bonus content. Where will you hear more about this bonus content i don't know i don't have the foggiest and like the way i think about this is like think about lisp but we can also think about intercal right both of these were languages that were created way before they had implementations of them l Lisp, when it was written down by McCarthy, there was no interpreter. Intercal, when it was described,
Starting point is 01:23:30 there was no compiler, interpreter, any way to run this. And I don't think that made it any less real. And when we look at the way programs kind of live on their own, they exist regardless of if they can be executed if they're going if they ever will be executed they are these things in and of themselves and i think what's so interesting about programming and the reason that i i have this like there's like the skepticism towards individual programming in terms terms of will we achieve it,
Starting point is 01:24:09 but there's also something that I do think Alan Kay captures, but I just always am waffling on with end-user programming is I think the beauty of programming is looking at it as a thing in and of itself. And so to kind of bridge back where we get this is in the text, that's not at all what we're looking at. In fact, Bonnie already asked, how do we define programming? And says we should define it by its objective. The objective of programming is to create an application that serves some function for the user.
Starting point is 01:24:40 And I find that to just be such a sad definition of programming. I'm sitting here like, yes, that definition exactly captures what I think programming is about. And you are coming at this from the perspective of somebody who's interested in the programming as, you know, programming in its own right. You're that category of programmer, and it's not the computer that you're interested in. It's the what it is of programming. And I'm over here like, I don't care about the what it is of programming. I want my spinning cube.
Starting point is 01:25:16 I want my photorealistic image that I'm trying to make or my video that I'm trying to edit. I want my effect on other people and the fact that i have to do it through software i care less about the software than about the other people but great if the software is the shoes that i need to put on to to run this marathon okay and i care less about the abstract divorced from the computer floating in space you know nature of the essence of a program than i do about the actual using of the program to affect the change on the world so what your your sadness is my joy jimmy and i i think that that's really good like just to be clear like
Starting point is 01:25:59 yeah i think you were doing that on purpose yeah Yeah, I think we need people who have these different aspects. But this is where some of this talk here falls a little flat for me. Because what we get right after this section is some empirical studies on what works for end-user programming. And I do love the way that this is set up because it's not this awful, I'll just straight up say awful, way of doing empirical studies of programs where you find some statistically significant result on does TDD help you or not? I think that's just garbage and you can fight me. I wrote a whole article about it. It's a good article. If you want to fight me, read the article first.
Starting point is 01:26:42 Yeah. If you want to fight me, read the article first. But instead, we get this very interesting take on looking at the way in which empirical studies can help inform our design. And so I'll quote here. So basically said, like, they're not this panacea where you can, like, solve all your problems. Instead, empirical studies are intended to create an atmosphere in which the actual experiences of users become part of the discourse of design. I think that's fantastic, right? I think like, when we're trying to design use cases, when we're trying to design applications to help people solve problems, it is important to consider their real-world use cases. But what it can't do is we can't just let those studies dictate to us what the design's going to be.
Starting point is 01:27:33 And so what I find, though, kind of sad about this is I think doing these studies while, in this case, it's supposed to inform the design, does often limit what we're going to end up doing. So we see this focus on letting people achieve a goal with spreadsheets. I'll speak mostly to spreadsheets because I actually have never really used CAD systems and things like that, whereas I've done some spreadsheet stuff and I have more of a good conceptual model there. But I feel like if that's our goal, if our focus is to let people build these applications,
Starting point is 01:28:23 and we look at what has been successful, we might be missing out on how we could expand people's thinking and open them up to new opportunities. And I think of like Minecraft and Redstone where, yeah, you could say like, oh, well, you're building out an application by automating something inside the game, right? There's some task that someone wants to do to do this Redstone. But most Redstone things are not about that. It's to build something so you can understand the mechanics, that you can explore what the game makes possible, so that, like, the uses are actually useless. It's exactly back to, like, you could have done it manually and it would have been faster, but it's more fun to explore and play and learn. And that's what i find so interesting and
Starting point is 01:29:07 what i think spreadsheets don't offer and so yeah i like i don't i don't want this to be i don't know i feel like with this text it is kind of hard i'm trying to like more bring us back into like going through what the text is arguing, but I have so many opinions about this topic that it's hard for me just to continue on with the text and not interject what we're doing here, right? Yeah, and I think that's the value that we're going to get out of this text.
Starting point is 01:29:38 I love this as the way that we're approaching it. I don't think we're going to do this text in the way that we've done previous ones where we mostly stay close to the text i think this is a great one for us to go off in a different direction in in addition because this is not the be all end all summary of end user programming and end user programming is a really big really important subject in our in our community and in our areas of interest and so i don't think that it's necessary for us to stay close to the text and like i mentioned at the
Starting point is 01:30:11 top i think this text is better as a as a beginner introduction to the area perhaps than as something that people who have been studying this for a long time and thinking about it for a long time might get a lot of value out of but it is an opportunity for us to reflect on end user programming and and think about what it means to us and and what we want out of it and i'm gonna well i have two things let's see if i get to both of them in order one of them is not going to work because mastodon is throwing 503s so uh we'll deal with that later um but there's this video i saw on mastodon the other day of somebody who in blender was like you know i'm feeling unsatisfied by wait a second wait a second uh i need to derail the podcast for a second We had a dog that went missing a couple of days ago and Freya just sent me a picture of this dog
Starting point is 01:31:10 Oh I might need an emotional moment Yeah, yeah, of course I would do the same I'll go find out what's going on and then I'll be back So at this moment, Ivan is currently off looking for his lost dog. And I'm going to take this opportunity as future Ivan to borrow Jimmy. And we're going to tell you about a new thing that we are launching.
Starting point is 01:31:42 Yeah. I don't know how the connection between the lost dog and what we're launching. We're launching Find Your Dog. I need a place somewhere in the episode to put this. And so we have the cliffhanger that my dog has been missing for a couple of days, and we've gone off, or myself and my wife and my daughter have gone off to look for this dog. And that interrupted the middle of the episode in a way that i'm going to need to edit around and so i figured this would be a good place to put an announcement that we are launching a patreon and the connection is is entirely just that i'm going to need a place in the show where
Starting point is 01:32:16 this goes and there's a big gaping hole in the middle of the show you might as well go there and the dog was indeed found uh the spoilers spoilers we're gonna we're gonna come back to that in fact no they they already know the dog was found because the the the beginning of the story was oh my goodness they just found my dog that has been missing and so that's why i took off okay good so yeah we have launched a patreon uh there's a few tiers you can go check out uh some interesting ones there. But really for us, this is a place to put content that we couldn't fit on the main feed.
Starting point is 01:32:50 Jimmy and I sweat a lot about what papers do we select, what people do we bring on this show. We are considering at some point maybe bringing some people on the show. We haven't done that yet. But at some point, there might be other people who come and join us
Starting point is 01:33:06 on this podcast and and we and we sweat a lot about what is even the format that the show is supposed to take is it going to be just reflecting on texts or are there other kinds of things we can do and one of the things that jimmy and i ran into is the realization that there's a lot of interesting material out there that doesn't fit with what we think the straight down the center of the track of this show is, but would be immediately interesting to anybody who is riding that train. Like if you want the scenic view out from the train, this is the kind of stuff
Starting point is 01:33:40 that we will be posting on our Patreon feed. So one example, we did a little chat where we talked about vision pro and dynamic land we kind of compared and contrast those visions right so that's the kind of stuff that you might find we're going to try to post content fairly regularly is the goal it'll be a little bit shorter than these episodes a little less produced than these episodes yeah and if there is some kind of weird idea that i get for something that is just even too transcendently weird for this show which after the intercal episode i don't even know where that line is anymore but i know there's a line out
Starting point is 01:34:16 there somewhere um that's rolly's theorem right um then uh this is where that's gonna go and, you know, one or two people out there back us, that will mean a tremendous amount to me, at least, as a person who's going to be sitting behind Ableton Live for 10 or 15 hours to put together this episode that you're listening to right now. But yeah, just knowing that, in addition to the usual things that we don't, like, I'm going to open the curtain a little bit further.
Starting point is 01:34:45 I don't say, leave us a review on iTunes or share our episodes on social media. Be sure to like and subscribe. Tell your friends. I don't do that. I really don't like that kind of stuff. And now that we have a Patreon, you will have hints that it exists in future episodes because we will want to encourage people to go and check it out and support it but i don't do a lot of that kind of self-flagellating as i see it this is something that does help and if you did want to do any of those other things
Starting point is 01:35:16 like leave itunes reviews or or share it on social media that is also really good and helpful okay i'm gonna stop i'm not gonna say any more of that. That is the end of it. Patreon.com slash future of coding. We were talking about like the understanding how things work and like that being what motivated you to become a programmer, what motivated me to become a programmer. And how even though we both had this shared interest in wanting to understand how things work and take things apart to understand them like we both have that that there's a big difference in that what that actually motivates us to do and i saw something on mastodon the other day yeah that i think is a really charming illustration of that difference which is um somebody in blender maybe you saw this they made this video it's like a five minute video but it like like the the ramp
Starting point is 01:36:12 of intensity starts off really low and then goes exponential as you know a lot of good entertainment videos do where it's like they're they're they're in blender they made some scene and they're like you know they made this this scene of like a building with a car in front of it, and they rendered it out, and the texture's good, and the lighting's good, and it's like, that's a nice, you know, 3D render of like monitor and it's a cg scene of a person like a cg person sitting in a room sitting in front of a computer with like blender up with that scene in it and the narrator the person he's talking about like yeah i did this rendering in blender and whatever they do a lot of blender videos they're like but after you do that render you're left feeling kind of empty like it doesn't feel like there's it's it's somehow worse than reality and it doesn't give you that sense of meaning and purpose that you would want out of something like this.
Starting point is 01:37:09 Okay, you take a box and then you cut a little tiny hole in one side of the box. And then on the other side of the box, you have a white screen and you put the camera behind that little hole and then you set the viewport of the camera. So it just barely encompasses the size of that image uh but then you have to flip the image upside down because it renders upside down and they and you crank the samples way up and boom you've created a pinhole camera to take photos of your blender scene so you take some more cylinders and you cut their ends off and you round the other sides and you position them so that you have these little round sort of shapes that you can space apart the right way and you give them a glass texture with the right amount of refractive index and you position them the right distance apart and figure out how it you know creates a focal center and a focal plane and a focal distance
Starting point is 01:38:00 and then so what you do is you create three different textures and you set each of them to a different color channel red green and blue and you write some code to simulate basically the emulsion and the like the chemical processes of film and they rebuild a fully working film camera within blender so that they can take film photos like real film photos of their fake scenes to put them into a fake art gallery so they can have a fake cg art gallery exhibition of real photos of cg objects and it's that like that alan k style like what they are showing you in this video is on the most surface level the entertainment value of like look at this crazy thing that I did. But it's accomplished.
Starting point is 01:38:48 The visions that you are seeing, the visuals of this video are shots of Wikipedia articles with like, oh, here's this handy chart that somebody from the 1870s published showing all of the correct constants that you need to use in order to put together the like the refractive index of the different lens elements or like here's you're seeing all of the research that they had to do to be able to do this and you're seeing that what they actually did was they went on this really invigorating deep dive into like how do cameras and photography actually work well enough that within blender they can create this very interesting simulation of it and the results that they got out of doing that are renders that have a kind of a depth and beauty to them that was striking to me like it actually produced a result that looked filmic in a way that that you don't normally get out of like pristine cg and it didn't it didn't look filmic in a way that was like oh it's like a film filter or something like that like an instagram kind of thing it looked filmic in this weird way that was like
Starting point is 01:39:55 yeah what if you got a mostly accurate simulation of optics and film chemistry but it had to render through blenders renderer where like you can only crank the samples up so high and so it has this digital grit to it um it's just fascinating stuff and it's like that to me is that question of you know what's real and what's not real in this scenario are those real photos i i would argue that they're real photos of of a fake scene as opposed to what a normal photo realistic render you know is it's like it's a a render of a fake scene that's meant to look real this is like a real photo of a fake scene that's meant to like come at this from another perspective and that's i think where we're at when it comes to
Starting point is 01:40:46 our approaches to programming and and i think this is really interesting for the end user programming question is like to me what's real is not the program it's the effect that it has on me and this like you mentioned that nardi had this kind of like it made you sad to read her definition of of um of the difference between like what programmers do and what end user programmers want to do where it's like end user programmers just want to just want to accomplish their task and they don't care about the programming needed to achieve that i find your story so interesting with this blender explanation because it seems like the moral of the story is the exact opposite of what I thought you just drew from it.
Starting point is 01:41:27 Tell me how. In the analogy I would make, what Nardi is explaining is they just want to have an application to serve some task would be just doing a regular render and blender. And the task that this person did of going and doing everything they can to make this crazy setup of making a camera, that's I would rather write programs
Starting point is 01:41:56 to help me write programs than to write programs. So here's another way that they could have approached this. They could have said, I'm not getting a good feeling out of these blender renders i'm gonna go write my own 3d renderer i'm gonna go write my own ray tracer my own rasterizer i'm gonna go write my own you know physically based material system etc and i think that's the oh i'm interested in the in the yak shave in the direction of the computer whereas i think the blender person and this is you know i'm stretching this this analogy a little bit but what this
Starting point is 01:42:31 blender person did was it's like i'm gonna yak shave in a direction away from the computer and i'm gonna use the computer like i'm gonna use it it's like what are the tools you're using but what's what are you using those tools to do and i think that the tools you're using but what's what are you using those tools to do and i think that the tools they're using and what they're using those tools to do is different from i'm just going to write my own ray tracer yeah so i'm all for that vision and i take that to be just very different from what nardi is saying which is like i just want some practical application right so what i would love and what i do love is like if you i think they're similar this sounds way more interesting but like you can see a bunch of people using new figma has like a new way of doing
Starting point is 01:43:17 variables and things like this to help you do like interactive things someone made flappy bird in it it's very much thanks i hate it i'm i'm on team they're they're doing this wrong i knew this was going to happen because one of the people who started figma was one of the people um i can't remember their exact role but they were instrumental in flash so it's like hey when are the figma when's when's that person who used to be doing flash you know always doing Figma? When are they going to flip over and start doing the rest of Flash? And it's just like Flash.
Starting point is 01:43:51 They're doing it in the, I would argue, the wrong way. Yeah, I'm not talking about the way in which they're doing it. Yes, but the fact that they're doing it. But the fact that people are taking that and pushing it beyond the bounds of what it was meant to do. The Flappy Bird was not the goal of what it was meant to do. Right. Like the, the flappy bird was not the goal of, of the way this thing is set up. Like they have to do some weird.
Starting point is 01:44:10 And I feel the same thing with blender. I think this is a much more extreme example, right? But taking it and making a camera, it's taking these bits and parts and using them in ways that weren't intended. And that to me, that impulse is what I find interesting about programming.
Starting point is 01:44:26 And I think you can do that even if where you're going, what you're exploring more deeply isn't the computer, right? Because again, I said the computer stuff isn't the real stuff. It's how things work. It's how systems come together. It's exploring those ideas. And I feel like building out a camera in blender is like both discovering how does blenders rendering engine work but also how does light work how
Starting point is 01:44:52 does a camera work like that's the bits that i find interesting and so what i what i like about the nardi text is i think it does, but then like it actually does endeavor to discover how things work, but then it towards an end of letting users, enabling users to get something done rather than discover how something works. So for example, the next sections we get, which is why like all this chat GPT stuff came up as well,
Starting point is 01:45:21 not just that there's agents, but then there's kind of this dismantling of the idea that conversation is a good medium for programming. And so there's this whole, chapter two is a whole deep dive into like, how do conversations work? And like, what do humans actually do when we have conversations? And what are the contexts in which we have conversations and what are the different kinds of conversations so like you know casual conversation that we're having versus like a lawyer in a courtroom or you know in a hearing whatever there's different rules that happen and there's kind of this general framework of like turn taking and repair that are
Starting point is 01:46:03 talked about in conversations where like you and i take turns and then we clarify no we don't we talk over each other and we keep going because that's the bit and it's funny if we keep doing it jimmy you dropped the ball on me and you're laughing now because we were gonna completely dismantle the notion of turn taking i don't know yeah no i had to ruin the bed because it was more fun to do that. Uh-huh. Uh-huh. Yep.
Starting point is 01:46:31 So, yeah, we do this turn-taking repair. We're trying to, you know, we let the other person speak, and then we kind of speak back to them what they said, so that way we can figure out, like, are we on the same page? And that's how context establishes a bunch of these different things. And the point of a lot of this is that these conversations actually depend on context and the way in which conversation flows is actually really complicated
Starting point is 01:46:53 depending on a bunch of prior knowledge, what our goals are, what the context is. And the idea here is that computers won't have that. They don't have that context and you might think okay well chat gpt does because it has all of this big corpus but the context actually is like what we are doing right now in the real world not just the linguistic context it's the like send this document to the group and let me know when they've read it it's that context like who's the group how do i send it to them how do how do they let me know when they've read it
Starting point is 01:47:31 or the like you know if i asked gpt to like get all the groceries that i need or like put together a list of all the groceries i need it's like i can't ask gpt to do that because it doesn't have the context and we could enable it to have that context, but you know what already does have that context? Me. My family members. We can talk to each other about it in a way that we can't yet, and won't for a while be able to talk
Starting point is 01:47:56 to our agents to do that. Yeah, exactly. And then we even get like, okay, well, there's different kinds of conversations, there's different contexts, but is conversation even the right idea? And I love well there's you know different kinds of conversations there's different contexts but like is conversation even the right idea and i love the there's two examples here one of driving a car um if you had to have a con if you had to have a conversation with your car to have it drive everywhere uh you could say oh well what if it's self-driving and you just tell it where you want to go yes of course but if we're actually talking about you you trying to in the moment get it to do things that's a very bad way to
Starting point is 01:48:33 communicate to those desires is through a conversation and the other one is musical notation which i also think is fascinating uh it's really interesting to me because you know i'm not heavily into music by you know compared to you especially but like i was in orchestra in high school you know i can read musical notation and i wasn't i can't oh okay so uh yeah so the tables are turned so you're into music more but i yeah yeah jimmy's actually low key. The like pro music expert on this podcast. You, you actually can't read musical notation. No.
Starting point is 01:49:11 Oh, interesting. Oh, well, okay. Okay. If you sit me down, I can go like,
Starting point is 01:49:15 like three notes per minute. Okay. Yeah. So I know, I know how to parse it. You know how to, but you never like, and I could never,
Starting point is 01:49:22 I can't sight read. Yeah. I couldn't sight read very well um but i could if i'd heard something and then you know do it i could usually you know figure it out well right yeah uh but not because i'm like remembering what it sounded like or whatever like i can correlate now like oh that's what it's supposed to sound like and then i can read right i need just some context um but like you know one of the things i always did find a little frustrating with uh with musical notation is while it captures
Starting point is 01:49:51 a lot it doesn't capture everything and sometimes it is actually a worse medium in my opinion for describing it than hearing the song is um like in orchestra we had to play uh we had one like concert where we were doing a bunch of covers so viva la vida by coldplay was one of them and it's you know this and our conductor was trying to she was trying to get us to all count it out and like actually counting that out is not very straightforward, but just listening to it and playing it is like the easiest thing you could possibly do. Feeling, feeling it out so much easier than, than actually trying to read it.
Starting point is 01:50:54 And yeah. Yeah. I was like, why are you having us do this? Just like play the song and have us tap along with it. And everyone will get to the rhythm, like no problem. Instead of like one and two and three.
Starting point is 01:51:04 And you know like yeah that's this and this is gonna i i'm like i have had that experience many times in uh choir and and not all music works for that but sometimes that's a nice shortcut you can take is just just listen to it and feel your way through it yeah no i agree but i i think what's what's so interesting here is just that like there's lots of different ways to communicate. But ultimately, this whole chapter, while it seems that it's trying to dismantle this idea that conversation is the right way
Starting point is 01:51:36 or that we really have to think about conversation in more complex ways, it's ultimately an argument that formal languages are a good way of communicating in general, in human speak. And we actually do use formal languages all the time, but also for computer. you know, using this to springboard off, like I know you're kind of skeptical of the language metaphor, for lack of a better term for programming, right? You would rather something else.
Starting point is 01:52:14 Well, so what I appreciate about this chapter and about the Nardi in general is that she does very little of the thing where, you know, she could have said, that approach that is popular is the wrong approach, and this approach that I'm advocating instead is the right approach. She instead does the very gentle thing of saying, here's something that a lot of people have written off, or here's an assumption that a lot of people have made that maybe doesn't hold, and i'm going to
Starting point is 01:52:45 show you another way of looking at this and i'm just want to bring up some points in this area because i think that they're they're missing in the conversation like she does a very she's very much making an offering of knowledge and of of perspective that i really appreciate she's not trying to shut anybody down or say that like conversational interfaces are bad she's trying to say like there's a lot of people prognosticating about the future and holding out hope for this particular future and i don't think that it's a panacea and here are some things that are alternatives that have values that that conversation doesn't have and so like yeah formal languages if you want conversation formal languages are a way to have good conversation they're good conversation
Starting point is 01:53:31 between people in certain circumstances where a task is the you know the thing you're trying to achieve and they they would be a good conversational interface with a computer in a task oriented setting as well and it's it's great because she she's saying both hey maybe conversation not the thing we want it to be and if you are going to do conversation here's some ways that i found that we could do conversation well i love that like that's a very positive framing and so i i got a lot of value out of reading these points and i agree with many of them and and see a similar value and would would also like line up behind these arguments myself especially like the way that she uses terms she explains very well like the way she uses language is not the the meaning of language that I object to.
Starting point is 01:54:25 The meaning of language I object to is that when somebody says programming language, they implicitly mean text-based code. They mean JavaScript. That's what I don't like about discussions of language. My objections to language are when it is used as a shorthand for JavaScript. And, oh, but JavaScriptavascript sucks rust rust is better um i also object to rust on the same grounds it's still a text-based code that's that's the thing that i object to so other meanings of language like the way that a person expresses their thoughts whether to a computer or to another person,
Starting point is 01:55:05 whether mundane, informal, or formal, I'm on board with. I think that's cool. I think that's worth appreciating and understanding. Whether or not that plays a role in what we want to see happen in end-user programming is another matter. But just in principle, I'm not opposed to it.
Starting point is 01:55:22 Okay. Yeah, so I think this is where some of our disagreements come in like for me when i think of you know something being a language like it's just a certain structure right and the the elements can be absolutely anything right so we actually get like uh you know you can technically go like all chomsky and be like this is a different kind of language and that thing's a language or whatever but like to me their systems of communication is also what she calls them at
Starting point is 01:55:49 times and i always did have this like and i still don't feel like i have a great grasp of what people often mean when they say formal right i remember when i first heard the word formal i thought as opposed to casual, right? Like it's a formal way of talking because it's, you know, serious and not playful or whatever. But I mean, I know it's about the form of the system. And in this case, it's more like the computer can interact with it in some way. Yeah, well, I think Nardi walks the whole spectrum. Like, I think the contrast against mundane conversation is that first meaning, that colloquial meaning of like, oh, it's casual versus serious. Formal connotes that, and I think that that's worth acknowledging that that is one dimension.
Starting point is 01:56:39 But that's not the only interesting dimension here. Agreed. Yeah. It's that there's these certain prescribed forms. There's a certain delineation of what's allowed and what's not, right? So if we think about like the rules of chess, this kind of forms a formal system of how movements in chess can work, right? And so we get here that these systems are so pervasive that we scarcely stop to notice them. The alphabet, numerals, games, methods for scoring games, arithmetic, algebra, shorthand, the conventions used in sewing, knitting, and crochet patterns, copy editing marks, calendars, maps, money, musical notations, street and highway traffic control signs, and even the juvenile secret language Pig Latin.
Starting point is 01:57:26 Which I always was terrible at trying to do. I cannot Pig Latin at all. I say e-way, if gay, a-a, tempt a? How do you say attempt in pig latin I have no idea I also am very bad at understanding it yeah shut
Starting point is 01:57:54 down I haven't tried to speak in pig latin in like 25 to 30 years so it's fun who would have thought it's actually fun to try and do that but i i think this whole idea of like formal languages have a place in in-user programming i do think is probably right i actually don't know that they're what the alternative would be other than natural language. GPT.
Starting point is 01:58:28 Yeah, but if you look at the ways in which people are utilizing these things well, often it's taking those natural language things and translating them into some formal language and even exposing that formal language to the end user. As a way of kind of learning programming, as a way of kind of like letting people describe what they want, but then seeing the correspondence between their words and the formal system, right? And I think that's where we're going to see conversation and end user programming really be an avenue to do something greater. And I don't see that really thought about here. And I think that's almost the immediate thought now
Starting point is 01:59:11 with ChatGPT because they're so good at producing code in some certain circumstances. There's cases where they're not. On a totally side tangent, I've actually wondered, and I think people are starting to do it, if you can use these new non-symbolic AIs to bootstrap symbolic AI. I don't know what those words mean. Okay, so like old-style AI was like,
Starting point is 01:59:38 I can have a bunch of propositions about what the world's like encoded into a logical structure, we should definitely do some of the early AI papers that go through the implementation details of these. So it would be like, if something is physical, it has a size, right? Like these sorts of common sense inferences, right? So that you can be like, if something is green,
Starting point is 02:00:07 then it is colored, right? Or whatever, right? Like those kinds of logical, seemingly logical inferences, but can't be found from first principles, right? They're facts about the world that we all know and can use to infer stuff. And so the biggest problem these people felt about this symbolic approach and being able to infer stuff. And so the biggest problem these people felt about this symbolic approach
Starting point is 02:00:26 and being able to derive everything, which how do you get all of those basic facts, right? And so I'm wondering if you could take chat GPT, and I actually tried, it does a really bad job, but something like that, and ask it to start giving you a bunch of lists of these propositions that are these commonsens, propositions that are these
Starting point is 02:00:45 commonsensical propositions. Usually, uh, the ones I tried and ended up just repeating itself over and over again, uh, which is like a common failure case. Uh, anyways, I just think that would be really interesting to start using these things to generate all of this like background knowledge that we have because they are captured somehow in that model. i don't know like there's a lot i mean we have only gotten up to like kind of sort of chapter three here there's all sorts of things on like visual application systems and like how spreadsheets actually work and the dependencies between them i mean this thing is chock full of interesting things. I guess I'm curious, are there things that you still want to touch on
Starting point is 02:01:29 in relation to end-user programming or bits of this that you really enjoyed or wanted to make sure we talked about? The thing that I'd be interested in doing a little bit more is just getting some general freewheeling kind of thinking out loud about having read through this, having absorbed a little bit of what Nardi is advocating for, and having our own perspectives on what it may require to bring end user programming more into existence, or reflecting on other attempts that people have made to do that because that's that's something that you and i have that nardi didn't have as we've seen 30 years since this came out of attempts to achieve some of these goals not just
Starting point is 02:02:20 the gpt stuff we've talked that well, but there's also low code, no code. There's, um, you know, the web and web design and scripting and the, and the different, you know,
Starting point is 02:02:33 roles of like web designer versus web developer and all of that. Like there's the, you know, and the learn to code movement, you know, everybody should code, um, making it kind of a core competency at grade school
Starting point is 02:02:46 um that that has all happened since this book this book was written right at the beginning of a a new era where computers would become ubiquitous like you know there's more smartphones in the world than there are human beings at this point. And each of those smartphones is a computer. And whether or not we are able to actually use its computational that's the thing that I think is what is interestingly generative about this book is that it was written at a really interesting period of history. It's written in a really accessible way, and it touches on a lot of really cool ideas that have – some of them have – like, very few of the things that are said in this book are things where i can look at them and laugh and say oh she got that totally wrong yeah history has has gone a very different direction i think that she was maybe not making a lot of wild predictions like she wasn't playing futurist the way that the people in that scientific american article all were like all of those scientific american articles have this this joyful kind of wow you're calling a lot of shots and it's
Starting point is 02:04:11 funny to see which ones like went right down the middle and which ones went way off the side um but yeah nardi does not do that nardi instead is focused a lot on the things that are going to be universally true like what are human beings and what do they bring to this relationship with the computer and and what is the role of the computer in that relationship so yeah that's that's the kind of stuff that i'd like to to reflect on a little bit more yeah i will say maybe to to start off, my thoughts on end-user programming. I think that you're definitely not going to get there. Let's say, it's kind of fuzzy what this goal is.
Starting point is 02:04:56 How do we know we've achieved end-user programming? You could say it's never going to happen. Yeah, it's never going to happen. But let's assume we have some decent notion of it. Like the people right now who wish they could learn to program in order to accomplish some tasks or jobs, and they just find it too difficult. They now have an easier on-ramp,
Starting point is 02:05:23 and they start being able to do tasks that they want to. So I think of like my friend who's an environmental, I don't know if he'd call himself an environmental scientist or, I don't know what he would call it. He works at a company dealing with like environmental data, right? And he's going to get his master's degree in data science because like a lot of the things he wanted to do, he really needed to learn Python and databases and et cetera. And he's really good at Excel and using it to great effect, but it was some limiting factor there. And so in some sense you could say he already has end-user programming.
Starting point is 02:06:00 Look, he's doing Excel and can accomplish a lot with it. But he's now had to pull in these more traditional tools. I don't know. Do you call that successive in user programming? I'd say probably not. The fact that he feels the need to have to go get a master's degree in order to do these kinds of things, and a lot of it is around the programming aspects rather than learning the math or something, feels like we've kind of lost.
Starting point is 02:06:29 And so I do think we're never going to get there with our existing languages and tools. I don't think if you throw a notebook at it or you change up the way the interface works or you make installing packages easier or you put it all in the cloud and no one is allowed to own their systems anymore. I don't think any of those things get us to end-user programming. I think that if we're really going to get there,
Starting point is 02:06:55 it's going to have to involve a lot of different ways of doing things that will connect to a lot of different ways people think. And they'll all be pretty different from what we currently have. And some of those are not going to be that we change the syntax of a language. It's going to be that we change the concepts you have to think about. We change the whole entire package of how it works. We change the social environment.
Starting point is 02:07:22 I think it's going to be... I think Dynamic Land is, even if I don't think that incarnation is necessarily the end goal, neither do they, but it's tackling this in a way that I do think is fruitful, where it's asking,
Starting point is 02:07:38 what kinds of things are people good at? In this case, physical interactions in the world. And how can we bring that into programming and i yeah i i think we've got to we've got to be a little bit more radical if that's really our goal and then i guess my one final thought on that too is like but also building these kinds of systems right now as a programmer is incredibly difficult. And the only way we're going to be able to do that experimentation is if we get better tools for programmers to build those tools. So write programs to help us write programs. Which is, of course, the thing you enjoy doing, yes.
Starting point is 02:08:19 Yes, I have no bias here whatsoever. So I want to dig into a couple of things with you so what's the difference between so like one of the one of the objections to uh or one of the reasons that you see like end user programming not really taking off is that it's like this friend of yours has to go and learn how to be a programmer in order to achieve the thing that they want and that's you could see that as like that's a distraction away from them working on the thing that they're actually interested in what's the difference between that and like the alphabet and learning to read and
Starting point is 02:08:55 write and learning arithmetic and and climbing your way up through uh and learning like history and learning how to write very well. Like, all the things that you learn in school, assuming that that's the educational path that you take. And I don't want to get into a whole educational philosophy thing here because I've got some outside takes on that also. But. Shocked. Yeah. Assuming, for a minute, I'm sure you're no different uh assuming you know a typical k-12 north american style education um curriculum here why wouldn't the approach just be start teaching and i'm not
Starting point is 02:09:37 going to be contrarian and say scala i'm going to say javascript or something like that why not just teach you know web development or whatever it is as the as the sort of the what's the addition and subtraction of programming start teaching that in grade one or two or three as like another like it's computer science right why not teach it as part of the typical science curriculum why why won't that be a sufficient solution to this because then by the time you're an adult and you're ready to start doing you know geo rockets or whatever it is that you want to focus on you'll have uh literacy and competency in programming yeah so i'm not opposed to teaching programming at school i am so damn it this did not go the way i thought it would i'm not opposed to doing it. I'm not advocating for it. What I would advocate for is just more diversity of topics being taught in K-12.
Starting point is 02:10:33 Programming being one of them is great to me. Philosophy being one of them. And some schools have this more than others. I'm for these kinds of things. I'm not opposed to that, but I don't actually think it accomplishes the end user programming goal. Because I think they're quite different from something like the alphabet and the basic things that we learn. Because once we learn those things, we kind of have this automatic process for acquiring new abilities that utilize them yes it might take some effort yes it might take some thought but it's not like you have to relearn the fundamentals of language in order to
Starting point is 02:11:14 like read a psychology paper versus a philosophy paper but you might have to learn a specialized set of vocabulary for that field but everything the way you can learn that is just by reading those papers. And so what I think is that my buddy who does a bunch of spreadsheet stuff, he has the ability to do computational thinking. He can do a bunch of if statements and a bunch of these different things and he understands conceptually how to do what I think of as programmatic thinking, computational thinking, and yet there's this problem.
Starting point is 02:11:55 A skeptic would say, well, that's because they learned a constrained, inadequate DSL instead of learning real programming. So I had programming classes in high school. I actually didn't take them. I tutored in them. But I got to watch a lot of students go and learn programming. They learned enough to pass the test.
Starting point is 02:12:20 They were able to make really bad programs. It was clear that they did not understand what they were doing. One example was I was in a Programming 1 class helping. I was supposed to be in Java AP, but it was during my orchestra class, so I sat in a Programming 1 class instead. I would help people when they wanted help, but a lot of people did not want help. They just really had no interest in the class and were trying to do the bare minimum.
Starting point is 02:12:48 But my friend, who's now a programmer, really wanted to learn. And so the final project for that class was to build a game. You had to build a game in Visual Basic. And so a lot of people built mazes. That was their game. But the way that they built a maze was to make a grid on the whole screen, and there's tiles for every single thing, and then copy and paste if statements over and over and over again.
Starting point is 02:13:22 That if you press up and this grid is active, then this one becomes active and that tile doesn't. And they would have like 10,000 line programs of copy and pasted code to let them do this maze. I taught my friend how bounds checking worked and how you could move a sprite around on the screen and how to load data. And we built a little Pokemon game with all 151 of the original Pokemon.
Starting point is 02:13:46 And then on the day before the project was due we saw there were like practice demos and we saw that almost everyone had a maze so we threw in a maze because we had bounce checking you could walk around the map so building a maze was trivial right and like i yes i helped with some of this, but I taught him the general concepts. And then when it came to the maze, I was like, build a maze. And he was just able to go put some tiles in an array and get all the bound checking automatically working, etc. And so I guess my point is, if you teach these things to people, I guarantee they don't remember Visual Basic. They don't program today. They wouldn't have the computational literacy
Starting point is 02:14:29 that you would hope they would have despite taking these classes. I think the same is true of mathematics, things that we take. I just don't think that this is actually the way to get at that end goal and to make people want to use these systems and know how to use these systems so i'm gonna capture just to save you um a bunch of uh different
Starting point is 02:14:54 aspects that contribute to this failing one of them is that the programming we have is not as good as it could be and so it's harder to learn and it's opaque and the constructs that it offers are are tricky and the interfaces through which it exposes those contracts constructs suck there's also the we're not going to talk about it dimension of the quality of education that you receive from a school and how that approaches it and it's good at the end you mentioned yeah kind of like mathematics the same way? Like a lot of people will go through high school math and come out of it with a passing grade but have learned nothing of math. They will have learned pattern matching. Yep. And I was one of those students who went through high school and was, you know, I was doing a lot of art and I was doing computer animation, but I was also taking math and i was terrible at it like i you know i got 51
Starting point is 02:15:46 on my high school math because i got a mercy pass because i was like look i didn't do any of the assignments and i failed the the final exams but i figured out how i can use my graphing calculator to draw interesting pictures by you know you punch in tangent whatever into the plotter and it makes cool shapes and i also was like hey i found this up arrow notation well i didn't know it was up arrow notation at the time but newth's up arrow notation i was like you know what if you just have successive towers of the same kind of operation over and over again and so i did enough to show to the teacher hey i'm actually interested in math as like a real thing um but i'm not going to do any of these exercises of like pattern matching
Starting point is 02:16:25 on the formulas and they're like okay fine we'll give you a mercy pass but now like i i spent the last little while and i was going to share this anecdote on the show but i'll save it for another time i spent the last little while learning vector calculus and and a couple of other things and i borrowed from an engineering friend a the calculus book that they got as part of their master's degree or whatever for engineering calculus and i flipped through it and it's like i actually know all of this stuff now like like i don't necessarily know the names of all of these things but in the time since i graduated from high school lo these uh three or four years ago um i i have picked up on all of this math stuff and how did i pick up on it because
Starting point is 02:17:07 i want to make computer graphics and how why do i want to make computer graphics because i enjoy doing that because i want to make cool art and i got a job making cool art and if you learn how to do programming you can make cool art and if you learn how to do some you know vector math and some matrix stuff you can make cool computer art and so there's this yeah there's this like you need to be motivated to want to do something in order to learn to do it and if you do put programming in a you know grade school curriculum a lot of people who go through it are not going to be learning to do it because they're not going to be interested in learning to do it. And they're going to come out of it being aware of it the way that if you go up to any person on the let's say we did put programming into the grade
Starting point is 02:18:08 school curriculum and everybody graduates from high school knowing about as much about javascript as they do about you know algebra the other problem that that won't help is that sure they will know how to program things from scratch and maybe the passionate they will know how to program things from scratch, and maybe the passionate ones will know how to program things for their own purposes from scratch, but that will not help them one lick with the problem of using their programming skill to change the way that their computer works for them. They're still going to be in operating systems that are designed by these monolithic corporations that are closed off to extension and modification and they might be able to create very narrow applications within the api
Starting point is 02:18:51 surfaces that are afforded by these devices and by the os's but the two halves of end user programming that nardi brings up or the two like the two reasons you'd want to do it is one of them is you can make your own applications to suit your own needs to accomplish the task that you want to accomplish. But the other one that we haven't really talked about is to be able to modify existing applications. And that's something that in the years since Nardi published this book, things have only gotten worse in this regard. Yeah. Because we had this beautiful early internet era where you could view source on every website and that's the era that i learned how to
Starting point is 02:19:31 be a web developer and i like while doing a bunch of other stuff kept up with everything that was happening on the web all through the view source era until the mid to late 2000s when minification started becoming a thing and as soon as minification started becoming a thing and i no longer had a good way to like tear apart websites it became a lot harder for me to learn how websites are built but that that is the like exception that proves the rule right i can't view source on the finder um i can't like view source on netflix's server infrastructure like that's that's something that i would love to be able to do is go to some website and be like yeah but how are you served right what's happening on the back end that makes your website come up so fast what server are you running what load
Starting point is 02:20:22 balancer what caching what that kind of thing that's all invisible and opaque and inaccessible and so even not even wanting to modify it but just to learn how it works so that's a dimension along which i think we are in as bad a position as nardi was or worse these 30 years later yeah i think this is the the aspect that like if you really want to achieve this end user programming there are a lot of social conditions. There's a lot of these fundamental infrastructural things that you have to change. I think about the things that have caused people to learn programming or learn some computational mindset.
Starting point is 02:20:59 A lot of it's games. Social media used to expose this. You think of early MySpace and being able to change your profile layout and, you know, write a bunch of CSS. And we don't expose those kinds of things at all anymore in social media. I, this is one of the things that I would love to make, I have no desire to try to run a social media company, especially not in this day and age. But it would be really cool to like can you make myspace level customizability but without all the like the reason we don't do it now is like
Starting point is 02:21:31 security concerns could you make a language that lets people customize all of this stuff as an end user but also guarantees certain security constraints that you want right i totally think you could and i think I totally think you could. But I think people don't think it's worth the effort to let people have their own expressiveness on the web in that way on social media. And so we've kind of lost that where we become consumers or if we produce creative content, it's in the form of video rather than in the expression of our identity, our brand identity, our personal
Starting point is 02:22:06 identity on our page or whatever. But I think, you know, Minecraft has helped people through Redstone learn things, Roblox, you know, there's all these sorts of things where there's kind of these motivated use cases that kind of bring people in, whether they learn a real language like CSS, or they learn like Redstone or, you know, things like that, in order to start doing these things, they see the way in which they can customize. And so yeah, I think I was thinking about this today, like, as I was preparing for this thing, because I didn't, because this is such a long text, I didn't have as close of a reading, and I didn't have as many highlights a reading and i didn't have as
Starting point is 02:22:45 many highlights and i wanted to be able to just like well just give me all the excerpts that have highlights and like just put those somewhere and like i was like okay well that could be a feature request to some software but like i have all the skills needed to accomplish something like that and yet there's just no way for me to do it, even though, you know, I use Muse and I have reverse engineered it and can go pull their SQLite database and have looked at all the strings and SQL queries they do by looking at it in a hex editor. And yet the idea of adding that functionality now is technically possible. And yet so beyond the pale of anything i would ever want to do right it would be such an endeavor to make that happen and yet conceptually there's no reason it should be
Starting point is 02:23:35 and so yeah i think if we're gonna have end user programming it's gonna be because we start having people building applications that enable it and people start seeing that as the norm i want to reference two things here and these are not like ah here's the solution they're just like kindred spirits one of them is uh the website sprout.place you're talking about you know the era of myspace and customizability and that sort of thing sprout dot place is ostensibly it's like what you'd use to do video calls but it's also a little sandbox drawing canvas kind of like tl draw but focused on a different purpose where your video camera is attached to your mouse cursor and it follows you around and so all the people who are in the same sprout place are all like little floating heads going around and you can build a
Starting point is 02:24:32 little space together and it's meant to be like hey if we're going to be you know coming together to hang out or coming together to work on something let's have a like a shared virtual carpet spread out on the floor with a bunch of art supplies and let's hang out and doodle together and if we need to write some notes or if we need to you know share some feelings or something like that uh it's a good place to do it and one of the things you can do is pull up css and start customizing the page and i don't think they've like they they have that like hey you can customize it with CSS, which is what my space had, which is why I was reminded of it.
Starting point is 02:25:08 I don't think that's, you know, these 20 years later, it would be nice if it was more than just here's a text box where you can put some CSS in, but I appreciate even that. And so just wanted to, if you've never heard of sprout place, go use it for your next team meeting instead of zoom or Teams or whatever. Yeah, it's just a nice thing that exists in the world, and I love it. Yeah, agreed. think what jeffrey lit is most focused on is this this question of what do we do with the data that sits behind our apps so that it's not disappearing down a well where nobody can get at it like it's not you know locked up in a vault somewhere like what can you do if the data that's behind your app
Starting point is 02:26:01 is like really out in the open and really available for anybody who might want it to go and riff on it and so he's built a bunch of things to be like what if the data behind itunes was exposed as a sqlite database and i could script against that sqlite database and if i made changes to that database like the u UI of iTunes with live update. This is one of those things where I think it's going to take all different kinds of people with all different areas and interests exploring the space to really come up with a coherent or even incoherent vision of what we could do. And I'm over here in the land of like i want participatory execution i want visual programming i want it to be animated i want it like there to be a spatial temporal character to the programming interface that's what's important to me and i want there to be open data behind the thing that i build and i want to be tapping into open data behind the thing that I build. And I want to be tapping into open data behind the other things.
Starting point is 02:27:07 Yeah, I agree that I think we really have to go down this path. And I do think what we'll need before we get there is for people who already have the requisite skills to be able to modify their apps. So let programmers be able to do these modifications. And we're not even there yet. You know, if you look at like even our text editors, we might install in extensions,
Starting point is 02:27:32 but there's like this class of people who build the extensions and we almost never program an extension ourselves, right? And that's one of the things, even like I know Emacs users maybe do it a little bit more and like vim script is kind of a thing but like they're so minor customizations right that people build themselves and you almost always just rely on packages which like is good it is user extensible software i just don't see it as in user programming because I feel like in that case, it's got to be kind of situated in the task that you're doing. And like you're making these
Starting point is 02:28:11 modifications on the fly, right? And this is one of the things I want to explore in my editor, because I feel myself wanting that all the time. And I want to know what would it take for me to be able to do that? And then I can start generalizing to, could other people do that? Would other people do that? Would they find that beneficial? And so I think if we're going to get there, if we're going to get to end-user programming, we got to have what I think Jonathan Edwards called end-programmer programming. I think that's a step along that path.
Starting point is 02:28:47 I'm in complete agreement. And I, I'm not going to do the thing where I say, here are all the steps to the destination, but like, the next step that I'm interested in taking in my own work, and that I'm interested in looking for other people taking that step is definitely the one of, like, let's bridge the gap to end users starting by making programming for actual computer obsessed programmers better and i think that it's sort of like you know what are we going to do first throw grandpa out of the airplane or build the parachute and build the landing pad and there's some people out there who are like, everybody should learn to code who are throwing, well, not grandpa in this case necessarily,
Starting point is 02:29:30 but I'm sure they'd want grandparents to also learn to code. But they're also throwing school children out of airplanes. And I'm over here saying, we should actually invent parachutes and invent landing pads before we start throwing people out of airplanes. I want to say there are people making languages designed for children so that they have nice on-ramps to learning more. In the racket world, there's a whole package that grows up with you.
Starting point is 02:30:03 There are people who are very concerned about that who also want this like computer literacy in the education system right i just want to not say that they're trying to throw children out of planes they there's a lot of very concerted efforts to try to make these sorts of things accessible but what they're doing is focusing on education and trying to tackle that rather than the world right and changing the situation of the world and i mean that makes sense like that's way more practical but if there's anything this podcast is it's not practical oh i thought you were gonna say if there's anything this podcast is it's a big tent and we can be open to all approaches but since you didn't say that i'm gonna say no if you start with the educational objective you're not i'm not even gonna joke i agree with you on that yes
Starting point is 02:30:55 that's valuable work it's just not to me it's not the it's like being the this is fine dog and saying um hey there's a lot of fire i'm gonna refill my coffee yeah yeah did we get literacy by you know you could say the printing press is what created literacy because it made the availability of texts or something like that but i what you i don't think anyone says is the way we got literacy is we figured out the right pedagogical method for teaching people how to read. Not saying we haven't made improvements, not saying we haven't done any of that, around the expectations people had, around the Western Christian world, around being okay with people having these texts, right? Like it not being something locked up for the clergy, et cetera, right? There's a bunch of – it's really complicated factors, but I don't think what we'd ever do is say, well, we made a sub-language that was easier for people to understand, and then we created this
Starting point is 02:32:11 thing, and it lets them graduate to more complicated things, etc. While I think those efforts are important, I don't think that's what's going to get us this end user programming at the grand scale uh listener if you uh have already hit send tweet then i guess there's no hope for you you should go delete it for anybody who's hovering over the send tweet button uh please make sure you at jimmy h miller and not uh at spiral ganglion when you send your well actually about uh the way that language broke through into the mainstream it was just an illustrative example the fact that jimmy uh admitted that you know there's a lot of factors but he focused on a couple in particular does not mean that that was an absolute claim about the way that language was disseminated
Starting point is 02:33:01 into the world oh and well i said, I said literacy, not language. Yeah, yeah, yeah. Just to make sure. Mass literacy, right? Because language is very different. But... Yes, you know what I meant. Yeah, and I was focusing on a certain context, blah, blah, blah. But you can always at me and disagree with me on Twitter
Starting point is 02:33:18 or any social media platform. That is the most... Like, I was that teenager who got to argue with people on the internet, and sometimes I miss it. So feel free to tell me I'm wrong or whatever. But yeah, I wasn't trying to pretend there was, you know, I was giving the actual formula for how mass literacy came to be. I'm sure there's great books on that that would be worth reading. But I will bet money it wasn't because we figured out a great pedagogical technique now we might have said because we required mass school and that's what you had to learn and blah
Starting point is 02:33:52 blah blah but maybe you know that's part of it it's just not the technique that i was pointing to or define mass literacy right this is yeah or like why did why did everyone get to learn how to do multiplication well part of that was a notation right arabic uh indo-arabic numerals right like that's a big thing anyways i just think all of these things like if we're gonna actually try to accomplish these goals, we've got to aim bigger. We've got to experiment more. We've got to show people what's possible because I think a lot of people just don't even see this, not only as they don't see it as possible and they don't see it as desirable. And we've got to make those applications and let them see why they would want this kind of thing.

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