Future of Coding ā€¢ Episode 63 Ben Moseley & Pe...
# share-your-work
i
Future of Coding ā€¢ Episode 63 Ben Moseley & Peter Marks ā€¢ Out of the Tar Pit š’‚¶ https://futureofcoding.org/episodes/063 Out of the Tar Pit is in the grand pantheon of great papers, beloved the world over, with just so much influence. The resurgence of Functional Programming over the past decade owes its very existence to the Tar Pitā€™s snarling takedown of mutable state, championed by Hickey & The Cloj-Co. Many a budding computational philosophizer ā€” both of yours truly counted among them ā€” have been led onward to the late great Bro86 by this paperā€™s borrow of his essence and accident. But is the paper actually good? Like, really ā€” is it that good? Does it hold up to the blinding light of hindsight that 2023 offers? Is this episode actually an April Fools joke, or is it a serious episode that Ivan just delayed by a few weeks because of life circumstances and his own incoherent sense of humour? I canā€™t tell. Apologies in advance. Next time, weā€™re going back to our usual format to discuss Intercal.
j
If you do programming by generating a LLM to do a task, you cannot use informal reasoning to understand the behaviour of your system. You can't even use formal reasoning. The run-state of the code is so far removed from what you wrote, you can't look at the source code and say "oh, here's where I made it racist.". That is a programming that informal reasoning doesn't work for. It requires that you are building systems that build systems, of course, and that it is the system two turtles down you are concerned with understanding. But still, I think it fits?
ā˜šŸ»That is my answer the challenge #1. Now challenge #2. In Blawx, it would be trivial to take a test, and generalize the inputs of that test by making them abducible, and run the query again. The answer to that second query would be a set of models, with constraints on unground variables, in which the query holds. Essentially, a description of all inputs that would have made your test pass. But of course, there is no reason to have the extra step of starting with a grounded test. You can go straight to the most general query, and say "give me all the inputs for which the following assertion holds." But technically, I think that's an example of #2. The system could answer "that test passes, because it is an example of this model, anything in that model would work. Also, here are all the other models that work." It's also the reason I'm really excited about its potential as a tool for generating tests that can be used to validate the legal reasoning of other systems.
i
Great answers!
j
Great episode! I wonder if being bad at reasoning over specific examples drives one toward philosophy, which attempts to find broader truths. A weakness that creates a corresponding superpower?
l
It's simple - Just make it simple! But it's not so simple... because simplicity is hard. Perhaps it's a careful balancing act!
j
"as simple as possible and no simpler"?
l
and great episode! Really looking forward to the next episode about Intercal! I have no idea how you're gonna do that one
i
We recorded it already! It's a fun discussion, mostly about the historical context, since I'm not sure how else we could have tackled it. I think you'll like it.
l
Oh wow already recorded!? You're quick! Looking forward to it :)
i
What even is āœØ simplicity āœØ? My (very incomplete) board of various definitions: https://www.are.na/same-old-lab/simplicity-semantics.
w
The episode has a certain level of polish, rapport, and rhythm that feels really good.
p
Thank you for responding to my feedback last episode. I was a little worried that my response was so long nobody would read it. I'm not sure how to respond when you ask me to give you the same kind of respect that I extend, and encourage others to extend, to people like Licklider, Engelbart, Naur, or Brooks, especially when you are asking me to respect your decision to disrespect them. It is possible that I am mistaken or ignorant here, but I am unaware of any reason to believe that either of you have had a hand in crafting the fundamental nature of modern computing or the way that our entire industry views it. I do not mean this as an insult, since it also applies to almost every other person who has ever lived as well. I do think it's important to remember, and be sensitive to, the level of genius one is reading when deciding whether and how to criticize. I have no idea how popular your podcast is. I'm thrilled that you are bringing additional attention to these papers, no matter the size of your audience, but I worry that your casual disrespect during prior episodes could cause your listeners to discount the importance of the papers or their authors. That said, I have no reason to believe that the authors of Out of the Tar Pit deserve any special consideration, so I don't particularly care about how you treated this one. I think you are joking about making an episode about Intercal, but now that I heard you say it I have a strange desire to listen to it. Although the structured programming movement ultimately degenerated into "don't use goto," for what it's worth, papers by Peter Naur (Proof of Algorithms by General Snapshots, Programming by Action Clusters), Tony Hoare (An Axiomatic Basis for Computer Programming), and Edsger Dijkstra (Notes on Structured Programming) were pushing the idea of making programs easier to reason about a long time ago. A big downside of purely functional programming is that it can interfere with modularity. See The Art of the Interpreter or, The Modularity Complex by Guy Steele and Gerald Sussman. With respect to trying to reduce complexity, but only measuring some of the dimensions, while I intensely dislike C++, I have a great deal of respect for Bjarne Stroustrup. He has done an amazing job of achieving his design goals, and I really appreciate his observation that "complexity has to go somewhere." I believe he is implicitly referring to essential complexity here. https://m.slashdot.org/story/10028 With respect to the challenge of creating a type of programming that informal reasoning cannot help with, Peter Naur pointed out in Formalization in Program Development that all formal reasoning is ultimately defined in terms of informal reasoning, so while I cannot prove it formally, I don't think it's possible to create a system that is not dependent on any informal reasoning. Hiding state is the basis of encapsulation in the Parnas sense (On the Criteria To Be Used in Decomposing Systems into Modules) and modularity in the Sussman/Steele sense above. Trying to make all state visible might make it easier to design and play with small systems, but I'm not sure how it can coexist with encapsulation and modularity. For a differing view on the "power corrupts" thesis, in Why Software Jewels are Rare, Parnas notes "Moreover, languages that prevent programming errors, a goal advanced by some inveterate language designers, are as feasible as knives that can cut meat but not hands. We need sharp tools to do good work." https://www.researchgate.net/publication/2954521_Why_software_jewels_are_rare Also, "Unix was not designed to stop you from doing stupid things, because that would also stop you from doing clever things." -- Doug Gwyn With respect to creating programs that retain their conceptual integrity when the problem they are solving changes, I am fond of both Dijkstra's string of beads / hierarchy of virtual machines (Notes on Structured Programming) and the Structure and Interpretation of Computer Programs (SICP) model of bottom up design, where you essentially design a language for solving the kind of problem you are facing, and then solve your particular problem in that language. Of course, there's always the possibility that your problem changes in the future to be of a sufficiently different kind that you end up needing to adjust more than just the top layer. Overall, although I haven't read this paper and am going purely by what you said in the podcast, my sense is that the authors didn't have much new to say. I'm not clear on how this became such a popular paper in recent times.
i
That was a genuine and helpful comment, loaded with so many references I donā€™t know where to begin. Thereā€™s a lot about respect now swirling around in this soup, so I want to start by saying I deeply respect the effort and care you put into writing these replies, and I hope that you find the below helpful, at least to bring a modicum of direct clarity that my last (audio) reply to you lacked. I hold a spider web of beliefs, feelings, and perspectives on what makes for a compelling podcast. For instance, the medium is particularly well suited to playing with immediacy and distance. Iā€™ve listened to some podcasters hours each week for well over a decade now. After listening to someone so much for so long, you begin to feel a kinship with them. You may hear their voice, thoughts, and opinions more than those of your friends and even some of your family. Most people listen with headphones, often while driving or running or doing chores or laying in bed ā€” spaces of domestic intimacy. These people ā€” these podcasters ā€” are invited into your home and your life in a way thatā€™s arguably more personal than the painting that hangs on your wall, the movie or game that plays on your TV, the book that sits on your bookshelf. When John Siracusa dies, Iā€™ll mourn him the way Iā€™ve mourned my friends who have passed. Iā€™ll feel an emptiness in my daily life, at least for a while. To me, thatā€™s profound. I say all this to establish that immediacy is an effectful trait of the medium. Itā€™s worth similarly exploring how podcasts push at the other extreme, being strangely distant and impersonal (for instance, considering what John Siracusa feels about me ā€” unknowing nothingness, or vague appreciation as one appreciates a drop in an ocean). Itā€™s worth exploring so many other dimensions and aspects. But for now I just want to make a point about my relationship to immediacy as a person who operates in this medium: on principle, I try very, very hard not to directly explain how or why I make certain creative decisions, unless doing so furthers my artistic goals. I donā€™t intend to be obscure about everything, but when it comes to particular things ā€” like what my creative intentions are ā€” I prefer to keep them behind the curtain. Now, youā€™ve written a few beautiful comments that have meant a lot to me. You are bothered by this matter of disrespecting the greats of our field, and youā€™ve articulated this bother quite compellingly: ā€œcould cause your listeners to discount the importance of the papers or their authorsā€. This speaks to me. So Iā€™m going to justify as best I can, with no playful ruse or manipulation of distance or surrealist feint, why I think that itā€™s a fine thing that I, ahem, talk shit about the great masters. To start, know that Iā€™m always just trying to make the sort of podcast Iā€™d want to listen to, and that I'm just beginning to learn what is even possible within the medium, and that I'm failing as much as I succeed. Iā€™m borrowing from all my influences, and mixing in ideas from other media, and trying to shape the result into something that reflects my tastes and embodies the ideas I want to express to the world. I love how Radiolab fuses sound design, music, and conversation into a sort of audio theatre. I love how Merlin Mann, across his thousand shows, creates this swirling mass of in-jokes and references and allusions and hallucinations that point back to his earlier in-jokes and references and allusions and hallucinations, a chaotic ā€œI canā€™t explain why this is making me laugh and weep because it came from 15 years of living with this wacky character, but Iā€™m overpowered and it feels transcendentalā€. I love how scores, arguably starting with Ligeti and all but inescapably today, are distilled noise music for the masses. I feel an almost parental love when I see someone struggling to do something, and they arenā€™t quite succeeding, and the thing theyā€™re making is frankly bad, but you can tell what theyā€™re going for and, with the benefit of the doubt, you can appreciate it just as much as if they had pulled it off. I love listening to friends debate, where the arguments swing between the matter at hand and personal jabs, taken with a smile and returned in kind because these are people who love and trust each other so deeply that they know how to tickle with their words. I love how the hosts of Connected create a segment, and then someone messes up and perverts the segment, and before long you have people lying down to read the rules of the inner game show within the segment where you stand up to read the rules of the outer game show, itā€™s convoluted meta-text all the way down, but somebody MUST be the loser, and they go last. Iā€™m trying to bring a little bit of all of this, and put it into a podcast where we talk about computers. Iā€™m not going to be content to merely have a podcast where we talk about computers. The subject is computers, but the form needs to be something very purposefully more than just ā€œwe talk about computersā€. There are so, so many podcasts about computers. On those podcasts, you can hear breathless hyperbole about the latest startup or framework. You can hear interview after interview following an identical formula ā€” leading 15 second excerpt, electronic theme song with canned intro, quick banter between hosts, introduction of guest, guestā€™s background, warmup questions, questions about main topic, zoom-out question thatā€™s usually the highlight of the show, hosts talking about things they like, pleading for Patreons, sign-off with social handles. You can hear someone reading a script they wrote after wiki-diving on some comp-sci esoterica. You can hear (usually) three (usually) white (usually) men talk about the latest Apple rumours. You get the picture. In each of these, people are speaking sincerely and directly. They're being their authentic selves. There's no line drawn between who they are on the show, and who they are in real life. Theyā€™re making audio diaries, or patterning themselves after journalists, presenting subject matter with little regard to the artistic form and medium that theyā€™re operating within. Theyā€™re careful to be respectful of the material, because they're real people who are just as kind and enthusiastic in real life as they are on their show. Iā€™m trying to make a show where the format is that there is no format (credit where due: this is a Merlin Mann-ism); where thereā€™s a fruit salad of heated debate between people who arenā€™t even sure theyā€™re debating the same thing, emphatic teary-eyed gushing of joy at the profundity of some shared revelation, and among many other similar things, merciless cheap-shot dunking on, yes, the revered grand pantheon works of great masters, because all of these things are a kind of iterated character development that you donā€™t see in any of the shows described by the previous paragraph; meta-commentary and audio theatre and honest-to-goodness songs and stingers and sonic bits that give each and every episode a distinct flavour; where you canā€™t tell if weā€™re being real or fake, awake or dreaming, scripted or improvising or being our authentic selves, smart or inane, funny or fearsome. I don't want the show to be a straightforward discussion, nor do I want it to be a scripted narrative. I want it to be a space where interesting ideas are shared in interesting ways. [Note to returning readers: the following paragraph was rewritten to better support the point I'm driving at.] So to look back at your initial message:
In general, it is more helpful to ask "what was it about this person's experience and environment that led them to view things this way? Are those things relevant to me and to now? If so, how? If not, what is different?" than to say "F--- this paragraph" or "He's wrong here."
If my intention for the show was to be my pure authentic self, sharing my immediate perspectives on programming papers, your feedback here would be spot on, and I'd have no hesitation to agree. But my reply ā€” inviting you to ask a similar sort of "Why are they doing what they're doing?" ā€” was meant to suggest that I have other intentions for the show that sit at odds with your ask. One of which is that the Ivan who appears on the podcast is a

characterā–¾

. This character is played up for effect, because, again, that's the sort of podcast I like to listen to. Yes, I like listening to shows where people are occasionally crass and disrespectful ā€” especially when theyā€™re doing it in honor or service of something higher than themselves, or winkingly, or as an interplay between high-brow and low-brow, or in an ā€œafflict the comfortable / comfort the afflictedā€ punching-up sort of way, or simply because it creates more hilarity and drama. For this show, I want my character to wander around the entire space of positive and negative feelings engendered by every subject we touch upon. To me, thatā€™s the most interesting and rewarding show I can create. It's what pushes the show away from being mere pabulum, and entices people to engage with the subject matter because they're bewitched and enthralled by how we present it. So to conclude, Iā€™ll just borrow a tired but true adage when frustrated with art. Iā€™m making this podcast, and while I value the audience we have (so, so much ā€” but thatā€™s a tangent), Iā€™m always going to make the sort of show that I want to listen to, and I donā€™t for a single moment expect that anyone else will enjoy it, nor do I aim to make it to please them. Iā€™m quite confident that, for instance, Steve Krouse doesnā€™t enjoy the show much at all any more ā€” and Iā€™m perfectly happy with that. Steveā€™s a great guy, but he's satisfied by a straightforward "let's talk about computers" show in a way that I'm not. Similarly, I am glad that youā€™ve listened as much as you have, and especially that youā€™ve taken so much time to craft these comments filled to the brim with references and wisdom. You have a wealth of knowledge about the history of our field that I doubt I have any hope of matching. If the irreverence of our discussions makes you uncomfortable, all I can say is that Iā€™m sorry ā€” with sympathy, not apology. The concern you raised ā€” ā€œcould cause your listeners to discount the importance of the papers or their authorsā€ ā€” I share that concern. But I feel quite differently about the mechanics of how and why Jimmy and I could bring positive attention to the history of our field. For my taste, Iā€™d like to hear someone discuss something with a passion, or playfulness, that wanders all over every spectrum, standing on an audio stage with strange lighting and costuming, where the line between authenticity and affect is crooked and blurry, and you listen just as much for the thought-provoking ideas as for the wild way they're presented. I believe thatā€™s the way to make the most engaging, inspiring reflection on the greatest works of our field.
p
@Ivan Reese Thank you so much for your thoughtful and detailed reply. It will take me several readings and much reflection to fully absorb it and I appreciate all of the effort you put into it. I have tried to offer my feedback in as constructive a manner as I can, and it is clear that you have heard me, so I will try to stop criticizing your style though I may occasionally offer some friendly disagreement. For what it's worth your show is one of very few to which I have ever given any feedback, and is the only one that I take notes on while listening. Hopefully that tells you how much I like and am engaged by the show and the topic overall. I look forward to the next episode, and if the comment about Intercal wasn't an April Fool's joke then I know I will enjoy it. Thank you for your wonderful show!
j
First let me just say, I welcome your feedback @Personal Dynamic Media. You clearly have a wealth of knowledge and experience. I am so happy you post your feedback on these episodes. I will say while your pseudonym reveals a bit about your bent and perspective, it does make me a bit sad to not know more of your background. You offer a perspective I appreciate greatly. During the recording of the epsiode, Ivan and I actually had quite a bit of a back and forth on the topic of your feedback(it didnā€™t make the cut though). My take is a bit different than Ivanā€™s (though I admit that I had to add Ivanā€™s feedback here to my ā€œto read listā€ so I give the proper care it deserves). I hope you continue to give us push back on parts of the paper you feel we dismiss too quickly. I think this is important work. But I do want to address the meta-point here about respect. I believe very strongly that the only way to respect an author who puts forward an argument is to try and disagree with it. Now maybe this is my philosophical background, or maybe it is just that my Dad told me to question everything (much to the chagrin of my 1st grade teacher). But regardless of why, this is the way I approach all the works that we discuss on the podcast. Now just as Descartes was not hoping to end up doubting everything, my goals is not to disagree with everything. It is through disagreement that I come to learn and know what these authors are teaching me. Now perhaps we donā€™t always make it around to this point in the discussion. But I think even if we donā€™t, we get to model what these kinds of discussions can look like. What I hope gets through in these discussions is that this isnā€™t the final word. That our criticisms arenā€™t absolute, but a product of us struggling through the text. Struggling to understand, to appreciate. There is one other element at play, that perhaps you might disagree with. I feel that in our (niche part of the) industry there is often unhealthy hero-worship. We often hold this great figures of our past properly in high-regard, but do so in such a way that prevents the very thing they hope to accomplish. In popular programming discourse, papers like the ones we cover are often reduced to sound bites devoid of their true context. Take for example Dijkstraā€™s notion of separation of concerns. Itā€™s use in modern development has completely unmoored it from its context. It becomes a hammer that is applied and a principle fought for, rather than a tool for understanding. I want others to read these papers not as holy texts they must accept, but as papers which they can engage with. Papers they can learn from, they can disagree with, papers that are accessible to them. Papers they should read and re-read, papers they ought to revisit in light of new information. Will we ever do these papers full justice in one podcast episode? No. But I will never discuss a paper on the podcast that I donā€™t deeply respect. I am so happy we have listeners like you listening. I always am humbled when people who clearly know more than me listen to what I have to say.
p
@Jimmy Miller What has bothered me about past episodes was not disagreement, but what I perceived as disrespect. For example, "F*ck this paragraph" felt very different to me from statements about how the author's perspective might be limited by his large scale industrial background and may need to be reevaluated before being applied to some modern contexts. After reading Ivan's post a few times, I suspect that I may have been interpreting your show as 100% newscast and missing the fact that it is 2-5% South Park. When Ivan said something to the effect of "we have reasons" I took that as "professional reasons to judge so harshly" while now I suspect it meant something more like "artistic reasons for creating a more varied listening experience." I agree that hero worship should not be blind, but when I disagree with one of the masters I will typically give more thought to why they said what they said than I might give to a random blog post with which I disagree. Dijkstra, for example, can be a condescending jerk at times, and has a tendency to speak in absolutes with which I often take exception, but I have still learned much from his writings. I may disagree with him at times, or think that something he says is now less relevant or needs to be recontextualized for modern times, but I rarely dismiss him. Thank you for all your great work and I look forward to your next episode!
i
"artistic reasons for creating a more varied listening experience" ā€” yes precisely. I'm a dolt for missing that there'd be any other way of interpreting my meaning. Apologies. 2-5% South Park ā€” yes, that's a pithy way of putting what I was trying to bloviate. Crass political satire and musical theatre, yum. For my 50% of the show, the breakdown is probably: 8% Radiolab, 5% Merlin Mann, 2% Mr. Show, šŸ–¼ļø% Visual Programming, 15% intellectual curiosity about the history of our field, 2% milk, 83% enjoying Jimmy as a human being, and 38% I'm still finding my voice in the medium.
j
Wow! How did you find this?
m
Google-fu šŸ˜Š. Interesting that he worked at NeXT.
One note: I donā€™t think ā€œargument from authorityā€ is bad when you are setting the context/background, as the authors did here with complexity, in fact isnā€™t it the accepted scientific practice? After all, we canā€™t do the Hilbert for every paper we want to write and derive/prove the entire world from scratch up to the point that we then actually want to make in the paper. Instead we lay out the context and cite authoritative sources for that context, and then we try to show what our contribution is. As far as I can tell, they see ā€œcomplexity badā€ as pretty much a given. Of course, they could have then simply not justified it at all, but it seems OK to say why they consider it a given. Anyway: lots of other interesting things to mull about. For example: the issue of visibility seems to be more about having the right things visible at the right time. (Something along the lines of ā€œif everything is visible, nothing isā€). And that would seem to map onto the concept of abstraction: if the things I care about are visible and the things I do not care about (ā€œclutterā€) are invisible, then I have the right abstraction(s). And of course having the right abstractions is also how you deal with complexity. If I have the right, non-leaky abstractions, then Iā€™ll have hidden the complexity sufficiently well that it might be considered removed.
i
Totally agree on the importance of standing on giant shoulders. After all, we arrived at Tar Pit by following the trail from the Brooks upon which it stands (or, perhaps, piggybacks). But there was something about that notable quotables section of the paper that stuck out as odd. Like, it felt a bit likeā€¦ name-dropping, or cherry-picking, or perhaps pulling things out of context so as to make them sound supportive of the Tar Pit's premise when they were, perhaps, talking about different things. I can't put my finger on it.
It felt like it was pointing to those prior works and saying, "Look, these people agree with us!" when it's entirely possible (and likely) that the quoted sources were talking about something different than what the Tar Pit paper talks about. Sure, everyone uses the word "complexity", but the Tar Pit spends a bunch of time explaining that they have a very specific interpretation of the word, a narrow meaning, whereas all the quotes sound like they're using a much broader (and perhaps colloquial) meaning.
j
I donā€™t think ā€œargument from authorityā€ is bad when you are setting the context/background, as the authors did here with complexity, in fact isnā€™t it the accepted scientific practice? After all, we canā€™t do the Hilbert for every paper we want to write and derive/prove the entire world from scratch up to the point that we then actually want to make in the paper.
I definitely agree with what Ivan said on the characterization of Tar Pit. But I also want to say that I think there is a distinction between an argument from authority and citing prior works. Almost all the papers we've read so far have relied on prior work and cited it (Engelbart apologized for not doing it because he didn't want to make people guilty by association). But I wouldn't call that practice citing authoritative sources. It is great to cite a source to give background. But that background doesn't act as an authority. It is used to situate the reader. To give them further reading or to allow them to know your general bent. That isn't what the quotes here function as. They are functioning in the paper as an argument. They are meant to be the evidence to support the claim. This claim is a bit more than just complexity = bad, its that complexity is the single most important issue. Citing all these turing award winners is being used as evidence to support that claim, which is an invalid argument.
p
I think the primary value of citing authorities when making an argument is to encourage listeners or readers to consider the argument carefully and not dismiss it. I think this goes double when citing multiple people who often disagree with each other. For example, when Dijkstra and MIT lisp people agree on something, that doesn't necessarily mean they are correct, but I take it as an indication that the idea definitely deserves serious consideration.
i
@Marcel Weiher Also just need to say: thank you for raising an excellent question!