Dead Code

Dead Code

By Jared NormanTechnology
Download on the App Store

Dead Code episodes

  • Deferred Conflict (with Steve Klabnik)

    Jared interviews Steve Klabnik (Rust author and longtime OSS contributor) about JJ (Jujutsu), a newer version control system that can operate on Git repos via pluggable backends so you can adopt it locally without forcing teammates to switch, while getting a simpler, more flexible workflow. Steve explains JJ’s core shift: no staging/index—your working copy is effectively a mutable commit you shape as you work, making it easier to split, squash, and rewrite history without juggling Git’s extra layers and flags, and even “stash” becomes just more visible commits. He highlights JJ’s stable change IDs (so you can refer to work even as hashes change), its conflict model where rebases complete immediately and mark conflicted commits for later resolution (great for many parallel branches), and features like jj absorb (auto-placing review fixes into the right earlier commits) and jj undo (a full operation history that makes experimentation feel safe). Steve also teases work on a JJ-native collaboration/review product inspired by Gerrit-style patch workflows.


    Links:


    Jujutsu (jj) on GitHub

    Jujutsu docs

    Steve’s Jujutsu tutorial

    “I see a future in jj” (Steve Klabnik)

    East River Source Control (ERSC)

    jj CLI reference

    jj absorb

    jj undo

    Working with Gerrit (jj docs)

    Git commit “trailers” / metadata

    Git hooks

    Git LFS

    Perforce Helix Core

    Sapling SCM

    Mercurial

    GitButler

    The Rust Programming Language (“The Book”)

    Steve Klabnik’s site

    why the lucky stiff (Wikipedia)


    Dead Code Podcast Links:


    Mastodon

    X

    Jared’s Links:


    Mastodon

    X

    twitch.tv/jardonamron

    Jared’s Newsletter & Website


    Episode Transcript

    Hosted on Acast. See acast.com/privacy for more information.

    44 min
  • Poison Pills (with Joel Hawksley)

    In this episode, GitHub engineer Joel Hawksley breaks down the evolution of GitHub’s UI architecture—from Rails views to ViewComponent to React—and the tradeoffs behind each step. ViewComponent emerged as a practical, backwards-compatible way to eliminate duplicated UI logic in GitHub’s massive Rails monolith, ultimately supporting thousands of components and becoming a key driver of consistency and accessibility. Joel explains how hard UI correctness is compared to backend systems, how keyboard-only tests surfaced real accessibility regressions, and why ViewComponent v4 streamlines the project as it enters a stable, long-term support phase. He also discusses why GitHub increasingly leans on React for complex, app-like behavior: developer enthusiasm, design-system tooling, CSS encapsulation, and the need to manage frontend–backend sync at scale. The conversation closes with reflections on the realities of open-source maintenance and the importance of stability as ViewComponent’s future.


    Links:


    Joel Hawksley’s Website

    ViewComponent Website

    ViewComponent GitHub Repo

    Primer ViewComponents

    Primer ViewComponents Repo

    Phlex Website

    Phlex GitHub Repo

    Herb GitHub Repo

    ReActionView GitHub Repo

    WCAG Accessibility Standards

    Rails Strict Locals Documentation


    Dead Code Podcast Links:


    Mastodon

    X


    Jared’s Links:


    Mastodon

    X

    twitch.tv/jardonamron

    Jared’s Newsletter & Website


    Episode Transcript


    Hosted on Acast. See acast.com/privacy for more information.

    54 min
  • Ground Zero-Cost Bindings (with Josh Vlk)

    In this Dead Code episode, Jared and ReScript contributor Josh Vlk explain why ReScript is a strongly typed, sound language for web development that compiles to JavaScript, offers first-class React support, and favors a “one right way” approach (built-in formatter, no linters) over TypeScript’s configurable sprawl. They trace its evolution from Reason/BuckleScript to today’s standalone ReScript, with v12 shedding legacy OCaml baggage, adding a rewritten Rust compiler for major speed, native monorepo support, zero-cost JS bindings, and automated upgrade fixes. The pair highlight how variant types and exhaustive pattern matching naturally model complex business logic and make refactors safe and fast, often resulting in less code and fewer bugs. Adoption can be incremental—drop a rescript.json, compile alongside TS/JS, and start with a small component or state reducer. Jared closes by urging developers to try it, noting ReScript’s consistency may also make it especially friendly for AI-assisted coding.


    Links:


    ReScript

    TypeScript

    ReasonML

    BuckleScript

    OCaml

    Rust

    “ReScript Has Come a Long Way — Maybe It’s Time to Switch from TypeScript” by Josh Vlk

    “Domain Driven Design Made Functional” by Scott Wlaschin (F# / functional programming concepts)

    ReScript Forums

    ReScript Docs

    ReScript Packages on npm – Community bindings and libraries

    Josh Vlk on Bluesky

    Josh’s website


    Dead Code Podcast Links:


    Mastodon

    X

    Jared’s Links:


    Mastodon

    X

    twitch.tv/jardonamron

    Jared’s Newsletter & Website


    Episode Transcript

    Hosted on Acast. See acast.com/privacy for more information.

    1 hr 11 min
  • Brut-al Death (with David Bryant Copeland)

    In this episode, Dave Copeland discusses Brut, his Ruby web framework built atop Sinatra that prioritizes “simple over easy” design principles. Brut replaces traditional MVC with pages, forms, and handlers, uses Flex for HTML generation, Sequel for database access, and lightweight tools like BrutCSS and BrutJS for styling and interactivity, emphasizing direct alignment with web standards. It eliminates free-form parameter hashes by injecting structured objects, mirrors HTML for form validations, and defaults to a strict, Postgres-only setup with non-nullable fields, required foreign keys, and built-in observability through OpenTelemetry and a strict Content Security Policy. Dave and Jared also discuss modern browser-based CSRF protections, the philosophy behind Brut’s defaults, and how Dave aims to refine it toward a 1.0 release with real-world apps and clear migration paths for Rails developers, positioning Brut as a lightweight, standards-aligned alternative within the Ruby ecosystem.


    Links:


    Brut

    Sinatra

    Hanami

    Sequel

    Tachyons

    Tailwind CSS

    OpenTelemetry

    PostgreSQL

    MDN Web Docs

    Elektron Digitakt

    Ableton Live

    ActiveRecord

    CoffeeScript

    Content Security Policy (CSP)

    Rich Hickey – “Simple Made Easy” talk

    Burg.rb


    Dead Code Podcast Links:


    Mastodon

    X


    Jared’s Links:


    Mastodon

    X

    twitch.tv/jardonamron

    Jared’s Newsletter & Website


    Episode Transcript

    Hosted on Acast. See acast.com/privacy for more information.

    50 min
  • God Class Funeral (with Adam Tornhill)

    Jared talks with Adam Tornhill, founder of CodeScene, about the psychology of programming and how understanding human cognitive limits leads to better software. Adam explains that since working memory can only juggle a few items at once, developers must rely on chunking and good abstractions to manage complexity. His Code Health metric, based on detecting “ugliness” like long functions and low cohesion, shows that healthy code enables teams to deliver features up to ten times faster with far fewer defects. They discuss how God classes become coordination bottlenecks, how behavioral code analysis reveals hotspots where improvement matters most, and why learning different programming paradigms sharpens thinking. Adam emphasizes that writing readable, well-named, modular code benefits both humans and AI tools—because clarity, consistency, and thoughtful naming make code easier to understand, maintain, and extend.


    Links:


    CodeScene

    Your Code as a Crime Scene

    Working Memory

    God Class / God Object

    Domain-Specific Languages (DSLs)


    Dead Code Podcast Links:


    Mastodon

    X


    Jared’s Links:


    Mastodon

    X

    twitch.tv/jardonamron

    Jared’s Newsletter & Website


    Episode Transcript

    Hosted on Acast. See acast.com/privacy for more information.

    36 min
  • Deserial Killer (with Matt Schwager)

    Jared sits down with Trail of Bits security engineer Matt Schwager to discuss the persistent security risks of Ruby’s Marshal library. Matt explains that while Marshal (and Python’s Pickle) makes serialization simple and fast for tasks like caching, its “serialize anything” design has led to over a decade of recurring vulnerabilities. Despite repeated patches, new bugs and exploitation gadgets keep surfacing, often hidden in defaults or legacy code, as seen in Rails caching and RubyGems.org. Matt argues that this reflects a fundamental trade-off between ergonomics and security, suggesting alternatives like JSON are safer, though less convenient. He highlights mitigation strategies such as documentation, static analysis, and fuzzing with his tool Ruzzy, while also pointing to broader Ruby risks like eval misuse, SSRF, and supply chain issues. Jared reflects on the cultural tension in Ruby between ease of use and security, wondering if safer defaults could help developers avoid these common pitfalls.


    Links:


    Trail of Bits Blog

    Ruby Marshal documentation

    Python Pickle documentation

    JSON

    YAML

    TOML

    MessagePack

    Rails Caching Guide

    RubyGems.org

    RubyGems source on GitHub

    Ruzzy on GitHub

    AFL on GitHub

    Semgrep Registry

    Black Hat USA 2017 Talk


    Dead Code Podcast Links:


    Mastodon

    X

    Jared’s Links:


    Mastodon

    X

    twitch.tv/jardonamron

    Jared’s Newsletter & Website


    Episode Transcript


    Hosted on Acast. See acast.com/privacy for more information.

    32 min
  • Crushing Riffs (with Kasper Timm Hansen)

    In this Dead Code episode, Jared talks with longtime Rubyist and former Rails Core member Kasper Timm Hansen about “riffing,” a sketch-first approach to software design. Instead of jumping straight into migrations and production code, Kasper opens a scratch Ruby file—mixing real and pseudo-code with short prompts—to explore names, relationships, and system flow without worrying about correctness. The practice surfaces unknowns early, conserves mental stamina, and produces lightweight artifacts that can guide teams or even become executable prototypes. Kasper shares stories from client work, a RailsConf demo, and workshops showing how riffing helps uncover design flaws, generate stronger options, and make domain modeling more collaborative. He encourages developers to treat code like sketches, be less precious about early ideas, and embrace riffing as a fun, low-cost way to boost creativity and resilience in software design.


    Links:


    Spinel Coop

    RailsConf 2024 Talk (YouTube)

    RailsConf 2024 Slides (Speaker Deck)

    Kasper’s website

    Kasper’s GitHub


    Dead Code Podcast Links:


    Mastodon

    X

    Jared’s Links:


    Mastodon

    X

    twitch.tv/jardonamron

    Jared’s Newsletter & Website


    Episode Transcript

    Hosted on Acast. See acast.com/privacy for more information.

    42 min
  • Fear-Driven Everything (with Justin Searls)

    On this episode of Dead Code, Jared talks with Justin Searls, co-founder of Test Double, about programming workflows, decision-making, and the evolving role of developers. They explore how the order and tempo of thought matter more than static code, why tackling the riskiest problems first can shape better outcomes, and how Justin’s idea of the “full-breadth developer” expands a programmer’s role to include product vision and context. The conversation touches on Agile and XP roots, consulting realities, and how AI coding agents can both accelerate and complicate work. The episode wraps with Justin encouraging blogging and direct connection, while Jared reflects on building a “grand unified theory” of how programmers decide their next step.


    Links:


    Sign up at jardo.dev/anarchyagile to enter the 50th episode giveaway!

    Test Double

    Justin Searls: Find his writing, projects, and podcast Breaking Change at justin.searls.co

    Growing Object-Oriented Software, Guided by Tests by Steve Freeman & Nat Pryce

    Extreme Programming Explained by Kent Beck

    The Secrets of Consulting by Jerry Weinberg

    Clojure REPL

    Solidus

    SwiftData

    CloudKit

    Cursor

    Claude Code


    Dead Code Podcast Links:


    Mastodon

    X


    Jared’s Links:


    Mastodon

    X

    twitch.tv/jardonamron

    Jared’s Newsletter & Website


    Episode Transcript

    Hosted on Acast. See acast.com/privacy for more information.

    1 hr 1 min
  • Rage Quit Stamina Theory

    The 50th episode of the Dead Code Podcast brought Karl Weber, Jared Norman, Benjamin Wil, Sofia Besenski, and Noah Silveira together to mark the milestone with sharp, funny, and critical takes on the state of tech. They skewered CEOs bragging about AI-driven layoffs as short-sighted profiteering, questioned the hype fueling the AI bubble, and praised Ruby and Rails for extending developers’ “rage quit stamina” despite flaws in error reporting and dependency management. The group emphasized the importance of empathetic, fast code reviews and smaller PRs, arguing that culture and collaboration matter more than mythical “10x developers.” They also critiqued DHH’s claim that executives should be the least busy, framing it as privilege disguised as wisdom, while pointing out that rest and balance benefit everyone. The episode captured their signature mix of humor, industry critique, and camaraderie, closing with gratitude for 50 episodes and excitement for what’s next.


    Links:


    Giveaway: Anarchy Agile hats — enter at jardo.dev/anarchyagile

    “CEOs Are Publicly Boasting About Reducing Their Workforces With AI” – Futurism

    The Pragmatic Engineer 2025 Survey: What’s in your tech stack? Part 1

    “Two Simple Rules to Fix Code Reviews” – The Pragmatic Engineer

    “In Praise of Normal Engineers” – Charity Majors, Honeycomb

    “Executives Should Be the Least Busy People” – David Heinemeier Hansson


    Dead Code Podcast Links:


    Mastodon

    X

    Jared’s Links:


    Mastodon

    X

    twitch.tv/jardonamron

    Jared’s Newsletter & Website


    Episode Transcript

    Hosted on Acast. See acast.com/privacy for more information.

    48 min
  • Radiation Hardened (with Dave Gauer)

    In this episode of Dead Code, Jared interviews Dave Gauer, creator of the Ziglings project—a whimsical, hands-on tutorial for learning the Zig programming language. Dave shares how Ziglings began as a personal learning tool and grew into a widely loved resource, especially among younger developers. He emphasizes the value of learning in public, blending humor, accessibility, and bite-sized challenges to make complex systems programming concepts less intimidating. The conversation also explores Dave’s deep interest in the Forth language, the appeal of small, self-contained “microworlds” for learning, and his broader philosophy on sharing work, embracing whimsy, and building things that make programming joyful and approachable.

    Links:


    Ziglings

    Zig

    Rustlings

    Forth

    ColorForth

    Alpine Linux

    Lynx browser

    Why’s (Poignant) Guide to Ruby

    Learning Perl

    The Little Schemer

    Mindstorms by Seymour Papert

    Steal Like an Artist by Austin Kleon

    Ratfactor.com – Dave Gauer’s personal website and blog.

    Forth in Space (section on Ratfactor) – Dave’s notes on how Forth has been used in radiation-hardened chips and space tech.


    Dead Code Podcast Links:


    Mastodon

    X

    Jared’s Links:


    Mastodon

    X

    twitch.tv/jardonamron

    Jared’s Newsletter & Website


    Episode Transcript

    Hosted on Acast. See acast.com/privacy for more information.

    1 hr 3 min

About Dead Code

From the publisher's feed

The software industry has a short memory. It warps good ideas, quickly obfuscating their context and intent. Dead Code seeks to extract the good ideas from the chaos of modern software development.

…