Dead Code

Jared Norman

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. Hosted on Acast. See acast.com/privacy for more information.

  1. 21 APR

    Seeds of Devastation (with Kasper Timm Hansen)

    In this episode of Dead Code, Kasper Timm Hansen shares how his post–Rails Core work focuses on small, high-impact Ruby gems built around clear “concepts” rather than loose abstractions, helping developers model domains more effectively and avoid bloated ActiveRecord models. He discusses tools like Associated Objects and ActiveJob::Performs, which simplify structuring data and background jobs while reducing boilerplate, and Oaken, a testing approach that blends fixtures and factories into fast, scenario-driven data scripts. Across all his work, Kasper emphasizes keeping code minimal, readable, and easy to maintain, using constraints like line count to guide design. He also touches on his current project, Peak and gem.coop, where he’s exploring improvements to the Ruby ecosystem such as namespaced gems, dependency cooldowns for security, and better ways to manage and trust dependencies, all driven by an experimental mindset aimed at making development more intuitive and efficient. Links: I quit Rails core 4 years ago, here’s what I’ve been up to Kasper Timm Hansen Ruby on Rails Associated Objects gem ActiveJob::Performs gem Oaken Active Record Active Job Factory Bot Rails fixtures Delayed Job Singleton classes in Ruby gem.coop Peak (gem.coop project) RubyGems Bundler compact index Supply chain security (overview) 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.

    39 min
  2. 24 MAR

    Reject Modernity (with David Copeland)

    In this episode of Dead Code, Jared talks with developer Dave Copeland about his article “The Death of the Software Craftsman,” which reflects on how AI coding tools are reshaping the role of programmers. Copeland describes a personal reckoning with whether traditional programming skills still matter in a world where AI can generate large amounts of code. He outlines three possible responses for developers: refusing to use AI, going all in on AI-assisted development, or “embracing tradition” by positioning oneself as a craftsperson who writes higher-quality code by hand in areas where reliability and accountability matter. The conversation explores the tension between programmers who enjoy the craft of coding and businesses that primarily care about outcomes, suggesting that as AI becomes more common, developers may need to focus less on code elegance and more on measurable results like reliability, safety, and system performance while learning how to work effectively alongside AI tools. Links: The Death of the Software Craftsman Dave Copeland Brut Ruby Web Framework Ruby Programming Language Ruby on Rails Software Craftsmanship Movement SOLID Principles Dependency Injection Cross-Site Request Forgery (CSRF) Agile Software Development Observability in Software Systems Large Language Models (LLMs) Accidental Tech Podcast 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.

    40 min
  3. 24 FEB

    Indistinguishable From Evil (with Russ Olsen)

    Jared interviews veteran programmer and author Russ Olsen about updating Eloquent Ruby for the last 15-ish years of Ruby evolution, from how he discovered Ruby while trying to teach his young son to code (anything but Java) to how Rails suddenly made Ruby mainstream and pushed him into writing. They unpack what “eloquent” Ruby means: solving problems with minimal fuss, staying concise but clear, and treating code as both a working machine and readable literature, plus why the book is structured from tiny examples up to larger systems to help experienced programmers learn Ruby fluently. Russ discusses newer language features like keyword arguments and pattern matching (fun, but not widely used yet), argues for a more tempered, cost-benefit approach to metaprogramming, and shares skepticism about optional static typing in Ruby (RBS/Sorbet) except at key boundaries in very large codebases. The episode closes on Russ’s “Technology as if People Mattered” philosophy and how Ruby’s community culture, often credited to Matz, reflects that human-centered mindset. Links: Eloquent Ruby, Second Edition (beta/book page) Pragmatic Bookshelf beta catalog Russ Olsen’s blog: “Technology As If People Mattered” Russ Olsen (about page) Overdrive by Russ Olsen RBS (Ruby type signatures) on GitHub Sorbet (Ruby type checker) docs Ruby pattern matching documentation TruffleRuby documentation (GraalVM Ruby) Ruby Regexp documentation Dead Code Episode: “Pickaxe Resurrection (with Noel Rappin)” 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.

    34 min
  4. 27 JAN

    Zero Specificity (with Stephen Margheim)

    Jared talks with Stephen Margheim about a “missing” middle layer in modern design systems: reusable CSS affordances that sit between Tailwind utilities and full components. Stephen shares how building a no-JavaScript half-star rating input (radio buttons + labels + SVG + careful hover/layout CSS) reinforced his bias toward solving problems with the smallest toolset to avoid incidental complexity and to make solutions portable across frameworks. That philosophy leads to his critique that components are a poor vehicle for purely visual styles because they bundle structure, behavior, and aesthetics in ways that are hard to reuse—so instead, teams should name and standardize visual signals like “button” as composable classes that can apply to many semantic HTML elements. He explains how Tailwind can support this via custom utilities (@utility), tree-shaking, autocomplete, variants, and low-specificity defaults using :where(), and argues a four-layer approach—tokens → utilities → affordances → components—helps teams maintain design systems and progressively drop JavaScript as the web platform adds more native UI primitives (dialog, popover, details/name, etc.). Links: fractaledmind.com Web Awesome Font Awesome Tailwind: Introducing Catalyst Catalyst docs shadcn/ui daisyUI Tailwind docs: Functions & directives MDN: :where() selector MDN: Popover API MDN: CSS anchor positioning MDN: element MDN: Invoker Commands API MDN blog: Exclusive accordions with web.dev: Interop 2026 proposals Ruby on Rails SQLite 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.

    49 min

About

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. Hosted on Acast. See acast.com/privacy for more information.

You Might Also Like