Skip to content

Casey Muratori: Surprises In Computer History And Where Bad Code Comes From

The Peterman Pod

Hosted by Ryan Peterman

1h 57m
Transcript

Original podcast

Summary

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.

  • Understand the performance characteristics of your hardware and basic computer architecture to make informed design decisions. 58:43
  • Start software design by writing and testing actual experimental code rather than relying solely on upfront design documents. 1:04:45
  • Recognize that Conway's law means the boundaries and communication structures of your team will ultimately dictate the architecture of your product.
  • Deepen your technical knowledge by regularly reading academic research and conference papers in computer science. 1:50:23

Chapters

  1. 0:00
    Podcast Introduction and AI Context

    The hosts set the stage, noting the prevalence of AI doom content and promising a focus on software engineering history.

  2. 1:08
    Knuth’s Premature Optimization Quote

    Discussion of Donald Knuth’s famous phrase, its meaning, and why it has endured in software culture.

  3. 5:47
    History of the Software Crisis

    Exploration of the late 1960s–early 1970s software crisis, its causes, and the shift toward higher-level abstractions.

  4. 7:49
    Closing Reflections on History and Practice

    Final thoughts on the value of historical research for modern software engineering and a call to appreciate the human stories behind technical advances.

  5. 8:34
    Knuth’s 1974 Paper and Structured Programming

    Overview of Knuth’s 1974 ACM paper, his use of execution profiling, and the emergence of structured programming as a response to the crisis.

  6. 21:00
    Inheritance Hierarchies vs. Component Systems

    Detailed critique of class hierarchies for cross‑cutting concerns and advocacy for component‑based approaches.

  7. 24:42
    Personal Histories of Key Figures

    Revealing personal anecdotes and correspondence among Dijkstra, Harel, and others, highlighting the human side of early computing.

  8. 35:21
    The 35-Year Mistake in OOP

    Casey explains how early OOP teachings missed the architectural insights from Sketchpad, leading to a widespread design flaw.

  9. 36:44
    Sketchpad’s Architectural Legacy

    Analysis of Ivan Sutherland’s Sketchpad, its entity-component style, and its influence on later object‑oriented design.

  10. 47:17
    Physics System Encapsulation

    Explains how decoupling physics data from derived classes improves modularity and composability.

  11. 48:34
    SaaS API Layer WorkOS

    Describes WorkOS as a lightweight API layer that handles common SaaS requirements like SSO and RBAC.

  12. 49:47
    Clean Code vs Performance Trade‑offs

    Introduces the tension between clean code principles and the impact on runtime performance.

  13. 54:48
    Performance Awareness in Development

    Highlights the importance of understanding hardware and network characteristics to avoid bottlenecks.

  14. 1:01:06
    Origins of Bad Code

    Explains that poor code often arises from attempting to design without engaging with the real problem.

Highlights

  • 1:25

    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.

  • 17:15

    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.

  • 20:30

    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.

  • 35:18

    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.

  • 50:12

    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.

  • 1:09:20

    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.

  • 1:39:57

    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.

Quotes

  • “The big part of it is premature optimization is the root of all evil.”
    Ryan Peterman · 1:11
  • “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.”
    Unnamed speaker · 1:49
  • “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.”
    Unnamed speaker · 7:49
  • “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.”
    Unnamed speaker · 7:38
  • “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.”
    Unnamed speaker · 39:32
  • “It's just, it's a lot better than domain model hierarchies, that I will say, right?”
    Unnamed speaker · 48:29
  • “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?”
    Unnamed speaker · 52:34
  • “There is always a trade‑off that you're making, and sometimes, if you understand the trade‑off, you will make it.”
    Unnamed speaker · 57:01
  • “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?”
    Unnamed speaker · 50:44
  • “Like, maybe when you're starting out, like, I mean, I'll just give some examples.”
    Unnamed speaker · 1:34:02
  • WorkOS 48:34–49:54
  • Jira by Atlassian 49:20–49:24

About this episode

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

Transcript

0:00
1:57:50

22,528 words · 2 speakers

Speaker names marked are inferred from speaking time and the show’s known hosts — they are not voice-verified.

Topics

  • Microsoft
  • Assembly
  • Clean Code
  • virtual function
  • NASA
  • Usenix
  • SIGGRAPH
  • Refactoring
  • Paxos
  • Kickstarter

Page updated · transcript and summary are machine-generated