Share

cover art for Supercritical Gem (with Stefanni Brasil)

Dead Code

Supercritical Gem (with Stefanni Brasil)

Ep. 9

In this episode of the Dead Code Podcast, Jared Norman talks with Stefanni Brasil, a Senior Software Developer at thoughtbot and co-founder of hexdevs, about career growth, open source, and mentorship in tech. Stefanni shares her non-traditional path into software development and her passion for helping mid-level developers advance through her program "Get to Senior," which addresses both technical and non-technical skills. They discuss the challenges of career progression, the importance of understanding company promotion dynamics, and the need for developers to focus on leadership and communication skills. Stefanni also highlights the ethical concerns surrounding open-source contributions, advocating for companies to financially support the projects they benefit from. The conversation ends with a reflection on the role of AI, productivity, and the value of sharing knowledge publicly to strengthen the tech community.


Links:


Stefanni Brasil's Blog

hexdevs

Faker Library (GitHub Repository)

Rails World Conference

Ruby on Rails Community

GitHub Copilot

Tidelift

ChaelCodes (Rachel's Social Media)

The Survey Mentioned


Dead Code Podcast Links:


Mastodon

X


Jared’s Links:


Mastodon

X


Episode Transcript

More episodes

View all episodes

  • Poisoning the Well (with Heydon Pickering)

    37:34|
    In this episode of Dead Code, Jared interviews Heydon Pickering about his satirical strategy to sabotage AI web crawlers by generating nonsense versions of his blog posts. Using Eleventy and JS DOM, Heydon replaces keywords in his content with absurd alternatives from a static lexicon, creating grammatically broken, jargon-filled text that wastes crawler resources without harming his SEO. Frustrated by how LLMs scrape web content without consent, he frames his approach as both a protest and a creative, Dadaist rebellion against exploitative tech norms. While the method won’t cripple AI models, it reflects a broader resistance to the unchecked harvesting of human-created content.Links:“Poisoning the Well” (Heydon’s article)“Please Stop Externalizing Your Costs Directly In My Face” – The article that partly inspired Heydon’s efforts to push back against LLM scraping.Heydon’s BlogWebbed Briefs (Heydon’s video series)Eleventy (11ty)JS DOMrobots.txtnofollow attributeDadaismDead Code Podcast Links:MastodonXJared’s Links:MastodonXtwitch.tv/jardonamronJared’s Newsletter & WebsiteEpisode Transcript
  • 39. Deterministic Simulation (with Stevan)

    28:27||Ep. 39
    In this episode of Dead Code, Jared talks with Stevan about building reliable distributed systems using Erlang-inspired design patterns. Stevan shares how his background in functional programming and formal verification led him to simulation testing—a deterministic approach to testing distributed systems that avoids the flakiness of traditional CI environments. He emphasizes that Erlang’s true innovation lies not in lightweight processes, but in its structured behaviors (like gen_server and supervisor), which make systems easier to reason about, test, and verify. These behaviors support a more disciplined approach to concurrency, enabling reproducible fault injection and better simulation frameworks. Stevan advocates for programming languages that natively support deterministic testing and model checking, suggesting that the future of distributed systems lies in building on these structured, verifiable foundations.Links:Stevan’s BlogErlangElixirAgdaIdrisTLA+RocJepsenAntithesisBEAMLet it crash philosophyDead Code Podcast Links:MastodonXJared’s Links:MastodonXtwitch.tv/jardonamronJared’s Newsletter & WebsiteEpisode Transcript
  • 38. Brutality of Behaviour (with Carson Gross)

    45:58||Ep. 38
    In this episode of Dead Code, Jared interviews Carson Gross, creator of HTMX, about the principle of Locality of Behavior (LoB) and its role in web development. Carson explains that HTMX enhances HTML rather than replacing it like modern JavaScript frameworks, offering a simpler, hypermedia-driven approach ideal for use cases like e-commerce. He critiques the traditional emphasis on Separation of Concerns, arguing that keeping behavior close to markup improves maintainability and avoids “spooky action at a distance.” Carson acknowledges trade-offs between LoB, DRY, and SoC, emphasizing the importance of context-based decision-making. He and Jared also discuss broader software trends, advocating for deeper modules, simpler APIs, and a pragmatic, less ideological approach to coding as the industry evolves.Links:HTMX WebsiteHTMX Essays (especially Locality of Behavior and When to Use Hypermedia)grugbrain.devHypermedia Systems BookRichard Gabriel’s “Worse Is Better” EssayMozilla Developer Network (MDN)John Ousterhout’s A Philosophy of Software DesignThe Uncle Bob vs. John Ousterhout ArgumentBig Sky Software (Carson’s Company)HyperscriptDead Code Podcast Links:MastodonXJared’s Links:MastodonXtwitch.tv/jardonamronJared’s Newsletter & WebsiteEpisode Transcript
  • 37. GOTO Precedence Hell (with Noratrieb)

    28:55||Ep. 37
    In this episode of Dead Code, Jared chats with Nora, a Rust contributor, about operator precedence and the trade-offs between code clarity and conciseness across programming languages. Nora, inspired by her blog post “Don’t Play the Precedence Game,” explains how languages like C and Rust handle operator order differently, particularly around equality and bitwise operations, which can lead to subtle, hard-to-spot bugs. She advocates for using parentheses generously to make intent explicit, even if some consider it “noisy,” and highlights how tools like linters and formatters approach optional syntax differently. They also touch on Ruby’s permissive style, Lisp’s avoidance of precedence via prefix notation, and broader lessons for language design—ultimately agreeing that clarity should win when it matters, and that different languages cater to different developer mindsets.Links:“Don’t Play the Precedence Game” RustC Programming LanguageRubyLispGoRescriptrustfmtClippyPrettierNora’s Website  Nora’s MastodonNora’s GitHub Dead Code Podcast Links:MastodonXJared’s Links:MastodonXtwitch.tv/jardonamronJared’s Newsletter & WebsiteEpisode Transcript
  • 36. Cursed Return (with Nicole Tietz-Sokolskaya)

    32:14||Ep. 36
    In this episode of Dead Code, Jared speaks with software engineer Nicole Tietz-Sokolskaya about the ethical complexities of large language models (LLMs). Nicole shares her mixed experiences with LLMs—finding brief personal value but little long-term usefulness in her work—and critiques their environmental impact, reliance on questionable training data, and potential to concentrate power among major tech companies. She raises concerns about consent, bias, and the quality of generated code, while also acknowledging LLMs’ potential in accessibility and trust and safety roles. Ultimately, both Nicole and Jared advocate for a values-driven approach to technology, urging developers to critically evaluate the tools they use and the broader implications of their choices.Links:Mastodon: nicole@tietz.socialNicole’s BandcampCan I Ethically Use LLMs?Talon Voice SoftwareRecurse CenterDeconstruct ConfAMP ProjectDead Code Podcast Links:MastodonXJared’s Links:MastodonXtwitch.tv/jardonamronJared’s Newsletter & WebsiteEpisode Transcript
  • 35. Frozen to Death (with Kevlin Henney)

    54:47||Ep. 35
    In this episode of Dead Code, Jared talks with Kevlin Henney about the importance of immutability in software development, particularly as a strategy for reducing bugs related to state and concurrency. Kevlin explains that while many programming languages default to mutable state, treating state change as a privilege—not a right—can lead to more maintainable, less error-prone code. He discusses how immutability strengthens encapsulation, simplifies reasoning about systems, and avoids issues like race conditions and deadlocks, especially in multi-threaded environments. Kevlin also emphasizes that these design choices are architectural, not just implementation details, and that teams benefit from shared philosophies around state management. The conversation ties into broader programming culture and offers practical insights for developers, especially those working in languages like Ruby, where mutability is common but evolving.Links:Kevlin Henney’s article – “Restrict Mutability of State”Book – 97 Things Every Programmer Should KnowOpen source repo with contributionsOverflow collection curated by Shirish Padalkar (includes the “Restrict Mutability of State” essay)RubyConf Mini Providence Talk – Immutable Data StructuresRailsConf Talk – Immutable Objects in Practice@Kevlin on Bluesky@Kevlin@mastodon.socialKevlin Henney on LinkedInDead Code Podcast Links:MastodonXJared’s Links:MastodonXtwitch.tv/jardonamronJared’s Newsletter & WebsiteEpisode Transcript
  • 34. Pattern Imprisonment (with Joan Westenberg)

    40:50||Ep. 34
    In this episode of Dead Code, journalist Joan Westenberg joins host Jared to explore the political and ethical consequences of our tech choices, advocating for decentralized, open-source platforms over corporate-controlled ecosystems like Google and Meta. Joan shares her path from tech journalism to founding The Index, a reader-supported publication free from ads and investor influence, driven by a DIY punk ethos inspired by bands like Fugazi. She critiques the monopolization of the internet, the erosion of data privacy (especially for EU users), and the complicity of tech giants in supporting authoritarian politics. Emphasizing the power of small, intentional decisions, Joan urges listeners to resist cynicism, adopt “pragmatic meliorism,” and choose tools and platforms that align with their values—even if it’s harder—because incremental change still matters.Links:The IndexJoan Westenberg’s WebsiteGhostMastodonPixelfedLemmyFairphoneMurena / /e/OSVivaldiQwantEcosiaWhere Wizards Stay Up Late: The Origins of the InternetDead Code Podcast Links:MastodonXJared’s Links:MastodonXtwitch.tv/jardonamronJared’s Newsletter & WebsiteEpisode Transcript
  • 33. Ordinary Corrupt Memory Love (with Jean Boussier (byroot))

    33:25||Ep. 33
    In this episode of Dead Code, host Jared Norman speaks with Jean Boussier, a key contributor to the Ruby community and Shopify engineer, about the challenges of concurrency in Ruby, particularly the Global VM Lock (GVL). Jean explains that while the GVL was originally implemented to simplify Ruby’s design, it now limits parallel execution, sparking debate on whether it should be removed. He argues that many Ruby applications are more CPU-bound than previously thought and suggests improving Ruby’s thread scheduler as a more practical short-term solution rather than eliminating the GVL entirely. The discussion also explores Ractors, Ruby’s experimental approach to parallelism, which remains unstable and impractical for most applications. Jean envisions a future where Ractors become more viable, gradually leading to broader concurrency improvements. The episode wraps up with insights on profiling tools and the evolving landscape of Ruby performance optimization.Links:Jean Boussier’s BlogJean’s GitHubIvo Anjo’s GVL Profiling Talk (RubyConf)Ivo Anjo’s GVL Profiling ToolJean’s Blog Post: “So, You Want to Remove the GVL?”Jean’s Blog Post: “The Mythical IO-Bound Rails App”Ruby Ractors DocumentationDead Code Podcast Links:MastodonXJared’s Links:MastodonXtwitch.tv/jardonamronJared’s Newsletter & WebsiteEpisode Transcript
  • 32. All Models Are Wrong (with James Gayfer)

    26:23||Ep. 32
    In this episode of Dead Code, Jared interviews James Gayfer about data modeling and the challenges of structuring databases effectively. James, who prefers raw SQL over ORMs, explains how many database models merely mirror table structures, leading to inefficient APIs and excessive data fetching. He discusses the concept of complete versus incomplete data models, emphasizing that completeness depends on an application’s needs at a given time. They explore trade-offs between overly simplistic models that require frequent queries and overly complex ones that attempt to replicate real-world relationships in unnecessary detail. James advocates for designing domain models thoughtfully, using patterns like repositories to maintain consistency while keeping data retrieval manageable. Ultimately, he encourages developers to embrace iteration, rethink their models as needed, and accept that all models are wrong, but some are useful.Links:James Gayfer’s BlogJames Gayfer’s Mastodon profileSQLx library for RustRepository PatternHanami FrameworkPhoenix FrameworkEctoHotwireAll models are wrong, but some are usefulDead Code Podcast Links:MastodonXJared’s Links:MastodonXtwitch.tv/jardonamronJared’s Newsletter & WebsiteEpisode Transcript