Hosted by Ryan Peterman
Written by a model from the transcript; not yet reviewed.
This episode explores the history of computer science, the origins of famous programming phrases like Donald Knuth's premature optimization rule, and the architectural pitfalls of modern software development. The guest explains how dumpster diving through historical academic papers reveals fascinating personal stories, such as Edsger Dijkstra's struggles with depression and Tony Hoare's early notes on compiler techniques. They discuss the 35-year architectural mistake originating from Ivan Sutherland's Sketchpad, the consequences of Conway's law, and the dangers of ignoring performance trade-offs in clean code and AI-driven development.
The hosts set the stage, noting the prevalence of AI doom content and promising a focus on software engineering history.
Discussion of Donald Knuth’s famous phrase, its meaning, and why it has endured in software culture.
Exploration of the late 1960s–early 1970s software crisis, its causes, and the shift toward higher-level abstractions.
Final thoughts on the value of historical research for modern software engineering and a call to appreciate the human stories behind technical advances.
Overview of Knuth’s 1974 ACM paper, his use of execution profiling, and the emergence of structured programming as a response to the crisis.
Detailed critique of class hierarchies for cross‑cutting concerns and advocacy for component‑based approaches.
Revealing personal anecdotes and correspondence among Dijkstra, Harel, and others, highlighting the human side of early computing.
Casey explains how early OOP teachings missed the architectural insights from Sketchpad, leading to a widespread design flaw.
Analysis of Ivan Sutherland’s Sketchpad, its entity-component style, and its influence on later object‑oriented design.
Explains how decoupling physics data from derived classes improves modularity and composability.
Describes WorkOS as a lightweight API layer that handles common SaaS requirements like SSO and RBAC.
Introduces the tension between clean code principles and the impact on runtime performance.
Highlights the importance of understanding hardware and network characteristics to avoid bottlenecks.
Explains that poor code often arises from attempting to design without engaging with the real problem.
History of Premature Optimizationinsight
The guest explains that Donald Knuth's famous rule about premature optimization originated in 1974 during a period when programmers spent excessive time hand-optimizing assembly code instead of tackling the broader software crisis.
Dijkstra's Personal Strugglesstory
Historical research into early computer science pioneers uncovers personal struggles, such as Dijkstra battling depression after his pioneering distributed computing team was disbanded by a mathematics department.
Missed Compiling Breakthroughstory
Notes from Tony Hoare in the 1960s show an early description of static single assignment form, which was dismissed at the time after another pioneer claimed multi-pass compilers were already easy to write.
The 35-Year Architectural Mistakeinsight
The guest argues that object-oriented programming took the wrong architectural lesson from Ivan Sutherland's 1963 Sketchpad, leading to rigid domain model hierarchies instead of flexible entity-component systems.
Clean Code Performance Costinsight
Following strict clean code guidelines that mandate tiny functions and dynamic dispatch creates a toxic combination for compilers, preventing inlining, loop unrolling, and SIMD vectorization.
Conway's Unbreakable Lawinsight
Conway's law is framed as one of the few true laws in software engineering, stating that communication bandwidth restrictions between workers inevitably dictate the modular structure of the final product.
NASA's Recursion Banstrategy
NASA bans recursion in their flight code to avoid unpredictable stack overflows, relying instead on explicit loops and state machines to ensure absolute safety and precise resource bounds.
“The big part of it is premature optimization is the root of all evil.”
“The effects of that phrase, far beyond what anyone may have done with it in context at the time, or what they meant, or any of those things, or the history.”
“The software crisis was kind of this period where people were starting to say, the methods that we're using for programming will not scale to these larger problems that we want to do.”
“The idea that there were going to be these, um, abstractions and these ways of, of sort of breaking down a much more complex system into parts that we could manage, that actually was a transition that had to happen.”
“The fact that, I, very unfortunately, in my opinion, Sketchpad sort of showed in its architecture how you could solve this problem and how you could solve it in arguably an object-oriented way.”
“It's just, it's a lot better than domain model hierarchies, that I will say, right?”
“Normally, you can have, I mean, you can have small functions, if you want them only four lines long, if the compiler can know that it can just inline that, right?”
“There is always a trade‑off that you're making, and sometimes, if you understand the trade‑off, you will make it.”
“The reason I put that in quotes is I was talking about a very specific thing, which is like the book Clean Code, like the thing where there's, here are the things that we would recommend that you do, right?”
“Like, maybe when you're starting out, like, I mean, I'll just give some examples.”
Casey Muratori is a video game developer and programming creator also known for his talks about the history of software and computing. We talked about surprising parts he found while digging through computer history, where bad code comes from, and his career story. • My ergonomic keyboard project I mentioned, you can follow along here: https://read.compose.llc/ • The Kickstarter page for it: https://www.kickstarter.com/projects/ryanlpeterman/compose-simple-ergonomics-beautifully-done Podcast links: • YouTube: https://youtu.be/jHLbL1Eg4gM • Apple: https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835 • Transcript: https://www.developing.dev/p/casey-muratori-surprises-in-computer Thank you to this episode's sponsors for supporting my work: • Jira by Atlassian: Get more work done with your favorite agents and models all in one place, check them out at https://jira.dev/ • WorkOS: makes your app Enterprise Ready with easy to use APIs to add SSO, SCIM, RBAC, and more in just a few lines of code, check them out at https://workos.com/ Timestamps: (00:00) Intro (01:08) Digging into computer science history (04:08) What shocked him (16:23) Dijkstra was depressed (26:17) The personal side of goto considered harmful (35:09) The anatomy of a 35 year mistake (50:12) Clean code horrible performance (58:33) How to write high performance code (01:01:18) Where bad code comes from (01:06:37) Why design docs before code is a bad idea (01:09:20) The only unbreakable law in software engineering (01:15:57) How he got into programming (01:21:16) Why he didnt work in big tech (01:30:44) Should you work at a startup early on (01:34:52) What video game engineering is like (01:39:57) Why preventing recursion is reasonable (01:43:24) Is vibe coding bad for the industry (01:50:17) Technical reading recommendation (01:54:27) Advice for his younger self (01:56:54) Outro Where to find Casey: • Website: https://caseymuratori.com/ • Newsletter: https://www.computerenhance.com/ • X/Twitter: https://x.com/cmuratori • GitHub: https://github.com/cmuratori • YouTube: https://www.youtube.com/@MollyRocket • Bluesky: https://bsky.app/profile/cmuratori.bsky.social • Twitch: https://www.twitch.tv/molly_rocket • Handmade Network: https://handmade.network/m/cmuratori • Wikipedia: https://en.wikipedia.org/wiki/Casey_Muratori Where to find Ryan: • Newsletter: https://www.developing.dev/ • X/Twitter: https://x.com/ryanlpeterman • LinkedIn: https://www.linkedin.com/in/ryanlpeterman/ • Threads: https://www.threads.com/@ryanlpeterman • Instagram: https://www.instagram.com/ryanlpeterman • TikTok: https://www.tiktok.com/@ryanlpeterman Referenced in this episode: • The Root of the Root of All Evil: https://computerenhance.com/theroot • The Big OOPS: Anatomy of a 35-Year Mistake: https://www.youtube.com/watch?v=wo84LFzx5nI • Edsger Dijkstra's "Notes on Structured Programming": https://www.cs.utexas.edu/~EWD/transcriptions/EWD02xx/EWD249/EWD249.html • Donald Knuth's "Structured Programming with go to Statements": https://doi.org/10.1145/356635.356640 • Edsger Dijkstra's "Go To Statement Considered Harmful": https://www.cs.utexas.edu/~EWD/transcriptions/EWD02xx/EWD215.html • Ivan Sutherland's Sketchpad thesis: https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-574.html • Clean Code, Horrible Performance: https://www.computerenhance.com/p/clean-code-horrible-performance • Where Does Bad Code Come From?: https://www.youtube.com/watch?v=7YpFGkG-u1w • The Only Unbreakable Law: https://www.youtube.com/watch?v=5IUj1EZwpJY • Dijkstra letter's reference: https://medium.com/@acidflask/this-guys-arrogance-takes-your-breath-away-5b903624ca5f#.1rdj838x6
22,528 words · 2 speakers
Speaker names marked are inferred from speaking time and the show’s known hosts — they are not voice-verified.
Page updated · transcript and summary are machine-generated