<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="https://rss.buzzsprout.com/styles.xsl" type="text/xsl"?>
<rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:podcast="https://podcastindex.org/namespace/1.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:psc="http://podlove.org/simple-chapters" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <atom:link href="https://rss.buzzsprout.com/2462975.rss" rel="self" type="application/rss+xml" />
  <atom:link href="https://pubsubhubbub.appspot.com/" rel="hub" xmlns="http://www.w3.org/2005/Atom" />
  <title>On Rails</title>

  <lastBuildDate>Tue, 01 Sep 2026 15:00:58 -0400</lastBuildDate>
  <link>https://rubyonrails.org/</link>
  <language>en-us</language>
  <copyright>© 2026 Ruby on Rails</copyright>
  <podcast:locked>yes</podcast:locked>
    <podcast:guid>799152f7-55b4-57ed-b7da-29e924b53bf6</podcast:guid>
  <podcast:txt purpose="verify">foundation@rubyonrails.org</podcast:txt>
<podcast:podroll>
    <podcast:remoteItem feedGuid="89e8696d-c776-5d55-8614-d2081ec000d8" feedUrl="https://feeds.simplecast.com/7y1CbAbN" />
    <podcast:remoteItem feedGuid="756488bb-daeb-5d09-8451-96de9500b93d" feedUrl="https://feeds.buzzsprout.com/2260490.rss" />
    <podcast:remoteItem feedGuid="4d872a85-d34e-5726-994c-6f1290ae6b28" feedUrl="https://feeds.fireside.fm/therubyonrailspodcast/rss" />
    <podcast:remoteItem feedGuid="e5531453-b651-5d49-ba61-77b6c28cf2b9" feedUrl="https://feeds.transistor.fm/indierails" />
    <podcast:remoteItem feedGuid="128a7a6e-6caa-5d17-a8f9-d85c735cac85" feedUrl="https://feeds.buzzsprout.com/2260539.rss" />
  </podcast:podroll>
  <itunes:author>Rails Foundation, Robby Russell</itunes:author>
  <itunes:type>episodic</itunes:type>
  <itunes:explicit>false</itunes:explicit>
  <description><![CDATA[<p>On Rails invites Rails developers to share real-world technical challenges and solutions, architectural decisions, and lessons learned while building with Rails. Through technical deep-dives and retrospectives with experienced engineers in the Rails community, we explore the strategies behind building and scaling Rails applications.</p><p><br></p><p><b>Hosted by Robby Russell of Planet Argon and produced by the Rails Foundation.</b></p>]]></description>
  <generator>Buzzsprout (https://www.buzzsprout.com)</generator>
  <itunes:keywords>Rails, web development, app development, Ruby on Rails</itunes:keywords>
  <itunes:owner>
    <itunes:name>Rails Foundation, Robby Russell</itunes:name>
    <itunes:email>foundation@rubyonrails.org</itunes:email>
  </itunes:owner>
  <image>
     <url>https://storage.buzzsprout.com/qpt8q2xrv6ga6028uvij38tijut7?.jpg</url>
     <title>On Rails</title>
     <link>https://rubyonrails.org/</link>
  </image>
  <itunes:image href="https://storage.buzzsprout.com/qpt8q2xrv6ga6028uvij38tijut7?.jpg" />
  <itunes:category text="Technology" />
  <podcast:person role="host" href="https://github.com/robbyrussell" img="https://storage.buzzsprout.com/116zccybxsvsvqtimcs2iocx99ft">Robby Russell</podcast:person>
  <item>
    <itunes:title>Eddie Galindo &amp; Kagen Hearn: Rate Limiting For Your Customers</itunes:title>
    <title>Eddie Galindo &amp; Kagen Hearn: Rate Limiting For Your Customers</title>
    <itunes:summary><![CDATA[Eddie Galindo is an engineering lead at Ascend and Kagen Hearn is a senior software engineer there, working on a Rails app that helps insurance agencies move and reconcile money. Robby chats with Eddie and Kagen about why Ascend still runs one Rails monolith five years in, what changed when much larger customers started arriving, and how the team went about finding the real limits of their data ingestion pipeline. They also get into feature flags versus database configuration, and where AI to...]]></itunes:summary>
    <description><![CDATA[<p>Eddie Galindo is an engineering lead at <a href='http://com'>Ascend</a> and Kagen Hearn is a senior software engineer there, working on a Rails app that helps insurance agencies move and reconcile money.</p><p>Robby chats with Eddie and Kagen about why Ascend still runs one Rails monolith five years in, what changed when much larger customers started arriving, and how the team went about finding the real limits of their data ingestion pipeline. They also get into feature flags versus database configuration, and where AI tooling fits in when the software you ship moves money.</p><p><b>Links:<br/></b>Ascend - https://www.useascend.com/</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>Eddie Galindo is an engineering lead at <a href='http://com'>Ascend</a> and Kagen Hearn is a senior software engineer there, working on a Rails app that helps insurance agencies move and reconcile money.</p><p>Robby chats with Eddie and Kagen about why Ascend still runs one Rails monolith five years in, what changed when much larger customers started arriving, and how the team went about finding the real limits of their data ingestion pipeline. They also get into feature flags versus database configuration, and where AI tooling fits in when the software you ship moves money.</p><p><b>Links:<br/></b>Ascend - https://www.useascend.com/</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/19737744-eddie-galindo-kagen-hearn-rate-limiting-for-your-customers.mp3" length="60837547" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19737744</guid>
    <pubDate>Tue, 01 Sep 2026 14:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/19737744/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/19737744/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Introduction" />
  <psc:chapter start="1:17" title="What keeps Eddie and Kagen on Rails" />
  <psc:chapter start="3:44" title="What Ascend builds for insurance agencies" />
  <psc:chapter start="6:16" title="Direct bill reconciliation and the scale behind it" />
  <psc:chapter start="8:27" title="Why Rails was the first choice" />
  <psc:chapter start="11:01" title="Onboarding into a codebase that sticks to conventions" />
  <psc:chapter start="13:08" title="Why the platform is still one monolith" />
  <psc:chapter start="15:43" title="Shared monolith: superpower or constraint?" />
  <psc:chapter start="17:46" title="Bigger customers arrive and ingestion assumptions break" />
  <psc:chapter start="20:59" title="Finding the real limit: Postgres connections and PgBouncer" />
  <psc:chapter start="23:10" title="Inside the ingestion pipeline: change events on a cron" />
  <psc:chapter start="25:39" title="When the customer&#39;s API becomes the bottleneck" />
  <psc:chapter start="26:36" title="A concurrency rate limiter inspired by Stripe" />
  <psc:chapter start="31:53" title="Feature flags, org configuration, and the god object" />
  <psc:chapter start="37:42" title="A word from our sponsor" />
  <psc:chapter start="38:38" title="When customer flexibility becomes technical debt" />
  <psc:chapter start="43:28" title="Convention over configuration and duck typing" />
  <psc:chapter start="46:22" title="Heroku&#39;s maintenance mode and tuning Puma" />
  <psc:chapter start="50:13" title="AI tooling, testing at volume, and local seeding" />
  <psc:chapter start="54:26" title="A JSON API, a Next.js front end, and a billion Sidekiq jobs" />
  <psc:chapter start="56:59" title="How the team vets gems and dependencies" />
  <psc:chapter start="1:00:50" title="Running Elasticsearch alongside Postgres" />
  <psc:chapter start="1:05:45" title="Sidekiq batching, state machines, and ParadeDB" />
  <psc:chapter start="1:09:21" title="Do LLMs work better in typed languages?" />
  <psc:chapter start="1:12:51" title="The cost of writing code versus the cost of good software" />
  <psc:chapter start="1:16:40" title="Technical decisions they&#39;re glad they made" />
  <psc:chapter start="1:21:29" title="Book recommendations and wrapping up" />
</psc:chapters>
    <itunes:duration>5068</itunes:duration>
    <itunes:keywords>Rails, Ruby on Rails, Kagen Hearn, Eddie Galindo, Ascend</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>10</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Joanna Wang: Code Is Cheap Now; Developers Still Valuable</itunes:title>
    <title>Joanna Wang: Code Is Cheap Now; Developers Still Valuable</title>
    <itunes:summary><![CDATA[Joanna Wang is a senior software engineer at Sixfold, where the team builds AI underwriting tools that help insurance companies gather data and assess risk. She came to Ruby on Rails after working across Java, Go, Python, and Node. Robby and Joanna get into why the homegrown orchestration they built on state machines and callbacks turned brittle, what moving to Hatchet changed, and the tradeoffs of leaning on a gem that is no longer maintained. They also talk about what happened whe...]]></itunes:summary>
    <description><![CDATA[<p>Joanna Wang is a senior software engineer at <a href='https://www.sixfold.ai'>Sixfold</a>, where the team builds AI underwriting tools that help insurance companies gather data and assess risk. She came to Ruby on Rails after working across Java, Go, Python, and Node.</p><p>Robby and Joanna get into why the homegrown orchestration they built on state machines and callbacks turned brittle, what moving to <a href='https://github.com/hatchet-dev/hatchet'>Hatchet</a> changed, and the tradeoffs of leaning on a gem that is no longer maintained. They also talk about what happened when the team went fully agentic, and why Rails magic is easier to understand when an agent can trace it for you.</p><p><b>Links:</b></p><p>Sixfold - https://www.sixfold.ai</p><p>Hatchet - https://github.com/hatchet-dev/hatchet</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>Joanna Wang is a senior software engineer at <a href='https://www.sixfold.ai'>Sixfold</a>, where the team builds AI underwriting tools that help insurance companies gather data and assess risk. She came to Ruby on Rails after working across Java, Go, Python, and Node.</p><p>Robby and Joanna get into why the homegrown orchestration they built on state machines and callbacks turned brittle, what moving to <a href='https://github.com/hatchet-dev/hatchet'>Hatchet</a> changed, and the tradeoffs of leaning on a gem that is no longer maintained. They also talk about what happened when the team went fully agentic, and why Rails magic is easier to understand when an agent can trace it for you.</p><p><b>Links:</b></p><p>Sixfold - https://www.sixfold.ai</p><p>Hatchet - https://github.com/hatchet-dev/hatchet</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/19665210-joanna-wang-code-is-cheap-now-developers-still-valuable.mp3" length="30706285" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19665210</guid>
    <pubDate>Tue, 18 Aug 2026 12:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/19665210/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/19665210/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Introduction" />
  <psc:chapter start="1:17" title="What keeps Joanna on Rails, and getting there from Java" />
  <psc:chapter start="2:53" title="Inside Sixfold: AI underwriting for insurance" />
  <psc:chapter start="4:17" title="Where Rails sits in the stack, and how the Rails and Python sides overlap" />
  <psc:chapter start="6:53" title="Writing less code, and learning to live with the magic" />
  <psc:chapter start="11:45" title="When homegrown orchestration got brittle" />
  <psc:chapter start="13:58" title="Fan out, fan in, and race conditions everywhere" />
  <psc:chapter start="15:46" title="Buy versus build, and piloting Hatchet" />
  <psc:chapter start="18:36" title="JSON API resources: empty controllers and rigid errors" />
  <psc:chapter start="21:55" title="Dependencies, supply chain security, and cautious upgrades" />
  <psc:chapter start="24:55" title="Testing, observability, and going fully agentic" />
  <psc:chapter start="28:19" title="Harnesses for agents, and what the job becomes when code is cheap" />
  <psc:chapter start="30:29" title="Why agentic tools pair well with Rails magic" />
  <psc:chapter start="31:56" title="CLI tooling and Claude skills for dev setup" />
  <psc:chapter start="35:28" title="Multi-tenancy, compliance, and regional data residency" />
  <psc:chapter start="37:13" title="Feature flags, and moving QA to an agent" />
  <psc:chapter start="39:41" title="Advice on the way out, and a book recommendation" />
</psc:chapters>
    <itunes:duration>2557</itunes:duration>
    <itunes:keywords>Rails, Ruby on Rails, Joanna Wang, Sixfold, Web Dev</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>9</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Aaron Patterson: Ractors, JIT Compilers, and Rewriting How Gems Install</itunes:title>
    <title>Aaron Patterson: Ractors, JIT Compilers, and Rewriting How Gems Install</title>
    <itunes:summary><![CDATA[In this episode of On Rails, Robby is joined by Aaron Patterson, better known online as Tenderlove, a senior staff engineer on Shopify’s Ruby infrastructure team and a longtime contributor to both Ruby and Rails Core. Aaron and Robby chat about how Ractors are finally bringing true multi-core parallelism to Ruby, the proposal Aaron has pitched to RubyGems.org for content addressable gems that could make bundle install dramatically faster, and the real reasons gems reach for native C extension...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of On Rails, Robby is joined by Aaron Patterson, better known online as <a href='https://github.com/tenderlove'>Tenderlove</a>, a senior staff engineer on<a href='https://www.shopify.com/'> Shopify</a>’s Ruby infrastructure team and a longtime contributor to both Ruby and Rails Core. Aaron and Robby chat about how <a href='https://docs.ruby-lang.org/en/master/Ractor.html'>Ractors</a><b> </b>are finally bringing true multi-core parallelism to Ruby, the proposal Aaron has pitched to<a href='https://rubygems.org/'> RubyGems.org</a> for content addressable gems that could make bundle install dramatically faster, and the real reasons gems reach for native C extensions in the first place.</p><p>They also have a candid conversation about how Aaron actually uses AI day to day, from digging through unfamiliar code at Shopify&apos;s scale to building a JPEG encoder almost entirely with Claude, and why he still can&apos;t quite bring himself to trust it the way he trusts a longtime teammate.</p><p><b>Links</b></p><p><a href=' https://github.com/tenderlove'>Tenderlove</a><br/><a href='https://www.shopify.com/'>Shopify</a> <br/><a href='https://docs.ruby-lang.org/en/master/Ractor.html'>Ractors</a> <br/><a href='https://rubygems.org/'>RubyGems.org</a> <br/><a href='https://github.com/ffi/ffi'>FFI</a> </p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of On Rails, Robby is joined by Aaron Patterson, better known online as <a href='https://github.com/tenderlove'>Tenderlove</a>, a senior staff engineer on<a href='https://www.shopify.com/'> Shopify</a>’s Ruby infrastructure team and a longtime contributor to both Ruby and Rails Core. Aaron and Robby chat about how <a href='https://docs.ruby-lang.org/en/master/Ractor.html'>Ractors</a><b> </b>are finally bringing true multi-core parallelism to Ruby, the proposal Aaron has pitched to<a href='https://rubygems.org/'> RubyGems.org</a> for content addressable gems that could make bundle install dramatically faster, and the real reasons gems reach for native C extensions in the first place.</p><p>They also have a candid conversation about how Aaron actually uses AI day to day, from digging through unfamiliar code at Shopify&apos;s scale to building a JPEG encoder almost entirely with Claude, and why he still can&apos;t quite bring himself to trust it the way he trusts a longtime teammate.</p><p><b>Links</b></p><p><a href=' https://github.com/tenderlove'>Tenderlove</a><br/><a href='https://www.shopify.com/'>Shopify</a> <br/><a href='https://docs.ruby-lang.org/en/master/Ractor.html'>Ractors</a> <br/><a href='https://rubygems.org/'>RubyGems.org</a> <br/><a href='https://github.com/ffi/ffi'>FFI</a> </p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/19597832-aaron-patterson-ractors-jit-compilers-and-rewriting-how-gems-install.mp3" length="59940264" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19597832</guid>
    <pubDate>Tue, 04 Aug 2026 10:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/19597832/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/19597832/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Welcome to On Rails: introducing Aaron Patterson (Tenderlove) &amp; Shopify" />
  <psc:chapter start="0:58" title="What keeps Aaron on Rails after all these years" />
  <psc:chapter start="2:20" title="From a 1999 Perl CGI job to discovering Ruby on Rails" />
  <psc:chapter start="6:53" title="Inside Shopify&#39;s Ruby infrastructure team: JIT, GC, and concurrency" />
  <psc:chapter start="12:05" title="Ractors explained: real multi-core parallelism, and where they don&#39;t belong" />
  <psc:chapter start="18:44" title="Owning these projects, and testing with shadow production traffic" />
  <psc:chapter start="24:03" title="Ruby internals work vs. everyday Rails app development" />
  <psc:chapter start="25:12" title="Ad break: the “Gemshine” bit" />
  <psc:chapter start="26:08" title="Rails new, the Database Tier List, and other detours" />
  <psc:chapter start="29:36" title="Fixing Ruby&#39;s slow gem installs: fat binaries, content-addressable gems, and Matz&#39;s AOT compiler idea" />
  <psc:chapter start="47:59" title="Why gems reach for native C extensions in the first place" />
  <psc:chapter start="49:02" title="SQLite and Postgres hacks, and coining “itch case”" />
  <psc:chapter start="53:11" title="FFI, and teaching the JIT compiler to see through C extensions" />
  <psc:chapter start="59:10" title="Should that even be a gem? How AI changes the calculus" />
  <psc:chapter start="1:00:39" title="Where AI actually helps Aaron day-to-day" />
  <psc:chapter start="1:04:35" title="The trust problem: why AI-generated code isn&#39;t like a teammate&#39;s" />
  <psc:chapter start="1:11:37" title="AI, open source contributions, and security report overload" />
  <psc:chapter start="1:16:50" title="What&#39;s exciting in Rails right now, and AI tooling like Herb" />
  <psc:chapter start="1:19:30" title="Learning Rails internals: the old way vs. with an AI walking you through it" />
  <psc:chapter start="1:20:42" title="Book recommendations: Ruby Under a Microscope and Engineering a Compiler" />
  <psc:chapter start="1:22:21" title="Where to follow Aaron online; sign-off" />
</psc:chapters>
    <itunes:duration>4993</itunes:duration>
    <itunes:keywords>Rails, Ruby on Rails, Aaron Patterson, Web Dev</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>8</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>true</itunes:explicit>
  </item>
  <item>
    <itunes:title>Bryce Harlan: A Decade of Rails in Healthcare</itunes:title>
    <title>Bryce Harlan: A Decade of Rails in Healthcare</title>
    <itunes:summary><![CDATA[In this episode of On Rails, Robby is joined by Bryce Harlan, a senior engineer at Phamily, the text-based chronic care management platform built by Jaan Health. Bryce has spent the last decade helping evolve Phamily's Ruby on Rails platform, which helps clinical practices coordinate between-visit care for patients with chronic conditions — sending and receiving roughly 100,000 Twilio SMS messages a day across hundreds of medical groups. Bryce and Robby trade stories about a long-lived Rails ...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of On Rails, Robby is joined by Bryce Harlan, a senior engineer at<a href='https://phamily.com/'> Phamily</a>, the text-based chronic care management platform built by<a href='https://phamily.com/about/'> Jaan Health</a>. Bryce has spent the last decade helping evolve Phamily&apos;s Ruby on Rails platform, which helps clinical practices coordinate between-visit care for patients with chronic conditions — sending and receiving roughly 100,000 Twilio SMS messages a day across hundreds of medical groups.</p><p>Bryce and Robby trade stories about a long-lived Rails app: the unconventional Rails 4-to-6 leap Phamily made during the spring 2020 surge in virtual care, the bespoke &quot;Action Responders&quot; pattern the team built to keep API serialization, authorization, and testing close to the model layer, and how an article from Judoscale on naming Sidekiq queues by their SLA reshaped how the team thinks about background work. They also dig into how Phamily is using Claude Code skills to give engineers &quot;superpowers&quot; on smaller features, and why Bryce now sees test suites as the closest thing to Peter Naur&apos;s idea of<a href='https://pages.cs.wisc.edu/~remzi/Naur.pdf'> programming as theory building</a>.</p><p><b>Links:<br/></b><a href='https://phamily.com/'>Phamily</a><br/><a href='https://phamily.com/about/'>Jaan Health</a><br/><a href='https://pages.cs.wisc.edu/~remzi/Naur.pdf'>Programming as theory building</a><br/><a href='https://judoscale.com/blog/planning-sidekiq-queues'>Judoscale blog</a>: Planning Sidekiq Queues</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of On Rails, Robby is joined by Bryce Harlan, a senior engineer at<a href='https://phamily.com/'> Phamily</a>, the text-based chronic care management platform built by<a href='https://phamily.com/about/'> Jaan Health</a>. Bryce has spent the last decade helping evolve Phamily&apos;s Ruby on Rails platform, which helps clinical practices coordinate between-visit care for patients with chronic conditions — sending and receiving roughly 100,000 Twilio SMS messages a day across hundreds of medical groups.</p><p>Bryce and Robby trade stories about a long-lived Rails app: the unconventional Rails 4-to-6 leap Phamily made during the spring 2020 surge in virtual care, the bespoke &quot;Action Responders&quot; pattern the team built to keep API serialization, authorization, and testing close to the model layer, and how an article from Judoscale on naming Sidekiq queues by their SLA reshaped how the team thinks about background work. They also dig into how Phamily is using Claude Code skills to give engineers &quot;superpowers&quot; on smaller features, and why Bryce now sees test suites as the closest thing to Peter Naur&apos;s idea of<a href='https://pages.cs.wisc.edu/~remzi/Naur.pdf'> programming as theory building</a>.</p><p><b>Links:<br/></b><a href='https://phamily.com/'>Phamily</a><br/><a href='https://phamily.com/about/'>Jaan Health</a><br/><a href='https://pages.cs.wisc.edu/~remzi/Naur.pdf'>Programming as theory building</a><br/><a href='https://judoscale.com/blog/planning-sidekiq-queues'>Judoscale blog</a>: Planning Sidekiq Queues</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/19436980-bryce-harlan-a-decade-of-rails-in-healthcare.mp3" length="48697473" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19436980</guid>
    <pubDate>Wed, 08 Jul 2026 11:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/19436980/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/19436980/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Welcome to On Rails" />
  <psc:chapter start="0:21" title="Introducing Bryce Harlan &amp; Phamily" />
  <psc:chapter start="0:55" title="What keeps you on Rails?" />
  <psc:chapter start="1:55" title="Coming to Rails from Flask, Node.js, and a math background" />
  <psc:chapter start="4:00" title="Active Record appreciation (vs. SQLAlchemy)" />
  <psc:chapter start="6:15" title="What Phamily does: between-visit care for nurses and care managers" />
  <psc:chapter start="8:30" title="Working in healthcare and HIPAA: less daunting than it sounds" />
  <psc:chapter start="10:00" title="SMS-first via Twilio, and why patients don&#39;t need a mobile app" />
  <psc:chapter start="13:30" title="Joining Phamily in the Rails 4 era" />
  <psc:chapter start="16:30" title="The Rails 4 → 6 upgrade during the spring 2020 surge in virtual care" />
  <psc:chapter start="20:00" title="Decisions that aged well: owning the conversation mo" />
  <psc:chapter start="22:00" title="Picking gems vs. building your own (in the age of AI)" />
  <psc:chapter start="24:00" title="Rails as an API hub with Vue front-ends" />
  <psc:chapter start="26:00" title="The Action Responders pattern (and why not GraphQL)" />
  <psc:chapter start="31:30" title="How Action Responders changed integration testing" />
  <psc:chapter start="35:30" title="Observability with Datadog and AI-assisted stack trace analysis" />
  <psc:chapter start="37:30" title="&quot;Ruby on Rails 1.0 Edition&quot; ad break" />
  <psc:chapter start="39:00" title="Background processing: 100k Twilio messages a day with Sidekiq" />
  <psc:chapter start="43:30" title="Judoscale&#39;s SLA-based queue naming changed everything" />
  <psc:chapter start="45:30" title="Is Rails part of Phamily&#39;s secret sauce?" />
  <psc:chapter start="47:30" title="Deploy cadence and developer onboarding" />
  <psc:chapter start="50:00" title="Testing with Twilio sandbox numbers and Playwright" />
  <psc:chapter start="51:30" title="AI-assisted development: the Claude Code skills pipeline" />
  <psc:chapter start="56:30" title="Engineers and PMs taking on each other&#39;s work" />
  <psc:chapter start="57:30" title="Monorepo or split repos? Plus a Brian Scanlan / Fin reference" />
  <psc:chapter start="58:30" title="A recent Claude Code win: business-process modeling" />
  <psc:chapter start="1:00:30" title="On AI and the role of the developer" />
  <psc:chapter start="1:01:00" title="&quot;Programming as Theory Building&quot; by Peter Naur" />
  <psc:chapter start="1:03:00" title="Why Phamily chose Rails (the founder&#39;s YC roots)" />
  <psc:chapter start="1:03:50" title="Advice: &quot;You never need as much as you initially think&quot;" />
  <psc:chapter start="1:05:30" title="Hot take: learn C at least once" />
  <psc:chapter start="1:06:40" title="Where to find Phamily online; sign-off" />
</psc:chapters>
    <itunes:duration>4056</itunes:duration>
    <itunes:keywords>Rails, Ruby on Rails, Bryce Harlan, Web Dev</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>7</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Nikky Southerland: Lessons from 13 Years of Rails at the Auto Shop</itunes:title>
    <title>Nikky Southerland: Lessons from 13 Years of Rails at the Auto Shop</title>
    <itunes:summary><![CDATA[Robby is joined by Nikky Southerland, Lead Software Engineer at Shop-Ware — a cloud-based platform that helps independent automotive service shops run their businesses. Ruby on Rails has powered Shop-Ware since the first line of code was written back in 2013, and more than a decade later the codebase is still 90%+ Rails. Robby talks with Nikky about what it actually takes to keep a mature Rails app moving with a team roughly half the size it used to be, including a frontend migration that's s...]]></itunes:summary>
    <description><![CDATA[<p>Robby is joined by<a href='https://shop-ware.com/'> Nikky Southerland</a>, Lead Software Engineer at<a href='https://shop-ware.com/'> Shop-Ware</a> — a cloud-based platform that helps independent automotive service shops run their businesses. Ruby on Rails has powered Shop-Ware since the first line of code was written back in 2013, and more than a decade later the codebase is still 90%+ Rails.</p><p>Robby talks with Nikky about what it actually takes to keep a mature Rails app moving with a team roughly half the size it used to be, including a frontend migration that&apos;s still in progress, the API decision they regretted almost immediately, and the LaunchDarkly kill switches that save them when a third-party integrator goes down.</p><p><br/></p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>Robby is joined by<a href='https://shop-ware.com/'> Nikky Southerland</a>, Lead Software Engineer at<a href='https://shop-ware.com/'> Shop-Ware</a> — a cloud-based platform that helps independent automotive service shops run their businesses. Ruby on Rails has powered Shop-Ware since the first line of code was written back in 2013, and more than a decade later the codebase is still 90%+ Rails.</p><p>Robby talks with Nikky about what it actually takes to keep a mature Rails app moving with a team roughly half the size it used to be, including a frontend migration that&apos;s still in progress, the API decision they regretted almost immediately, and the LaunchDarkly kill switches that save them when a third-party integrator goes down.</p><p><br/></p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/19319172-nikky-southerland-lessons-from-13-years-of-rails-at-the-auto-shop.mp3" length="49120570" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19319172</guid>
    <pubDate>Tue, 30 Jun 2026 05:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/19319172/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/19319172/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Nikky Southerland: Lessons from 13 Years of Rails at the Auto Shop" />
  <psc:chapter start="0:05" title="Welcome &amp; introduction" />
  <psc:chapter start="1:00" title="Meet Nikky: what keeps her on Rails after 13 years" />
  <psc:chapter start="1:30" title="From Perl forums and WordPress to Ruby on Rails" />
  <psc:chapter start="2:35" title="What is Shop-Ware? Software for auto service shops" />
  <psc:chapter start="5:00" title="Rails has been part of Shop-Ware since day one (2013)" />
  <psc:chapter start="6:00" title="Why an opinionated framework is the &quot;secret sauce&quot;" />
  <psc:chapter start="7:55" title="Active Record, MVC, and a team of full-stack engineers" />
  <psc:chapter start="11:00" title="Observability with New Relic and Sentry" />
  <psc:chapter start="13:50" title="Database seeds, onboarding, and stress-testing locally" />
  <psc:chapter start="16:30" title="The long migration from Backbone to React" />
  <psc:chapter start="19:30" title="What if your frontend framework gets deprecated?" />
  <psc:chapter start="20:30" title="Could LLMs help finish the Backbone-to-React migration?" />
  <psc:chapter start="22:15" title="&quot;Lukewarm waters&quot;: dipping toes into LLM tools" />
  <psc:chapter start="23:00" title="Where LLMs shine: writing specs and pre-PR reviews" />
  <psc:chapter start="27:30" title="The cultural side effect: are AI tools siloing the team?" />
  <psc:chapter start="30:00" title="Scoping epics, code review as the backstop" />
  <psc:chapter start="33:35" title="(Sponsor break: the fictional &quot;On Rails CLI&quot;)" />
  <psc:chapter start="34:55" title="Shop-Ware&#39;s API: two codebases and one big regret" />
  <psc:chapter start="38:30" title="Wistful glances at GraphQL" />
  <psc:chapter start="39:30" title="Going from ~20 engineers to ~10 — and what gets lost" />
  <psc:chapter start="42:30" title="Niche integrations: VIN lookups, parts wholesalers, Windows 95 terminals" />
  <psc:chapter start="46:50" title="Onboarding shops and migrating data from legacy systems" />
  <psc:chapter start="49:20" title="Feature flags with LaunchDarkly (and kill switches for integrations)" />
  <psc:chapter start="51:30" title="From biweekly waterfall releases to daily deploys" />
  <psc:chapter start="57:40" title="Postgres, connection pooling, and unlearning old habits" />
  <psc:chapter start="1:00:00" title="Reading the writing on the wall with Heroku" />
  <psc:chapter start="1:04:15" title="Async updates without Action Cable: the Stream story" />
  <psc:chapter start="1:06:55" title="Book rec: Digital Apollo by David A. Mindell" />
  <psc:chapter start="1:08:00" title="Wrap-up" />
</psc:chapters>
    <itunes:duration>4091</itunes:duration>
    <itunes:keywords>rails, ruby on rails, shop-ware, nikky southerland</itunes:keywords>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>DHH: Basecamp 5, Vibe Coding, and the Future of Rails</itunes:title>
    <title>DHH: Basecamp 5, Vibe Coding, and the Future of Rails</title>
    <itunes:summary><![CDATA[David Heinemeier Hansson, creator of Ruby on Rails and co-owner of 37signals⁩, joins Robby Russell the same week 37signals shipped Basecamp 5 to talk through the shift reshaping how software actually gets built today: why he reversed his "write every character by hand" stance, why he now considers taking AI seriously a professional obligation, and how cheap experimentation ("git reset and try again") is changing 37signals from the inside: designers and PMs working directly in code, and even t...]]></itunes:summary>
    <description><![CDATA[<p>David Heinemeier Hansson, creator of <a href='https://rubyonrails.org/'>Ruby on Rails</a> and co-owner of <a href='https://37signals.com/'>37signals⁩</a>, joins Robby Russell the same week 37signals shipped <a href='https://basecamp.com/'>Basecamp 5</a> to talk through the shift reshaping how software actually gets built today: why he reversed his &quot;write every character by hand&quot; stance, why he now considers taking AI seriously a professional obligation, and how cheap experimentation (&quot;git reset and try again&quot;) is changing 37signals from the inside: designers and PMs working directly in code, and even the rigid six-week Shape Up cycle up for reconsideration. <br/><br/>They also trace the history of Rails, including a backend so stable that a model file written today looks at home next to one from 2013, and take a peek at what&apos;s headed for Rails, from a Lexical-based editor (&quot;Lexi&quot;) headed for ActionText to native passkeys and magic links. <br/><br/>If you&apos;re curious where Rails is headed, have a listen.</p><p><br/></p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>David Heinemeier Hansson, creator of <a href='https://rubyonrails.org/'>Ruby on Rails</a> and co-owner of <a href='https://37signals.com/'>37signals⁩</a>, joins Robby Russell the same week 37signals shipped <a href='https://basecamp.com/'>Basecamp 5</a> to talk through the shift reshaping how software actually gets built today: why he reversed his &quot;write every character by hand&quot; stance, why he now considers taking AI seriously a professional obligation, and how cheap experimentation (&quot;git reset and try again&quot;) is changing 37signals from the inside: designers and PMs working directly in code, and even the rigid six-week Shape Up cycle up for reconsideration. <br/><br/>They also trace the history of Rails, including a backend so stable that a model file written today looks at home next to one from 2013, and take a peek at what&apos;s headed for Rails, from a Lexical-based editor (&quot;Lexi&quot;) headed for ActionText to native passkeys and magic links. <br/><br/>If you&apos;re curious where Rails is headed, have a listen.</p><p><br/></p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/19335416-dhh-basecamp-5-vibe-coding-and-the-future-of-rails.mp3" length="43013121" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19335416</guid>
    <pubDate>Fri, 12 Jun 2026 08:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/19335416/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/19335416/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Open &amp; welcome" />
  <psc:chapter start="1:06" title="What still excites David about Rails: Ruby and the internet" />
  <psc:chapter start="2:41" title="What modern Rails got right from the start (backend &amp; ActiveRecord stability)" />
  <psc:chapter start="6:01" title="Basecamp 5: what modern Rails makes possible" />
  <psc:chapter start="8:25" title="Benchmarking: the full Basecamp 5 test suite in 60 seconds" />
  <psc:chapter start="10:35" title="No-build, ActionText, and the new “Lexi” editor" />
  <psc:chapter start="13:41" title="Balancing legacy stability with greenfield joy" />
  <psc:chapter start="16:50" title="The Basecamp 3 “chassis,” Fizzy, and carbon-dating an app" />
  <psc:chapter start="19:35" title="What to expect at Rails World: Lexi in ActionText + passkeys &amp; magic links" />
  <psc:chapter start="23:50" title="A word from our sponsor: Deprecation Whisperer" />
  <psc:chapter start="24:31" title="Agents, authentication, and architecture questions" />
  <psc:chapter start="25:36" title="Why baking agents.md into Rails would backfire" />
  <psc:chapter start="27:00" title="GPT-5.5, “mind-blowing” moments, and the skepticism-vs-hype swing" />
  <psc:chapter start="30:22" title="Letting designers and PMs ship code; the limits of vibe coding" />
  <psc:chapter start="33:00" title="Why Shape Up’s six-week cycle now feels archaic" />
  <psc:chapter start="33:56" title="“Make the change easy, then make the easy change” — agents &amp; architecture" />
  <psc:chapter start="37:12" title="AI as a professional obligation, and taking the “Tobi pill”" />
  <psc:chapter start="41:03" title="Code as art: git reset and exploring more ideas" />
  <psc:chapter start="44:27" title="How rising ambition changes the work (fixing the fastest 1%)" />
  <psc:chapter start="47:35" title="Self-driving cars, PR volume, and system reliability" />
  <psc:chapter start="49:41" title="Uptime, and why startups shouldn’t chase 100%" />
  <psc:chapter start="52:04" title="Can Rails be a home for vibe-coding your first app?" />
  <psc:chapter start="54:35" title="“From prompt to IPO” and the criticality spectrum" />
  <psc:chapter start="57:47" title="Closing: what to worry less about" />
  <psc:chapter start="59:21" title="Outro" />
</psc:chapters>
    <itunes:duration>3582</itunes:duration>
    <itunes:keywords>DHH, Daviid Heinemeier Hansson, Ruby on Rails, Rails, Basecamp 5, 37signals, AI</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>5</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Tom Rossi: Staying as Rails as Possible</itunes:title>
    <title>Tom Rossi: Staying as Rails as Possible</title>
    <itunes:summary><![CDATA[Tom Rossi, co-founder of Higher Pixels and the team behind Buzzsprout, joins Robby to talk about what it really looks like to stay "as Rails as possible", purely out of pragmatism. With over 472,000 podcasts on the platform and a team of fewer than ten people, Tom explains how sticking to vanilla Rails has been the foundation of Buzzsprout's ability to move fast, stay lean, and keep up with a rapidly evolving industry. In this episode, Tom walks through Buzzsprout's migration from Paperclip t...]]></itunes:summary>
    <description><![CDATA[<p>Tom Rossi, co-founder of<a href='https://www.higherpixels.com/'> Higher Pixels</a> and the team behind<a href='https://www.buzzsprout.com/'> Buzzsprout</a>, joins Robby to talk about what it really looks like to stay &quot;as Rails as possible&quot;, purely out of pragmatism. With over 472,000 podcasts on the platform and a team of fewer than ten people, Tom explains how sticking to vanilla Rails has been the foundation of Buzzsprout&apos;s ability to move fast, stay lean, and keep up with a rapidly evolving industry.</p><p>In this episode, Tom walks through Buzzsprout&apos;s migration from Paperclip to Active Storage (including what broke spectacularly in production), their recent shift from hand-rolled summary tables to ClickHouse for analytics, and how Hotwire made building the Buzzsprout mobile app surprisingly manageable. He also shares how Buzzsprout&apos;s real-world scale, including the monkey patching that resulted from it, led directly to contributions back upstream into Rails itself.</p><ul><li>Higher Pixels: https://www.higherpixels.com</li><li>Buzzsprout: https://www.buzzsprout.com</li><li>Buzzsprout Blog: https://www.buzzsprout.com/blog</li><li>Tick (time tracking): https://www.tickspot.com</li><li>Donor Tools: https://www.donortools.com</li><li>StreamCare: https://www.streamcare.com</li><li>Higher Pixels joins the Rails Foundation: https://rubyonrails.org/2025/2/18/higher-pixels-joins-foundation</li></ul><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>Tom Rossi, co-founder of<a href='https://www.higherpixels.com/'> Higher Pixels</a> and the team behind<a href='https://www.buzzsprout.com/'> Buzzsprout</a>, joins Robby to talk about what it really looks like to stay &quot;as Rails as possible&quot;, purely out of pragmatism. With over 472,000 podcasts on the platform and a team of fewer than ten people, Tom explains how sticking to vanilla Rails has been the foundation of Buzzsprout&apos;s ability to move fast, stay lean, and keep up with a rapidly evolving industry.</p><p>In this episode, Tom walks through Buzzsprout&apos;s migration from Paperclip to Active Storage (including what broke spectacularly in production), their recent shift from hand-rolled summary tables to ClickHouse for analytics, and how Hotwire made building the Buzzsprout mobile app surprisingly manageable. He also shares how Buzzsprout&apos;s real-world scale, including the monkey patching that resulted from it, led directly to contributions back upstream into Rails itself.</p><ul><li>Higher Pixels: https://www.higherpixels.com</li><li>Buzzsprout: https://www.buzzsprout.com</li><li>Buzzsprout Blog: https://www.buzzsprout.com/blog</li><li>Tick (time tracking): https://www.tickspot.com</li><li>Donor Tools: https://www.donortools.com</li><li>StreamCare: https://www.streamcare.com</li><li>Higher Pixels joins the Rails Foundation: https://rubyonrails.org/2025/2/18/higher-pixels-joins-foundation</li></ul><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/19156473-tom-rossi-staying-as-rails-as-possible.mp3" length="51289884" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19156473</guid>
    <pubDate>Fri, 15 May 2026 08:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/19156473/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/19156473/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Tom Rossi: Staying as Rails as Possible" />
  <psc:chapter start="0:05" title="– Introduction: Tom Rossi, Buzzsprout, and Higher Pixels" />
  <psc:chapter start="1:19" title="– Why Tom stays on Rails: pragmatism over tech trends" />
  <psc:chapter start="3:18" title="– The value of inheriting Rails&#39; opinions as a founder" />
  <psc:chapter start="4:13" title="– Tom&#39;s Rails origin story: pre-1.0, 2005, and the famous DHH blog video" />
  <psc:chapter start="10:06" title="– Buzzsprout&#39;s scale: 472k podcasts, team size, and the January podcasting spike" />
  <psc:chapter start="12:37" title="– Hiring their first SRE in 2019 and surviving the 2020 podcasting explosion" />
  <psc:chapter start="13:53" title="– Moving to Kubernetes during the pandemic surge" />
  <psc:chapter start="16:13" title="– &quot;As Rails as possible&quot; — what that means in day-to-day decision-making" />
  <psc:chapter start="18:19" title="– Hotwire and building the Buzzsprout mobile app" />
  <psc:chapter start="20:29" title="– App Store companion app battles: avoiding in-app payments entirely" />
  <psc:chapter start="23:13" title="– Contributing back to Rails: the Active Storage immediate variants PR" />
  <psc:chapter start="25:01" title="– The Paperclip to Active Storage migration — and what took down production" />
  <psc:chapter start="27:37" title="– CDN integration and monkey patching Active Storage for public assets" />
  <psc:chapter start="30:44" title="– Audio processing, FFmpeg, and the 600MB WAV file story" />
  <psc:chapter start="33:52" title="– Direct upload to S3 via Active Storage: what you get for free now" />
  <psc:chapter start="35:38" title="– Gems Tom relies on: VCR and keeping the dependency list short" />
  <psc:chapter start="38:57" title="– Payment processing philosophy: owning your stack, not being beholden to vendors" />
  <psc:chapter start="42:17" title="– The mechanics of the Paperclip-to-Active Storage data migration" />
  <psc:chapter start="44:55" title="– RSS feeds, Apple&#39;s aggressive polling, and ETags in Rails" />
  <psc:chapter start="46:37" title="– Collecting analytics since 2014 and the growing data problem" />
  <psc:chapter start="51:02" title="– Introducing ClickHouse and the mental shift to OLAP databases" />
  <psc:chapter start="55:37" title="– How data flows into ClickHouse: bulk inserts over Kafka (for now)" />
  <psc:chapter start="57:23" title="– Multiple databases in Rails: surprisingly simple thanks to Shopify&#39;s contributions" />
  <psc:chapter start="59:59" title="– Staying small intentionally: Rails + AI as a multiplier for tiny teams" />
  <psc:chapter start="1:02:14" title="– The one downside of staying small: timezone coverage for support" />
  <psc:chapter start="1:03:13" title="– Build vs. buy philosophy: owning mission-critical systems" />
  <psc:chapter start="1:04:43" title="– AI inside Buzzsprout: episode titles, show notes, chapter markers, and social copy" />
  <psc:chapter start="1:06:25" title="– Apple&#39;s stranglehold on podcast description length limits" />
  <psc:chapter start="1:08:16" title="– Rails as Buzzsprout&#39;s secret sauce: agility, Solid Cache, Hotwire" />
  <psc:chapter start="1:10:15" title="– Recommended reading: Sandi Metz and the 37signals canon" />
  <psc:chapter start="1:11:47" title="– Closing thoughts: AI as a force multiplier for developers" />
</psc:chapters>
    <itunes:duration>4272</itunes:duration>
    <itunes:keywords>Rails, Ruby on Rails, Buzzsprout, Higher Pixels, Tom Rossi</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>4</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Jason Meller: Rails, Security, and the AI Advantage</itunes:title>
    <title>Jason Meller: Rails, Security, and the AI Advantage</title>
    <itunes:summary><![CDATA[Jason Meller, founder of Kolide (acquired by 1Password in 2023) and now VP of Product at 1Password, joins Robby for a conversation about a career at the intersection of Rails, cybersecurity, and building. They dig into why Rails has become one of the most token-efficient architectures for LLM-assisted development, and why that advantage matters as token costs increasingly shape what's worth building.  Jason also shares what he's learned about keeping developer environments secure as agen...]]></itunes:summary>
    <description><![CDATA[<p><a href='https://www.linkedin.com/in/jason-meller-04498230/'>Jason Meller</a>, founder of Kolide (acquired by 1Password in 2023) and now VP of Product at <a href='https://1password.com/'>1Password</a>, joins Robby for a conversation about a career at the intersection of Rails, cybersecurity, and building.</p><p>They dig into why Rails has become one of the most token-efficient architectures for LLM-assisted development, and why that advantage matters as token costs increasingly shape what&apos;s worth building. </p><p>Jason also shares what he&apos;s learned about keeping developer environments secure as agentic tools become part of everyday workflows, covering 1Password&apos;s open-source SCAM benchmark, how LLMs handle credentials when operating autonomously, and practical steps developers, founders, and engineering leaders can take to stay ahead of it.</p><p><b>Tools &amp; Products</b></p><ul><li>1Password (https://1password.com)</li><li>Kolide (https://kolide.com)</li><li>Cursor (https://cursor.com)</li><li>Claude / Claude Opus by Anthropic (https://anthropic.com/claude)</li><li>OpenAI Codex (https://openai.com)</li><li>Lovable (https://lovable.dev)</li><li>CrowdStrike (https://crowdstrike.com)</li><li>GitLab (https://gitlab.com)</li><li>Oh My Zsh (https://ohmyzsh.sh)</li><li>Wiz (https://wiz.io)</li></ul><p><b>Projects &amp; Benchmarks</b></p><ul><li>SCAM Benchmark by 1Password (https://github.com/1Password/scam)</li><li>OpenClaw (open-source agentic AI tool)</li><li>Honest Security Manifesto (https://honest.security)</li><li>1Password Environments for Developers (https://developer.1password.com/docs/cli/secrets-environment-variables)</li><li>The Rails Foundation (https://rubyonrails.org/foundation)</li></ul><p><b>Books</b></p><ul><li>You Can Stop Stupid: Stopping Losses from Accidental and Malicious Actions by Ira Winkler &amp; Tracy Celaya Brown (https://www.amazon.com/dp/1119566711)</li></ul><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p><a href='https://www.linkedin.com/in/jason-meller-04498230/'>Jason Meller</a>, founder of Kolide (acquired by 1Password in 2023) and now VP of Product at <a href='https://1password.com/'>1Password</a>, joins Robby for a conversation about a career at the intersection of Rails, cybersecurity, and building.</p><p>They dig into why Rails has become one of the most token-efficient architectures for LLM-assisted development, and why that advantage matters as token costs increasingly shape what&apos;s worth building. </p><p>Jason also shares what he&apos;s learned about keeping developer environments secure as agentic tools become part of everyday workflows, covering 1Password&apos;s open-source SCAM benchmark, how LLMs handle credentials when operating autonomously, and practical steps developers, founders, and engineering leaders can take to stay ahead of it.</p><p><b>Tools &amp; Products</b></p><ul><li>1Password (https://1password.com)</li><li>Kolide (https://kolide.com)</li><li>Cursor (https://cursor.com)</li><li>Claude / Claude Opus by Anthropic (https://anthropic.com/claude)</li><li>OpenAI Codex (https://openai.com)</li><li>Lovable (https://lovable.dev)</li><li>CrowdStrike (https://crowdstrike.com)</li><li>GitLab (https://gitlab.com)</li><li>Oh My Zsh (https://ohmyzsh.sh)</li><li>Wiz (https://wiz.io)</li></ul><p><b>Projects &amp; Benchmarks</b></p><ul><li>SCAM Benchmark by 1Password (https://github.com/1Password/scam)</li><li>OpenClaw (open-source agentic AI tool)</li><li>Honest Security Manifesto (https://honest.security)</li><li>1Password Environments for Developers (https://developer.1password.com/docs/cli/secrets-environment-variables)</li><li>The Rails Foundation (https://rubyonrails.org/foundation)</li></ul><p><b>Books</b></p><ul><li>You Can Stop Stupid: Stopping Losses from Accidental and Malicious Actions by Ira Winkler &amp; Tracy Celaya Brown (https://www.amazon.com/dp/1119566711)</li></ul><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/19128572-jason-meller-rails-security-and-the-ai-advantage.mp3" length="51522406" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19128572</guid>
    <pubDate>Wed, 06 May 2026 02:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/19128572/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/19128572/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Introduction" />
  <psc:chapter start="1:31" title="Jason&#39;s Rails Journey: The Merb Merge and Falling in Love with the Framework" />
  <psc:chapter start="3:53" title="Building Kolide and the Honest Security Manifesto" />
  <psc:chapter start="6:17" title="From Solo Founder to 1Password: The Acquisition Story" />
  <psc:chapter start="7:03" title="Rails as a Startup Superpower: Shortcutting the Arguments" />
  <psc:chapter start="8:46" title="Scaling Kolide: Multi-Database Support and Horizontal Scaling" />
  <psc:chapter start="10:04" title="The 30-Line Multi-Tenant Strategy That Went Viral" />
  <psc:chapter start="12:33" title="Selling a Rails App: What Due Diligence Actually Looks Like" />
  <psc:chapter start="15:13" title="Rails at 1Password and Plans for Expansion" />
  <psc:chapter start="16:44" title="Features Per Token: The Rails and AI Advantage" />
  <psc:chapter start="20:52" title="Why More Training Data Isn&#39;t Always Better" />
  <psc:chapter start="28:04" title="How 1Password Is Navigating AI Adoption" />
  <psc:chapter start="32:16" title="LLMs Are a Different Class of Tool" />
  <psc:chapter start="35:14" title="AI as a Commodity: The Electricity Analogy" />
  <psc:chapter start="36:22" title="Architecture Will Define Who Wins the Token Economy" />
  <psc:chapter start="39:34" title="Rejecting the Rails Performance Myth" />
  <psc:chapter start="42:21" title="Tools in Use: Cursor, Claude Opus, and Codex" />
  <psc:chapter start="44:17" title="On Plan Mode and Learning to Trust the LLM" />
  <psc:chapter start="45:21" title="MCP Servers and the Knox Design System" />
  <psc:chapter start="46:30" title="LLMs Are Getting Leaders Back Into the Code" />
  <psc:chapter start="48:15" title="Will Future Engineers Miss the Hard Lessons?" />
  <psc:chapter start="50:00" title="Constraints Are Good: A Warning for LLM-Powered Founders" />
  <psc:chapter start="54:17" title="Why Developers Are Prime Targets for Hackers" />
  <psc:chapter start="55:43" title="LLMs Have Full Access to Your File System" />
  <psc:chapter start="56:53" title="The OpenClaw Incident and the SCAM Benchmark" />
  <psc:chapter start="1:01:57" title="AI Is Making Attacks Cheaper and More Scalable" />
  <psc:chapter start="1:03:27" title="Practical Protection: Code Words and Urgency Awareness" />
  <psc:chapter start="1:05:46" title="1Password&#39;s Environments Feature for Developers" />
  <psc:chapter start="1:07:15" title="Book Recommendation: You Can Stop Stupid" />
  <psc:chapter start="1:10:41" title="Where to Follow Jason" />
  <psc:chapter start="1:11:10" title="Outro" />
</psc:chapters>
    <itunes:duration>4291</itunes:duration>
    <itunes:keywords>Jason Meller, 1Password, AI, Rails, Ruby on Rails</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>3</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Brian Scanlan: Building AI-First at Intercom</itunes:title>
    <title>Brian Scanlan: Building AI-First at Intercom</title>
    <itunes:summary><![CDATA[In this episode of On Rails, Robby is joined by Brian Scanlan, Senior Principal Engineer at Intercom, where a 15-year-old Rails monolith with millions of lines of code sits at the heart of the business. Brian shares how Intercom's philosophy of being "technically conservative" has kept their engineering organization productive and focused on shipping product rather than managing infrastructure complexity, and on Intercom's all-in bet on Claude Code as their singular AI tool, now generating ov...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of On Rails, Robby is joined by <a href='https://www.linkedin.com/in/scanlanb/'><b>Brian Scanlan</b></a>, Senior Principal Engineer at <a href='https://www.intercom.com/'><b>Intercom</b></a>, where a 15-year-old Rails monolith with millions of lines of code sits at the heart of the business.</p><p>Brian shares how Intercom&apos;s philosophy of being &quot;technically conservative&quot; has kept their engineering organization productive and focused on shipping product rather than managing infrastructure complexity, and on Intercom&apos;s all-in bet on <b>Claude Code</b> as their singular AI tool, now generating over 95% of daily code, with over 1,000 weekly users across the company including non-engineers in sales, marketing, and finance. Brian explains their approach to automated code review and PR approvals, how they built a Rails console MCP that lets Claude run production queries (with non-engineers as the top users), their layered plugin and skills architecture, and where AI still falls short in open-ended debugging, using the metaphor of commercial airline pilots who know when to disengage the autopilot.</p><p><b>Tools &amp; Libraries Mentioned</b></p><ul><li>Claude Code — AI coding agent (mandated tool at Intercom) — <a href='https://docs.anthropic.com/en/docs/claude-code/overview'>https://docs.anthropic.com/en/docs/claude-code/overview</a></li><li>Rotoscope — Shopify&apos;s tool for identifying test subsets — <a href='https://github.com/Shopify/rotoscope'>https://github.com/Shopify/rotoscope</a></li><li>Honeycomb — Observability and tracing — <a href='https://www.honeycomb.io/'>https://www.honeycomb.io/</a></li><li>RuboCop — Ruby linting and static analysis — <a href='https://rubocop.org/'>https://rubocop.org/</a></li><li>Snowflake — Cloud data warehouse — <a href='https://www.snowflake.com/'>https://www.snowflake.com/</a></li><li>Datadog — Monitoring and metrics — <a href='https://www.datadoghq.com/'>https://www.datadoghq.com/</a></li><li>GitHub Dependabot — Automated dependency updates — <a href='https://github.com/dependabot'>https://github.com/dependabot</a></li><li>Console1984 — Rails console audit trail gem — <a href='https://github.com/basecamp/console1984'>https://github.com/basecamp/console1984</a></li><li> Playwright — Browser automation (mentioned re: token consumption) — <a href='https://playwright.dev/'>https://playwright.dev/</a></li></ul><p><b>Books Mentioned</b></p><ul><li> Designing Data-Intensive Applications by Martin Kleppmann </li></ul><p><b>Blog Posts Mentioned</b></p><ul><li> Choose Boring Technology by Dan McKinley — <a href='https://mcfunley.com/choose-boring-technology'>https://mcfunley.com/choose-boring-technology</a></li></ul><p><br/></p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of On Rails, Robby is joined by <a href='https://www.linkedin.com/in/scanlanb/'><b>Brian Scanlan</b></a>, Senior Principal Engineer at <a href='https://www.intercom.com/'><b>Intercom</b></a>, where a 15-year-old Rails monolith with millions of lines of code sits at the heart of the business.</p><p>Brian shares how Intercom&apos;s philosophy of being &quot;technically conservative&quot; has kept their engineering organization productive and focused on shipping product rather than managing infrastructure complexity, and on Intercom&apos;s all-in bet on <b>Claude Code</b> as their singular AI tool, now generating over 95% of daily code, with over 1,000 weekly users across the company including non-engineers in sales, marketing, and finance. Brian explains their approach to automated code review and PR approvals, how they built a Rails console MCP that lets Claude run production queries (with non-engineers as the top users), their layered plugin and skills architecture, and where AI still falls short in open-ended debugging, using the metaphor of commercial airline pilots who know when to disengage the autopilot.</p><p><b>Tools &amp; Libraries Mentioned</b></p><ul><li>Claude Code — AI coding agent (mandated tool at Intercom) — <a href='https://docs.anthropic.com/en/docs/claude-code/overview'>https://docs.anthropic.com/en/docs/claude-code/overview</a></li><li>Rotoscope — Shopify&apos;s tool for identifying test subsets — <a href='https://github.com/Shopify/rotoscope'>https://github.com/Shopify/rotoscope</a></li><li>Honeycomb — Observability and tracing — <a href='https://www.honeycomb.io/'>https://www.honeycomb.io/</a></li><li>RuboCop — Ruby linting and static analysis — <a href='https://rubocop.org/'>https://rubocop.org/</a></li><li>Snowflake — Cloud data warehouse — <a href='https://www.snowflake.com/'>https://www.snowflake.com/</a></li><li>Datadog — Monitoring and metrics — <a href='https://www.datadoghq.com/'>https://www.datadoghq.com/</a></li><li>GitHub Dependabot — Automated dependency updates — <a href='https://github.com/dependabot'>https://github.com/dependabot</a></li><li>Console1984 — Rails console audit trail gem — <a href='https://github.com/basecamp/console1984'>https://github.com/basecamp/console1984</a></li><li> Playwright — Browser automation (mentioned re: token consumption) — <a href='https://playwright.dev/'>https://playwright.dev/</a></li></ul><p><b>Books Mentioned</b></p><ul><li> Designing Data-Intensive Applications by Martin Kleppmann </li></ul><p><b>Blog Posts Mentioned</b></p><ul><li> Choose Boring Technology by Dan McKinley — <a href='https://mcfunley.com/choose-boring-technology'>https://mcfunley.com/choose-boring-technology</a></li></ul><p><br/></p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/19060786-brian-scanlan-building-ai-first-at-intercom.mp3" length="80306812" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19060786</guid>
    <pubDate>Wed, 22 Apr 2026 14:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/19060786/transcript" type="text/html" />
    <podcast:transcript url="https://www.buzzsprout.com/2462975/19060786/transcript.json" type="application/json" />
    <podcast:transcript url="https://www.buzzsprout.com/2462975/19060786/transcript.srt" type="application/x-subrip" />
    <podcast:transcript url="https://www.buzzsprout.com/2462975/19060786/transcript.vtt" type="text/vtt" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/19060786/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Introduction" />
  <psc:chapter start="1:12" title="What keeps Brian on Rails" />
  <psc:chapter start="1:19" title="Intercom&#39;s 15-year monolith and &quot;technically conservative&quot; philosophy" />
  <psc:chapter start="2:57" title="Choose Boring Technology: why boring stacks win" />
  <psc:chapter start="4:53" title="Brian&#39;s role: platform engineering at Intercom" />
  <psc:chapter start="8:22" title="How platform teams partner with product engineers" />
  <psc:chapter start="11:03" title="What keeps Brian up at night: AI adoption urgency" />
  <psc:chapter start="13:59" title="When CI blew up: flaky tests and runaway costs" />
  <psc:chapter start="15:19" title="How Rotoscope and test parallelisation helped" />
  <psc:chapter start="18:26" title="Using Honeycomb observability to fix factory bloat" />
  <psc:chapter start="21:07" title="The CTO&#39;s mandate: double engineering throughput with AI" />
  <psc:chapter start="25:27" title="Mandating Claude Code as Intercom&#39;s singular AI tool" />
  <psc:chapter start="27:40" title="What agent-first development actually looks like day-to-day" />
  <psc:chapter start="29:55" title="Local vs. remote agents: where Intercom is today" />
  <psc:chapter start="32:13" title="Code review as the new bottleneck" />
  <psc:chapter start="33:28" title="Auto-approving Dependabot PRs and removing humans from low-value reviews" />
  <psc:chapter start="36:51" title="Training the AI reviewer: &quot;putting manners on the bots&quot;" />
  <psc:chapter start="41:18" title="Rethinking code review in an agent-first world" />
  <psc:chapter start="44:38" title="The skills architecture: base plugin, core skills, team plugins" />
  <psc:chapter start="46:09" title="1,000+ weekly users: non-engineers in sales, marketing, and finance" />
  <psc:chapter start="48:26" title="Session data, telemetry, and the feedback loop" />
  <psc:chapter start="53:29" title="Where AI still fails: open-ended debugging and a Datadog false alarm" />
  <psc:chapter start="57:49" title="The airline pilot metaphor: knowing when to disengage autopilot" />
  <psc:chapter start="1:00:19" title="Vibe coding, agentic entrepreneurs, and maintaining your craft" />
  <psc:chapter start="1:36:14" title="Does Rails hold up in the AI era?" />
  <psc:chapter start="1:37:55" title="Ruby and Rails as LLM-friendly languages" />
  <psc:chapter start="1:41:27" title="Wishlist: an agent-first Rails ecosystem" />
  <psc:chapter start="1:46:36" title="Making docs and APIs agent-friendly" />
  <psc:chapter start="1:49:13" title="Book rec: Designing Data-Intensive Applications" />
  <psc:chapter start="1:51:02" title="Outro" />
</psc:chapters>
    <itunes:duration>6690</itunes:duration>
    <itunes:keywords>AI, Claude Code, Ruby on Rails, Rails, Intercom, Brian Scanlan</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>2</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Simone Carletti: Rails at the Center of DNSimple</itunes:title>
    <title>Simone Carletti: Rails at the Center of DNSimple</title>
    <itunes:summary><![CDATA[In this episode of On Rails, Robby is joined by Simone Carletti, CTO of DNSimple, where Rails has sat at the core of a globally distributed DNS platform since the company launched in 2010. Simone walks through how DNSimple's infrastructure is organized across three primary languages - Ruby on Rails, Go, and Erlang - each chosen deliberately for the role it plays: Rails powering the main application and API, Go handling the zone server, and Erlang running their custom-built name servers. He ex...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of On Rails, Robby is joined by <a href='https://simonecarletti.com/'>Simone Carletti</a>, CTO of <a href='https://dnsimple.com/'>DNSimple</a>, where Rails has sat at the core of a globally distributed DNS platform since the company launched in 2010. Simone walks through how DNSimple&apos;s infrastructure is organized across three primary languages - Ruby on Rails, Go, and Erlang - each chosen deliberately for the role it plays: Rails powering the main application and API, Go handling the zone server, and Erlang running their custom-built name servers. He explains why Rails has remained central even as the platform grew well beyond a typical web app, and what it takes to keep a long-lived codebase healthy with a lean team of around 15 engineers.</p><p><b>Tools &amp; Libraries Mentioned</b></p><p><a href='https://sidekiq.org/'><b>Sidekiq</b></a>: Background job processing (enterprise edition).</p><p><a href='https://rspec.info/'><b>RSpec</b></a>: Testing framework.</p><p><a href='https://github.com/KnapsackPro/knapsack'><b>Knapsack</b></a>: Parallel test suite splitting.</p><p><a href='https://github.com/roidrage/lograge'><b>Lograge</b></a>: Structured JSON logging for Rails.</p><p><a href='https://viewcomponent.org/'><b>ViewComponent</b></a>: Component-based view layer for Rails.</p><p><a href='https://hanamirb.org/'><b>Hanami</b></a>: Ruby web framework, used for portions of the DNSimple API.</p><p><a href='https://www.postgresql.org/'><b>PostgreSQL</b></a>: Primary relational database.</p><p><a href='https://clickhouse.com/'><b>ClickHouse</b></a>: Analytics database for DNS query log processing.</p><p><a href='https://www.erlang.org/'><b>Erlang/OTP</b></a>: Runtime for DNSimple&apos;s custom name server (ErlyDNS).</p><p><a href='https://go.dev/'><b>Go</b></a>: Language powering DNSimple&apos;s zone server.</p><p><a href='https://www.docker.com/'><b>Docker / Docker Compose</b></a>: Used to run the full DNSimple infrastructure stack locally.</p><p><a href='https://www.cursor.com/'><b>Cursor</b></a> / <a href='https://docs.claude.com/en/docs/claude-code/overview'><b>Claude Code</b></a>: AI coding tools adopted across the DNSimple team.</p><p><a href='https://www.terraform.io/'><b>Terraform / Infrastructure as Code</b></a>: Used to manage DNSimple&apos;s own domains and GitHub repositories.</p><p><b>Books Mentioned</b></p><p><a href='https://pragprog.com/titles/elruby/eloquent-ruby/'><b>Eloquent Ruby</b></a> by Russ Olsen</p><p><a href='https://www.informit.com/store/design-patterns-elements-of-reusable-object-oriented-9780201633610'><b>Design Patterns</b></a> (Gang of Four)</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of On Rails, Robby is joined by <a href='https://simonecarletti.com/'>Simone Carletti</a>, CTO of <a href='https://dnsimple.com/'>DNSimple</a>, where Rails has sat at the core of a globally distributed DNS platform since the company launched in 2010. Simone walks through how DNSimple&apos;s infrastructure is organized across three primary languages - Ruby on Rails, Go, and Erlang - each chosen deliberately for the role it plays: Rails powering the main application and API, Go handling the zone server, and Erlang running their custom-built name servers. He explains why Rails has remained central even as the platform grew well beyond a typical web app, and what it takes to keep a long-lived codebase healthy with a lean team of around 15 engineers.</p><p><b>Tools &amp; Libraries Mentioned</b></p><p><a href='https://sidekiq.org/'><b>Sidekiq</b></a>: Background job processing (enterprise edition).</p><p><a href='https://rspec.info/'><b>RSpec</b></a>: Testing framework.</p><p><a href='https://github.com/KnapsackPro/knapsack'><b>Knapsack</b></a>: Parallel test suite splitting.</p><p><a href='https://github.com/roidrage/lograge'><b>Lograge</b></a>: Structured JSON logging for Rails.</p><p><a href='https://viewcomponent.org/'><b>ViewComponent</b></a>: Component-based view layer for Rails.</p><p><a href='https://hanamirb.org/'><b>Hanami</b></a>: Ruby web framework, used for portions of the DNSimple API.</p><p><a href='https://www.postgresql.org/'><b>PostgreSQL</b></a>: Primary relational database.</p><p><a href='https://clickhouse.com/'><b>ClickHouse</b></a>: Analytics database for DNS query log processing.</p><p><a href='https://www.erlang.org/'><b>Erlang/OTP</b></a>: Runtime for DNSimple&apos;s custom name server (ErlyDNS).</p><p><a href='https://go.dev/'><b>Go</b></a>: Language powering DNSimple&apos;s zone server.</p><p><a href='https://www.docker.com/'><b>Docker / Docker Compose</b></a>: Used to run the full DNSimple infrastructure stack locally.</p><p><a href='https://www.cursor.com/'><b>Cursor</b></a> / <a href='https://docs.claude.com/en/docs/claude-code/overview'><b>Claude Code</b></a>: AI coding tools adopted across the DNSimple team.</p><p><a href='https://www.terraform.io/'><b>Terraform / Infrastructure as Code</b></a>: Used to manage DNSimple&apos;s own domains and GitHub repositories.</p><p><b>Books Mentioned</b></p><p><a href='https://pragprog.com/titles/elruby/eloquent-ruby/'><b>Eloquent Ruby</b></a> by Russ Olsen</p><p><a href='https://www.informit.com/store/design-patterns-elements-of-reusable-object-oriented-9780201633610'><b>Design Patterns</b></a> (Gang of Four)</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/18999348-simone-carletti-rails-at-the-center-of-dnsimple.mp3" length="76269520" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-18999348</guid>
    <pubDate>Mon, 13 Apr 2026 09:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/18999348/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/18999348/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Simone Carletti: Rails at the Center of DNSimple" />
  <psc:chapter start="1:13" title="What keeps Simone on Rails — stability, active ecosystem, and avoiding bus factor one" />
  <psc:chapter start="7:10" title="Under the hood — from PowerDNS to building their own name server, ErlyDNS, in Erlang" />
  <psc:chapter start="18:34" title="Three core infrastructure components — the Rails app, the Go zone server, and the Erlang name server" />
  <psc:chapter start="21:11" title="Distributing DNS changes at scale — delta-based propagation across millions of records" />
  <psc:chapter start="23:34" title="The law of physics — cutting machine restart time from 35 minutes to 60 seconds by distributing data to the edge" />
  <psc:chapter start="27:17" title="Rails app architecture — moving from fat controllers to an interactor and service layer pattern" />
  <psc:chapter start="32:11" title="Walking through a domain registration — how a request flows from controller to interactor to service to registry and back" />
  <psc:chapter start="39:02" title="Testing strategy — isolating business logic into testable units and cutting external HTTP calls at the abstraction layer" />
  <psc:chapter start="42:34" title="Local development setup — containerizing the full DNSimple stack after three attempts over 12 years" />
  <psc:chapter start="56:00" title="Shape Up at DNSimple — adapting the methodology for an operational company, including a rotating bench" />
  <psc:chapter start="1:09:25" title="AI adoption across DNSimple — Cursor and Claude Code used beyond the engineering team" />
  <psc:chapter start="1:21:39" title="DNS Sound — the April Fools feature from 2012 that Simone tried to kill and still hasn&#39;t" />
  <psc:chapter start="1:25:36" title="Rails as DNSimple&#39;s secret sauce — the ecosystem, the community, and staying on the edge of the web" />
  <psc:chapter start="1:33:39" title="Scale in numbers — ~72,000 DNS queries per second, ~190 billion per month on the origin network" />
</psc:chapters>
    <itunes:duration>6352</itunes:duration>
    <itunes:keywords>DNSimple, Simone Carletti, Ruby on Rails, </itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>1</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Jay Tennier: How Testing Platform Rainforest QA Tests Itself</itunes:title>
    <title>Jay Tennier: How Testing Platform Rainforest QA Tests Itself</title>
    <itunes:summary><![CDATA[In this episode of On Rails, Robby is joined by Jay Tennier, Engineering Manager at Rainforest QA, where he's spent over seven years working across a long-lived Rails monolith and supporting services. They explore how Rainforest maintains their platform with a small team, and the practical decisions that come with that reality. Jay shares lessons from pulling microservices back into the monolith, why they wrap third-party services in adapters, and how they push analytics work to BigQuery inst...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of On Rails, Robby is joined by<a href='https://www.linkedin.com/in/jaytennier/'> Jay Tennier</a>, Engineering Manager at <a href='https://www.rainforestqa.com/'>Rainforest QA</a>, where he&apos;s spent over seven years working across a long-lived Rails monolith and supporting services. They explore how Rainforest maintains their platform with a small team, and the practical decisions that come with that reality. Jay shares lessons from pulling microservices back into the monolith, why they wrap third-party services in adapters, and how they push analytics work to BigQuery instead of straining their Rails database. The conversation covers testing philosophy including &quot;wet tests&quot; over DRY abstractions, using dry-monads for complex service flows, and how celebrating code deletion has become part of their engineering culture.</p><p><b>Social + Web Presence</b></p><p>LinkedIn: https://www.linkedin.com/in/jaytennier/<br/>GitHub: https://github.com/jaytennie/ </p><p>Twitter/X: https://x.com/jaytennier<br/>Bluesky: https://bsky.app/profile/jaytennier.bsky.social</p><p><b>Company/Org Links</b></p><p>Homepage: https://www.rainforestqa.com/</p><p><b>Tools &amp; Libraries Mentioned<br/></b><a href='https://guides.rubyonrails.org/active_record_basics.html'><b>Active Record</b></a><b>:</b> Rails ORM.  </p><p><a href='https://cloud.google.com/bigquery'><b>BigQuery</b></a><b>: </b>Hosted analytics warehouse.  </p><p><a href='https://cube.dev/'><b>Cube.js</b></a><b>: </b>API layer for querying analytics data.  </p><p><a href='https://dry-rb.org/gems/dry-monads/'><b>DRY-Monads</b></a><b>:</b> Structured success/failure flow.  </p><p><a href='https://github.com/thoughtbot/factory_bot'><b>FactoryBot</b></a>: Test data factories.  </p><p><a href='https://github.com/ruby-grape/grape'><b>Grape</b></a>: Ruby API framework.</p><p><a href='https://github.com/bensheldon/good_job'><b>GoodJob</b></a>: Background job processor.  </p><p><a href='https://github.com/rainforestapp/queue_classic'><b>Q Classic</b></a>: DB-backed job queue.   </p><p><a href='https://redash.io/'><b>Redash</b></a>: SQL-based dashboards and reporting.  </p><p><a href='https://rspec.info/'><b>RSpec</b></a>: Rails testing framework.  </p><p><a href='https://react.dev/'><b>React</b></a>: Front-end application framework.  </p><p><a href='https://haml.info/'><b>Haml</b></a>: Legacy templating engine.  </p><p><a href='https://segment.com/'><b>Segment</b></a><b> </b>/ <a href='https://mixpanel.com/'><b>Mixpanel</b></a>: Event tracking pipelines.</p><p><b>Books Mentioned</b></p><p><a href='https://pragprog.com/titles/agcr/confident-ruby/'><b>Confident Ruby</b></a> by Avdi Grimm  </p><p><a href='https://pragprog.com/titles/agrexc/exceptional-ruby/'><b>Exceptional Ruby</b></a> by Avdi Grimm  </p><p><a href='https://www.informit.com/store/working-effectively-with-legacy-code-9780131177055'><b>Working Effectively with Legacy Code</b></a> by Michael Feathers </p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of On Rails, Robby is joined by<a href='https://www.linkedin.com/in/jaytennier/'> Jay Tennier</a>, Engineering Manager at <a href='https://www.rainforestqa.com/'>Rainforest QA</a>, where he&apos;s spent over seven years working across a long-lived Rails monolith and supporting services. They explore how Rainforest maintains their platform with a small team, and the practical decisions that come with that reality. Jay shares lessons from pulling microservices back into the monolith, why they wrap third-party services in adapters, and how they push analytics work to BigQuery instead of straining their Rails database. The conversation covers testing philosophy including &quot;wet tests&quot; over DRY abstractions, using dry-monads for complex service flows, and how celebrating code deletion has become part of their engineering culture.</p><p><b>Social + Web Presence</b></p><p>LinkedIn: https://www.linkedin.com/in/jaytennier/<br/>GitHub: https://github.com/jaytennie/ </p><p>Twitter/X: https://x.com/jaytennier<br/>Bluesky: https://bsky.app/profile/jaytennier.bsky.social</p><p><b>Company/Org Links</b></p><p>Homepage: https://www.rainforestqa.com/</p><p><b>Tools &amp; Libraries Mentioned<br/></b><a href='https://guides.rubyonrails.org/active_record_basics.html'><b>Active Record</b></a><b>:</b> Rails ORM.  </p><p><a href='https://cloud.google.com/bigquery'><b>BigQuery</b></a><b>: </b>Hosted analytics warehouse.  </p><p><a href='https://cube.dev/'><b>Cube.js</b></a><b>: </b>API layer for querying analytics data.  </p><p><a href='https://dry-rb.org/gems/dry-monads/'><b>DRY-Monads</b></a><b>:</b> Structured success/failure flow.  </p><p><a href='https://github.com/thoughtbot/factory_bot'><b>FactoryBot</b></a>: Test data factories.  </p><p><a href='https://github.com/ruby-grape/grape'><b>Grape</b></a>: Ruby API framework.</p><p><a href='https://github.com/bensheldon/good_job'><b>GoodJob</b></a>: Background job processor.  </p><p><a href='https://github.com/rainforestapp/queue_classic'><b>Q Classic</b></a>: DB-backed job queue.   </p><p><a href='https://redash.io/'><b>Redash</b></a>: SQL-based dashboards and reporting.  </p><p><a href='https://rspec.info/'><b>RSpec</b></a>: Rails testing framework.  </p><p><a href='https://react.dev/'><b>React</b></a>: Front-end application framework.  </p><p><a href='https://haml.info/'><b>Haml</b></a>: Legacy templating engine.  </p><p><a href='https://segment.com/'><b>Segment</b></a><b> </b>/ <a href='https://mixpanel.com/'><b>Mixpanel</b></a>: Event tracking pipelines.</p><p><b>Books Mentioned</b></p><p><a href='https://pragprog.com/titles/agcr/confident-ruby/'><b>Confident Ruby</b></a> by Avdi Grimm  </p><p><a href='https://pragprog.com/titles/agrexc/exceptional-ruby/'><b>Exceptional Ruby</b></a> by Avdi Grimm  </p><p><a href='https://www.informit.com/store/working-effectively-with-legacy-code-9780131177055'><b>Working Effectively with Legacy Code</b></a> by Michael Feathers </p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/18317355-jay-tennier-how-testing-platform-rainforest-qa-tests-itself.mp3" length="72091893" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-18317355</guid>
    <pubDate>Tue, 09 Dec 2025 06:00:00 -0500</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/18317355/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/18317355/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Intro and welcome to Jay from Rainforest QA" />
  <psc:chapter start="1:12" title="What keeps Jay &quot;On Rails&quot; since version 0.13" />
  <psc:chapter start="4:52" title="Overview of Rainforest QA&#39;s platform and architecture" />
  <psc:chapter start="14:40" title="React frontend in separate repo and API strategy" />
  <psc:chapter start="22:28" title="Team size evolution: from 40+ engineers down to 7" />
  <psc:chapter start="25:35" title="Failed experiments and the dry-monads pattern" />
  <psc:chapter start="32:25" title="Data retention policies and deprovisioning clients" />
  <psc:chapter start="36:01" title="Lessons from pulling microservices back into the monolith" />
  <psc:chapter start="41:39" title="Building adapter layers for third-party services" />
  <psc:chapter start="57:42" title="Testing philosophy: preferring &quot;wet tests&quot; over DRY" />
  <psc:chapter start="1:08:54" title="Pushing analytics to BigQuery instead of Rails" />
  <psc:chapter start="1:17:31" title="When to sunset services and delete code" />
  <psc:chapter start="1:24:01" title="Transitioning into management and supporting the team" />
  <psc:chapter start="1:32:47" title="Is Rails part of Rainforest&#39;s secret sauce?" />
  <psc:chapter start="1:37:14" title="Book recommendations and where to follow Jay&#39;s work" />
</psc:chapters>
    <itunes:duration>6003</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>10</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Kayla Reopelle: What Your Rails App Is Trying To Tell You</itunes:title>
    <title>Kayla Reopelle: What Your Rails App Is Trying To Tell You</title>
    <itunes:summary><![CDATA[In this episode of On Rails, Robby is joined by Kayla Reopelle, a lead software engineer at New Relic, where she works on both the Ruby Agent and OpenTelemetry RubyGems. They explore what observability means for Rails developers—not just as a debugging tool, but as a way to build clearer, more reliable systems. Kayla explains OpenTelemetry's vendor-agnostic approach to instrumentation and shares practical ways to experiment with traces, metrics, and logs in both production and local developme...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of On Rails, Robby is joined by <a href='https://www.linkedin.com/in/kaylareopelle/'>Kayla Reopelle,</a> a lead software engineer at <a href='https://newrelic.com/'>New Relic</a>, where she works on both the Ruby Agent and OpenTelemetry RubyGems. They explore what observability means for Rails developers—not just as a debugging tool, but as a way to build clearer, more reliable systems. Kayla explains OpenTelemetry&apos;s vendor-agnostic approach to instrumentation and shares practical ways to experiment with traces, metrics, and logs in both production and local development.</p><p>GitHub: <a href='https://github.com/kaylareopelle'>https://github.com/kaylareopelle</a> </p><p><br/></p><p><b>🧰 Tools &amp; Libraries Mentioned</b></p><p><a href='https://api.rubyonrails.org/classes/ActiveSupport/Notifications.html'><b>ActiveSupport::Notifications</b></a><b>:</b> Rails’ pub/sub API used for instrumentation.<br/><a href='https://appsignal.com/'><b>AppSignal</b></a><b>:</b> Rails-friendly APM and error tracking.<br/><a href='https://docs.aws.amazon.com/xray/'><b>AWS X-Ray</b></a><b>:</b> Distributed tracing for AWS services.<br/><a href='https://www.datadoghq.com/'><b>Datadog</b></a><b>:</b> Full-stack observability platform.<br/><a href='https://github.com/open-telemetry/opentelemetry-proto/tree/main/opentelemetry/proto/profiles'><b>Elastics Profiling Spec</b></a><b>:</b> Donated profiling format for OpenTelemetry.<br/><a href='https://grafana.com/'><b>Grafana</b></a><b>: </b>Open-source dashboards and visualization.<br/><a href='https://www.honeybadger.io/'><b>Honeybadger </b></a><b>:</b> Error monitoring for Ruby apps.<br/><a href='https://www.jaegertracing.io/'><b>Jaeger</b></a><b>:</b> Distributed tracing system (CNCF).<br/><a href='https://github.com/newrelic/newrelic-ruby-agent'><b>New Relic Ruby Agent</b></a><b>:</b> APM agent for Ruby and Rails.<br/><a href='https://opentelemetry.io/docs/specs/otel/metrics/'><b>ObservableGauge (OTel Metrics)</b></a><b>:</b> Async gauge for snapshots like queue size.<br/><a href='https://opentelemetry.io/docs/collector/'><b>OpenTelemetry Collector</b></a><b>:</b> Pipeline for receiving and exporting telemetry data.<br/><a href='https://github.com/open-telemetry/opentelemetry-ruby/tree/main/instrumentation/logger'><b>OpenTelemetry Logger Bridge</b></a><b>:</b> Sends Ruby logger output to OTEL.<br/><a href='https://github.com/open-telemetry/opentelemetry-ruby'><b>OpenTelemetry Ruby</b></a><b>:</b> Vendor-agnostic telemetry for Ruby.<br/><a href='https://github.com/open-telemetry/community#special-interest-groups'><b>OpenTelemetry Ruby SIG</b></a><b>:</b> Community group maintaining OTEL Ruby.<br/><a href='https://prometheus.io/'><b>Prometheus</b></a><b>:</b> Metrics collection and storage.<br/><a href='https://github.com/rack/rack'><b>Rack Middleware</b></a><b>: </b>Web middleware stack used in many Rails instrumentations.<br/><a href='https://github.com/rails/rails/pull/51188'><b>Rails Structured Logging / Event Reporter</b></a><b>:</b> Structured logs built into Rails.<br/><a href='https://github.com/reidmorrison/semantic_logger'><b>Semantic Logger</b></a><b>:</b> Structured logging for Ruby &amp; Rails.<br/><a href='https://github.com/stripe/stripe-ruby'><b>Stripe Ruby Gem</b></a><b>:</b> Payments client used as an instrumentation analogy.<br/><a href='https://opentelemetry.io/docs/specs/otel/metrics/'><b>UpDownCounter (OTel Metrics)</b></a><b>:</b> Counter for tracking active jobs.</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of On Rails, Robby is joined by <a href='https://www.linkedin.com/in/kaylareopelle/'>Kayla Reopelle,</a> a lead software engineer at <a href='https://newrelic.com/'>New Relic</a>, where she works on both the Ruby Agent and OpenTelemetry RubyGems. They explore what observability means for Rails developers—not just as a debugging tool, but as a way to build clearer, more reliable systems. Kayla explains OpenTelemetry&apos;s vendor-agnostic approach to instrumentation and shares practical ways to experiment with traces, metrics, and logs in both production and local development.</p><p>GitHub: <a href='https://github.com/kaylareopelle'>https://github.com/kaylareopelle</a> </p><p><br/></p><p><b>🧰 Tools &amp; Libraries Mentioned</b></p><p><a href='https://api.rubyonrails.org/classes/ActiveSupport/Notifications.html'><b>ActiveSupport::Notifications</b></a><b>:</b> Rails’ pub/sub API used for instrumentation.<br/><a href='https://appsignal.com/'><b>AppSignal</b></a><b>:</b> Rails-friendly APM and error tracking.<br/><a href='https://docs.aws.amazon.com/xray/'><b>AWS X-Ray</b></a><b>:</b> Distributed tracing for AWS services.<br/><a href='https://www.datadoghq.com/'><b>Datadog</b></a><b>:</b> Full-stack observability platform.<br/><a href='https://github.com/open-telemetry/opentelemetry-proto/tree/main/opentelemetry/proto/profiles'><b>Elastics Profiling Spec</b></a><b>:</b> Donated profiling format for OpenTelemetry.<br/><a href='https://grafana.com/'><b>Grafana</b></a><b>: </b>Open-source dashboards and visualization.<br/><a href='https://www.honeybadger.io/'><b>Honeybadger </b></a><b>:</b> Error monitoring for Ruby apps.<br/><a href='https://www.jaegertracing.io/'><b>Jaeger</b></a><b>:</b> Distributed tracing system (CNCF).<br/><a href='https://github.com/newrelic/newrelic-ruby-agent'><b>New Relic Ruby Agent</b></a><b>:</b> APM agent for Ruby and Rails.<br/><a href='https://opentelemetry.io/docs/specs/otel/metrics/'><b>ObservableGauge (OTel Metrics)</b></a><b>:</b> Async gauge for snapshots like queue size.<br/><a href='https://opentelemetry.io/docs/collector/'><b>OpenTelemetry Collector</b></a><b>:</b> Pipeline for receiving and exporting telemetry data.<br/><a href='https://github.com/open-telemetry/opentelemetry-ruby/tree/main/instrumentation/logger'><b>OpenTelemetry Logger Bridge</b></a><b>:</b> Sends Ruby logger output to OTEL.<br/><a href='https://github.com/open-telemetry/opentelemetry-ruby'><b>OpenTelemetry Ruby</b></a><b>:</b> Vendor-agnostic telemetry for Ruby.<br/><a href='https://github.com/open-telemetry/community#special-interest-groups'><b>OpenTelemetry Ruby SIG</b></a><b>:</b> Community group maintaining OTEL Ruby.<br/><a href='https://prometheus.io/'><b>Prometheus</b></a><b>:</b> Metrics collection and storage.<br/><a href='https://github.com/rack/rack'><b>Rack Middleware</b></a><b>: </b>Web middleware stack used in many Rails instrumentations.<br/><a href='https://github.com/rails/rails/pull/51188'><b>Rails Structured Logging / Event Reporter</b></a><b>:</b> Structured logs built into Rails.<br/><a href='https://github.com/reidmorrison/semantic_logger'><b>Semantic Logger</b></a><b>:</b> Structured logging for Ruby &amp; Rails.<br/><a href='https://github.com/stripe/stripe-ruby'><b>Stripe Ruby Gem</b></a><b>:</b> Payments client used as an instrumentation analogy.<br/><a href='https://opentelemetry.io/docs/specs/otel/metrics/'><b>UpDownCounter (OTel Metrics)</b></a><b>:</b> Counter for tracking active jobs.</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/18215229-kayla-reopelle-what-your-rails-app-is-trying-to-tell-you.mp3" length="44795877" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-18215229</guid>
    <pubDate>Wed, 19 Nov 2025 08:00:00 -0500</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/18215229/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/18215229/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Intro and welcome to Kayla from New Relic" />
  <psc:chapter start="1:12" title="What keeps Kayla &quot;On Rails&quot; and working in observability" />
  <psc:chapter start="6:14" title="Defining observability: unknown unknowns vs known unknowns" />
  <psc:chapter start="8:08" title="Signs your system might be trying to tell you something" />
  <psc:chapter start="11:17" title="What is OpenTelemetry for Ruby developers" />
  <psc:chapter start="13:42" title="Where Ruby fits in the broader OpenTelemetry project" />
  <psc:chapter start="20:40" title="Using OpenTelemetry locally while developing features" />
  <psc:chapter start="24:13" title="How ActiveSupport notifications power Rails observability" />
  <psc:chapter start="28:42" title="Open source tools like Jaeger and Prometheus for local visibility" />
  <psc:chapter start="30:58" title="Testing instrumentation itself and CI monitoring" />
  <psc:chapter start="38:17" title="Using feature flags to control data collection" />
  <psc:chapter start="49:43" title="Making sense of background jobs with metrics" />
  <psc:chapter start="53:50" title="Capturing logs in context with traces and spans" />
  <psc:chapter start="1:00:09" title="Book recommendations and getting involved with OpenTelemetry" />
</psc:chapters>
    <itunes:duration>3729</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Miguel Conde &amp; Peter Compernolle: Inside Gusto’s Rails Biolith</itunes:title>
    <title>Miguel Conde &amp; Peter Compernolle: Inside Gusto’s Rails Biolith</title>
    <itunes:summary><![CDATA[In this episode of On Rails, Robby is joined by Miguel Conde and Peter Compernolle from Gusto, where they work on a "biolith"—two distinct Rails monoliths serving 600+ engineers. Peter leads the HIPAA-compliant benefits domain, while Miguel is extracting the time product from the main monolith. They explore how Gusto identifies boundaries, manages temporal data, handles eventual consistency, and navigates the trade-offs of GraphQL federation.  🧰 Tools &amp; Libraries Mentioned ActiveAdmin: Ad...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of On Rails, Robby is joined by <a href='https://www.linkedin.com/in/miguelconde/'>Miguel Conde</a> and <a href='https://www.linkedin.com/in/petercompernolle/'>Peter Compernolle</a> from <a href='https://gusto.com/'>Gusto</a>, where they work on a &quot;biolith&quot;—two distinct Rails monoliths serving 600+ engineers. Peter leads the HIPAA-compliant benefits domain, while Miguel is extracting the time product from the main monolith. They explore how Gusto identifies boundaries, manages temporal data, handles eventual consistency, and navigates the trade-offs of GraphQL federation.</p><p><br/>🧰 <b>Tools &amp; Libraries Mentioned</b></p><p><a href='https://activeadmin.info/'><b>ActiveAdmin</b></a><b>:</b> Admin UI for Rails.</p><p><a href='https://github.com/Envek/after_commit_everywhere'><b>after_commit_everywhere</b></a><b>: </b>Run code after commits.</p><p><a href='https://www.datadoghq.com/'><b>Datadog</b></a><b>:</b> App and CI/CD observability.</p><p><a href='https://github.com/thoughtbot/factory_bot'><b>FactoryBot</b></a><b>:</b> Build test data.</p><p><a href='https://graphql.org/'><b>GraphQL</b></a><b>:</b> API layer for SPAs.</p><p><a href='https://kafka.apache.org/'><b>Kafka</b></a><b>:</b> Event streaming backbone.</p><p><a href='https://github.com/Shopify/packwerk'><b>Packwerk</b></a><b>:</b> Enforce boundaries in monoliths.</p><p><a href='https://github.com/paper-trail-gem/paper_trail'><b>PaperTrail</b></a><b>:</b> Model change auditing.</p><p><a href='https://react.dev/'><b>React</b></a><b>: </b>Front-end framework.</p><p><a href='https://sidekiq.org/'><b>Sidekiq</b></a><b>:</b> Background job processing.</p><p><a href='https://sorbet.org/'><b>Sorbet</b></a><b>:</b> Gradual Ruby types.</p><p><a href='https://www.typescriptlang.org/'><b>TypeScript</b></a><b>: </b>Typed JavaScript.</p><p><a href='https://github.com/Gusto/explicit_activerecord'><b>explicit_activerecord</b></a><b>:</b> Guard writes to models.</p><p><a href='https://www.rubykoans.com/'><b>Ruby Koans</b></a><b>: </b>Learn Ruby by practice.</p><p><a href='https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850'><b>Cracking the Coding Interview</b></a><b>: </b>Interview prep book.</p><p><a href='https://engineering.gusto.com/'><b>Gusto Engineering Blog</b></a><b>:</b> Posts from Gusto engineers.</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of On Rails, Robby is joined by <a href='https://www.linkedin.com/in/miguelconde/'>Miguel Conde</a> and <a href='https://www.linkedin.com/in/petercompernolle/'>Peter Compernolle</a> from <a href='https://gusto.com/'>Gusto</a>, where they work on a &quot;biolith&quot;—two distinct Rails monoliths serving 600+ engineers. Peter leads the HIPAA-compliant benefits domain, while Miguel is extracting the time product from the main monolith. They explore how Gusto identifies boundaries, manages temporal data, handles eventual consistency, and navigates the trade-offs of GraphQL federation.</p><p><br/>🧰 <b>Tools &amp; Libraries Mentioned</b></p><p><a href='https://activeadmin.info/'><b>ActiveAdmin</b></a><b>:</b> Admin UI for Rails.</p><p><a href='https://github.com/Envek/after_commit_everywhere'><b>after_commit_everywhere</b></a><b>: </b>Run code after commits.</p><p><a href='https://www.datadoghq.com/'><b>Datadog</b></a><b>:</b> App and CI/CD observability.</p><p><a href='https://github.com/thoughtbot/factory_bot'><b>FactoryBot</b></a><b>:</b> Build test data.</p><p><a href='https://graphql.org/'><b>GraphQL</b></a><b>:</b> API layer for SPAs.</p><p><a href='https://kafka.apache.org/'><b>Kafka</b></a><b>:</b> Event streaming backbone.</p><p><a href='https://github.com/Shopify/packwerk'><b>Packwerk</b></a><b>:</b> Enforce boundaries in monoliths.</p><p><a href='https://github.com/paper-trail-gem/paper_trail'><b>PaperTrail</b></a><b>:</b> Model change auditing.</p><p><a href='https://react.dev/'><b>React</b></a><b>: </b>Front-end framework.</p><p><a href='https://sidekiq.org/'><b>Sidekiq</b></a><b>:</b> Background job processing.</p><p><a href='https://sorbet.org/'><b>Sorbet</b></a><b>:</b> Gradual Ruby types.</p><p><a href='https://www.typescriptlang.org/'><b>TypeScript</b></a><b>: </b>Typed JavaScript.</p><p><a href='https://github.com/Gusto/explicit_activerecord'><b>explicit_activerecord</b></a><b>:</b> Guard writes to models.</p><p><a href='https://www.rubykoans.com/'><b>Ruby Koans</b></a><b>: </b>Learn Ruby by practice.</p><p><a href='https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850'><b>Cracking the Coding Interview</b></a><b>: </b>Interview prep book.</p><p><a href='https://engineering.gusto.com/'><b>Gusto Engineering Blog</b></a><b>:</b> Posts from Gusto engineers.</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/18061147-miguel-conde-peter-compernolle-inside-gusto-s-rails-biolith.mp3" length="66697216" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-18061147</guid>
    <pubDate>Mon, 03 Nov 2025 11:00:00 -0500</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/18061147/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/18061147/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Intro and welcome to Miguel and Peter from Gusto" />
  <psc:chapter start="1:08" title="What keeps them &quot;On Rails&quot; and Rails&#39; speed advantage" />
  <psc:chapter start="2:51" title="The &quot;biolith&quot; setup and HIPAA compliance separation" />
  <psc:chapter start="7:55" title="Working in the larger monolith versus benefits app" />
  <psc:chapter start="10:15" title="Identifying boundaries when extracting services" />
  <psc:chapter start="11:28" title="How Packwerk helps define and detect dependencies" />
  <psc:chapter start="13:47" title="Why Sorbet transformed Packwerk&#39;s usefulness" />
  <psc:chapter start="21:49" title="Enforcing boundaries Rails doesn&#39;t give by default" />
  <psc:chapter start="26:56" title="Making Active Record models private with Explicit Active Record" />
  <psc:chapter start="34:47" title="Rethinking database normalization and snapshots" />
  <psc:chapter start="39:34" title="Temporal and bi-temporal data for audit trails" />
  <psc:chapter start="46:45" title="Company Pool system for scrubbed production data" />
  <psc:chapter start="1:06:10" title="How GraphQL federation affects service boundaries" />
  <psc:chapter start="1:12:20" title="Rails as a Formula One car: fast but tricky with weight" />
  <psc:chapter start="1:29:57" title="Book recommendations and learning by building" />
</psc:chapters>
    <itunes:duration>5554</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>8</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Alexander Stathis: Scaling a Modular Rails Monolith at AngelList</itunes:title>
    <title>Alexander Stathis: Scaling a Modular Rails Monolith at AngelList</title>
    <itunes:summary><![CDATA[In this episode of On Rails, Robby is joined by Alexander Stathis, a Principal Software Engineer at AngelList, where Rails powers complex investment, accounting, and banking business logic across a modular monolith structure. They explore how AngelList maintains conceptual boundaries in their codebase, uses gradual typing to influence their Ruby style away from Rails “magic,” and why they’ve adopted multiple async job solutions for different types of work rather than seeking a one-size-fits-a...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of On Rails, Robby is joined by <a href='https://www.linkedin.com/in/alexstathis/'>Alexander Stathis</a>, a Principal Software Engineer at <a href='https://www.angellist.com/'>AngelList</a>, where Rails powers complex investment, accounting, and banking business logic across a modular monolith structure. They explore how AngelList maintains conceptual boundaries in their codebase, uses gradual typing to influence their Ruby style away from Rails “magic,” and why they’ve adopted multiple async job solutions for different types of work rather than seeking a one-size-fits-all approach. Alex shares insights on consolidating microservices back into their monolith, creating the Boba gem to extend type generation capabilities, using production data subsetting tools for local development, and successfully onboarding engineers without Rails experience in under a month while staying current on Ruby 3.4 and Rails 7.2.</p><p><b>Tools &amp; Libraries Mentioned</b></p><p><a href='https://guides.rubyonrails.org/active_job_basics.html'><b>Active Job</b></a> – Framework-agnostic job API built into Rails.</p><p><a href='https://asdf-vm.com/'><b>ASDF</b></a> – Tool version manager.</p><p><a href='https://github.com/angellist/boba'><b>Boba</b></a> – AngelList’s Sorbet compiler extension.</p><p><a href='https://github.com/collectiveidea/delayed_job'><b>Delayed Job</b></a> – Database-backed job processor.</p><p><a href='https://github.com/thoughtbot/factory_bot'><b>FactoryBot</b></a> – Test data builder.</p><p><a href='https://github.com/bensheldon/good_job'><b>GoodJob</b></a> – Postgres-backed Active Job processor.</p><p><a href='https://github.com/exAspArk/batch-loader'><b>GraphQL Batch Loader</b></a> – Batching utility for GraphQL.</p><p><a href='https://github.com/rmosolgo/graphql-ruby'><b>GraphQL Ruby</b></a> – Ruby GraphQL implementation.</p><p><a href='https://linear.app/'><b>Linear</b></a> – Issue tracking tool.</p><p><a href='https://github.com/RubyMoney/money'><b>Money</b></a> – currency handling library.</p><p><a href='https://github.com/Shopify/packwerk'><b>Packwerk</b></a> – Shopify’s modular boundary enforcement tool.</p><p><a href='https://github.com/thoughtbot/paperclip'><b>Paperclip</b></a> – Legacy file attachment gem for Rails (deprecated).</p><p><a href='https://rspec.info/'><b>RSpec</b></a> – Ruby testing framework.</p><p><a href='https://sidekiq.org/'><b>Sidekiq</b></a> – Redis-backed job framework.</p><p><a href='https://github.com/rails/solid_queue'><b>Solid Queue</b></a> – Rails 8 Active Job adapter.</p><p><a href='https://sorbet.org/'><b>Sorbet</b></a> – Gradual static type checker for Ruby.</p><p><a href='https://github.com/state-machines/state_machines'><b>State Machines</b></a> – Finite state machine support.</p><p><a href='https://github.com/Shopify/tapioca'><b>Tapioca</b></a> – Sorbet RBI file generator.</p><p><a href='https://temporal.io/'><b>Temporal</b></a> – Workflow orchestration system.</p><p><a href='https://www.tonic.ai/'><b>Tonic</b></a> – De-identified datasets platform.</p><p><a href='https://staffeng.com/book'><b>Will Larson – </b><b><em>Staff Engineer</em></b></a> – Book exploring technical leadership</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of On Rails, Robby is joined by <a href='https://www.linkedin.com/in/alexstathis/'>Alexander Stathis</a>, a Principal Software Engineer at <a href='https://www.angellist.com/'>AngelList</a>, where Rails powers complex investment, accounting, and banking business logic across a modular monolith structure. They explore how AngelList maintains conceptual boundaries in their codebase, uses gradual typing to influence their Ruby style away from Rails “magic,” and why they’ve adopted multiple async job solutions for different types of work rather than seeking a one-size-fits-all approach. Alex shares insights on consolidating microservices back into their monolith, creating the Boba gem to extend type generation capabilities, using production data subsetting tools for local development, and successfully onboarding engineers without Rails experience in under a month while staying current on Ruby 3.4 and Rails 7.2.</p><p><b>Tools &amp; Libraries Mentioned</b></p><p><a href='https://guides.rubyonrails.org/active_job_basics.html'><b>Active Job</b></a> – Framework-agnostic job API built into Rails.</p><p><a href='https://asdf-vm.com/'><b>ASDF</b></a> – Tool version manager.</p><p><a href='https://github.com/angellist/boba'><b>Boba</b></a> – AngelList’s Sorbet compiler extension.</p><p><a href='https://github.com/collectiveidea/delayed_job'><b>Delayed Job</b></a> – Database-backed job processor.</p><p><a href='https://github.com/thoughtbot/factory_bot'><b>FactoryBot</b></a> – Test data builder.</p><p><a href='https://github.com/bensheldon/good_job'><b>GoodJob</b></a> – Postgres-backed Active Job processor.</p><p><a href='https://github.com/exAspArk/batch-loader'><b>GraphQL Batch Loader</b></a> – Batching utility for GraphQL.</p><p><a href='https://github.com/rmosolgo/graphql-ruby'><b>GraphQL Ruby</b></a> – Ruby GraphQL implementation.</p><p><a href='https://linear.app/'><b>Linear</b></a> – Issue tracking tool.</p><p><a href='https://github.com/RubyMoney/money'><b>Money</b></a> – currency handling library.</p><p><a href='https://github.com/Shopify/packwerk'><b>Packwerk</b></a> – Shopify’s modular boundary enforcement tool.</p><p><a href='https://github.com/thoughtbot/paperclip'><b>Paperclip</b></a> – Legacy file attachment gem for Rails (deprecated).</p><p><a href='https://rspec.info/'><b>RSpec</b></a> – Ruby testing framework.</p><p><a href='https://sidekiq.org/'><b>Sidekiq</b></a> – Redis-backed job framework.</p><p><a href='https://github.com/rails/solid_queue'><b>Solid Queue</b></a> – Rails 8 Active Job adapter.</p><p><a href='https://sorbet.org/'><b>Sorbet</b></a> – Gradual static type checker for Ruby.</p><p><a href='https://github.com/state-machines/state_machines'><b>State Machines</b></a> – Finite state machine support.</p><p><a href='https://github.com/Shopify/tapioca'><b>Tapioca</b></a> – Sorbet RBI file generator.</p><p><a href='https://temporal.io/'><b>Temporal</b></a> – Workflow orchestration system.</p><p><a href='https://www.tonic.ai/'><b>Tonic</b></a> – De-identified datasets platform.</p><p><a href='https://staffeng.com/book'><b>Will Larson – </b><b><em>Staff Engineer</em></b></a> – Book exploring technical leadership</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/17978596-alexander-stathis-scaling-a-modular-rails-monolith-at-angellist.mp3" length="64010236" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-17978596</guid>
    <pubDate>Tue, 21 Oct 2025 10:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/17978596/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/17978596/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Intro and Welcome to Alexander from AngelList" />
  <psc:chapter start="0:53" title="What keeps Alex “On Rails” and Active Record’s appeal" />
  <psc:chapter start="2:28" title="AngelList’s architechure: monolith, engines, and microservives" />
  <psc:chapter start="5:03" title="Consolidating a microservice back into the monolith" />
  <psc:chapter start="9:15" title="Using Packwerk to maintain conceptual boundaries" />
  <psc:chapter start="12:10" title="Avoiding Rails “magic” and Callback Hell" />
  <psc:chapter start="14:30" title="Service layer approach and thin controllers" />
  <psc:chapter start="23:22" title="Why AngelList needs multiple async job solutions" />
  <psc:chapter start="35:58" title="How Sorbet influences Ruby coding style" />
  <psc:chapter start="45:28" title="Creating the Boba gem for better type generation" />
  <psc:chapter start="53:46" title="GraphQL vs REST and preventing N+1 queries" />
  <psc:chapter start="1:06:14" title="Setting up local dev with production data subsetting" />
  <psc:chapter start="1:23:26" title="Hiring engineers without Rails experience" />
  <psc:chapter start="1:27:03" title="Book recommendations and where to find Alex online" />
</psc:chapters>
    <itunes:duration>5331</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>7</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Florent Beaurain: Optimizing Rails Tests at Doctolib Scale</itunes:title>
    <title>Florent Beaurain: Optimizing Rails Tests at Doctolib Scale</title>
    <itunes:summary><![CDATA[In this episode of On Rails, Robby is joined by Florent Beaurain, a longtime Rails engineer at Doctolib, home to one of the largest Rails monoliths in Europe with over 3 million lines of code and 400+ engineers. They explore how Doctolib’s team tackled massive test suite performance issues, including cutting one engine’s test time from seven minutes to under one minute. Florent shares insights from managing 84,000 tests, scaling across 10 PostgreSQL databases, and maintaining Rails upgrades a...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of On Rails, Robby is joined by <a href='https://www.linkedin.com/in/beauraf/'>Florent Beaurain</a>, a longtime Rails engineer at <a href='https://www.doctolib.fr/'>Doctolib</a>, home to one of the largest Rails monoliths in Europe with over 3 million lines of code and 400+ engineers. They explore how Doctolib’s team tackled massive test suite performance issues, including cutting one engine’s test time from seven minutes to under one minute. Florent shares insights from managing 84,000 tests, scaling across 10 PostgreSQL databases, and maintaining Rails upgrades across a fast-moving organization using systematic approaches like dual-boot deployments and careful backporting strategies.<br/> <br/> Tools &amp; Libraries Mentioned</p><ul><li><a href='https://aws.amazon.com/rds/aurora/postgresql/'>AWS Aurora (PostgreSQL)</a> – Production database platform, scaled to 10+ writers and 15+ readers.</li><li><a href='https://github.com/teamcapybara/capybara'>Capybara</a> – End-to-end testing of UI flows in the monolith.</li><li><a href='https://github.com/makandra/capybara-lockstep'>Capybara Lockstep</a> –JavaScript sync layer reducing flakiness in React-driven feature specs.</li><li><a href='https://www.datadoghq.com/'>Datadog</a> – Application performance monitoring for production systems.</li><li><a href='https://www.docker.com/'>Docker</a> – Local PostgreSQL and other data stores.</li><li><a href='https://github.com/thoughtbot/factory_bot'>FactoryBot</a> – Identified as a major performance bottleneck in large test suites.</li><li><a href='https://github.com/Shopify/factory_fixtures'>factory_fixtures</a> – Shopify gem extending fixtures with inline factory-style overrides. </li><li><a href='https://github.com/features/copilot'>GitHub Copilot</a> – Workflow automation and onboarding support.</li><li><a href='https://devcenter.heroku.com/articles/heroku-ci'>Heroku CI</a> – Previously used for parallelized CI builds before moving to custom infrastructure.</li><li><a href='https://www.jenkins.io/'>Jenkins</a> – Original CI platform before scaling up to more powerful infrastructure.</li><li><a href='https://github.com/minitest/minitest'>Minitest</a> – Primary test framework, used throughout the monolith with some extensions.</li><li><a href='https://github.com/Shopify/packwerk'>Packwerk</a> – Used to modularize their monolith into engines with explicit boundaries and dependency declarations. </li><li><a href='https://www.postgresql.org/'>PostgreSQL</a> – Core relational database behind their production and local environments.</li><li><a href='https://react.dev/'>React</a> – Primary frontend framework, integrated into the Rails monolith via a single-page app architecture. </li><li><a href='https://rubyonrails.org/'>Ruby on Rails</a> – The framework behind Doctolib’s 3-million-line monolith and most of their core product infrastructure.</li><li><a href='https://github.com/doctolib/safe-pg-migrations'>safe-pg-migrations</a> – Tool to reduce downtime risks during large-scale schema changes.</li><li><a href='https://sentry.io/'>Sentry</a> – Error tracking and visibility tool integrated into their release workflow.</li><li><a href='https://webpack.js.org/configuration/dev-server/'>Webpack Dev Server</a> – Used locally to support React development alongside the Rails app.</li></ul><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of On Rails, Robby is joined by <a href='https://www.linkedin.com/in/beauraf/'>Florent Beaurain</a>, a longtime Rails engineer at <a href='https://www.doctolib.fr/'>Doctolib</a>, home to one of the largest Rails monoliths in Europe with over 3 million lines of code and 400+ engineers. They explore how Doctolib’s team tackled massive test suite performance issues, including cutting one engine’s test time from seven minutes to under one minute. Florent shares insights from managing 84,000 tests, scaling across 10 PostgreSQL databases, and maintaining Rails upgrades across a fast-moving organization using systematic approaches like dual-boot deployments and careful backporting strategies.<br/> <br/> Tools &amp; Libraries Mentioned</p><ul><li><a href='https://aws.amazon.com/rds/aurora/postgresql/'>AWS Aurora (PostgreSQL)</a> – Production database platform, scaled to 10+ writers and 15+ readers.</li><li><a href='https://github.com/teamcapybara/capybara'>Capybara</a> – End-to-end testing of UI flows in the monolith.</li><li><a href='https://github.com/makandra/capybara-lockstep'>Capybara Lockstep</a> –JavaScript sync layer reducing flakiness in React-driven feature specs.</li><li><a href='https://www.datadoghq.com/'>Datadog</a> – Application performance monitoring for production systems.</li><li><a href='https://www.docker.com/'>Docker</a> – Local PostgreSQL and other data stores.</li><li><a href='https://github.com/thoughtbot/factory_bot'>FactoryBot</a> – Identified as a major performance bottleneck in large test suites.</li><li><a href='https://github.com/Shopify/factory_fixtures'>factory_fixtures</a> – Shopify gem extending fixtures with inline factory-style overrides. </li><li><a href='https://github.com/features/copilot'>GitHub Copilot</a> – Workflow automation and onboarding support.</li><li><a href='https://devcenter.heroku.com/articles/heroku-ci'>Heroku CI</a> – Previously used for parallelized CI builds before moving to custom infrastructure.</li><li><a href='https://www.jenkins.io/'>Jenkins</a> – Original CI platform before scaling up to more powerful infrastructure.</li><li><a href='https://github.com/minitest/minitest'>Minitest</a> – Primary test framework, used throughout the monolith with some extensions.</li><li><a href='https://github.com/Shopify/packwerk'>Packwerk</a> – Used to modularize their monolith into engines with explicit boundaries and dependency declarations. </li><li><a href='https://www.postgresql.org/'>PostgreSQL</a> – Core relational database behind their production and local environments.</li><li><a href='https://react.dev/'>React</a> – Primary frontend framework, integrated into the Rails monolith via a single-page app architecture. </li><li><a href='https://rubyonrails.org/'>Ruby on Rails</a> – The framework behind Doctolib’s 3-million-line monolith and most of their core product infrastructure.</li><li><a href='https://github.com/doctolib/safe-pg-migrations'>safe-pg-migrations</a> – Tool to reduce downtime risks during large-scale schema changes.</li><li><a href='https://sentry.io/'>Sentry</a> – Error tracking and visibility tool integrated into their release workflow.</li><li><a href='https://webpack.js.org/configuration/dev-server/'>Webpack Dev Server</a> – Used locally to support React development alongside the Rails app.</li></ul><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/17891804-florent-beaurain-optimizing-rails-tests-at-doctolib-scale.mp3" length="56330400" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-17891804</guid>
    <pubDate>Tue, 07 Oct 2025 05:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/17891804/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/17891804/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Florent Beaurain: Optimizing Rails Tests at Doctolib Scale" />
  <psc:chapter start="4:56" title="Doctolib’s CI suite runs 84,000+ tests per commit, using over 130 CPU hours" />
  <psc:chapter start="7:38" title=" Scaling test infrastructure with 45-minute pipelines, test selection, and parallel servers" />
  <psc:chapter start="10:31" title="Improving local dev experience by letting engineers run isolated engine tests" />
  <psc:chapter start="12:47" title="Database resets and factories identified as key bottlenecks for test performance" />
  <psc:chapter start="14:23" title="Switching to transactional tests and revisiting fixtures to align with Rails defaults" />
  <psc:chapter start="18:44" title="Dropping one engine’s test time from 7 minutes to under 1 minute" />
  <psc:chapter start="25:50" title="Migrating 90% of the codebase to a faster testing framework in three months" />
  <psc:chapter start="31:03" title="Using Packwerk to modularize the monolith—why zero dependency engines are a myth" />
  <psc:chapter start="36:14" title=" Leveraging AI to automate cleanup tasks and support onboarding" />
  <psc:chapter start="43:20" title="Hitting AWS Aurora scaling limits with 10 Postgres writers and 15 readers each" />
  <psc:chapter start="50:15" title="Avoiding downtime with multi-step database migrations and rollback strategies" />
  <psc:chapter start="52:11" title="Staying current with Rails via dual-booting, CI-driven development, and upstream tracking" />
  <psc:chapter start="56:37" title="Advice for smaller teams upgrading Rails: read the source code and start small" />
  <psc:chapter start="1:06:23" title=" Managing 20,000 end-to-end tests with retry logic and Capybara Lockstep" />
  <psc:chapter start="1:10:35" title="Using internal CLI tool (dctl) to streamline local setup and staging access" />
</psc:chapters>
    <itunes:duration>4689</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>6</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Hilary Stohs-Krause: Scaling Rails with Small Wins</itunes:title>
    <title>Hilary Stohs-Krause: Scaling Rails with Small Wins</title>
    <itunes:summary><![CDATA[In this episode of On Rails, Robby is joined by Hilary Stohs-Krause, a Senior Software Engineer at Red Canary. They explore how engineering teams approach everyday performance work, from small Active Record optimizations to larger architectural decisions. Hilary shares insights from Red Canary's journey switching from React to Rails' native Hotwire stack, how her team tackled flaky test failures that were slowing down continuous deployments, and some strong opinions about custom linters.   🧰 ...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of <em>On Rails</em>, Robby is joined by<a href='https://www.linkedin.com/in/hilary-stohs-krause/'> Hilary Stohs-Krause</a>, a Senior Software Engineer at<a href='https://redcanary.com/'> Red Canary</a>. They explore how engineering teams approach everyday performance work, from small Active Record optimizations to larger architectural decisions. Hilary shares insights from Red Canary&apos;s journey switching from React to Rails&apos; native Hotwire stack, how her team tackled flaky test failures that were slowing down continuous deployments, and some strong opinions about custom linters.</p><p><br/></p><p>🧰 Tools, Libraries, and Books Mentioned</p><ul><li><a href='https://github.com/rubocop/rubocop'><b>RuboCop</b></a> – Enforces Ruby style and conventions, with support for custom cops.</li><li><a href='https://github.com/sds/haml-lint'><b>haml-lint</b></a> – Linter for HAML templates to enforce consistent view code.</li><li><a href='https://eslint.org/'><b>ESLint</b></a> – JavaScript linter used for maintaining consistent code quality, especially in React.</li><li><a href='https://github.com/hadolint/hadolint'><b>HadoLint</b></a> – Linter for Dockerfiles to catch common issues and enforce best practices.</li><li><a href='https://github.com/natritmeyer/site_prism'><b>SitePrism</b></a> – Page-object model DSL for Capybara to reduce flaky system tests.</li><li><a href='https://sidekiq.org/'><b>Sidekiq</b></a> – Background job processor used in production Rails environments.</li><li><a href='https://turbo.hotwired.dev/'><b>Turbo</b></a> – Part of the Hotwire stack for reactive updates without full-page reloads.</li><li><a href='https://stimulus.hotwired.dev/'><b>Stimulus</b></a> – Lightweight JavaScript framework for enhancing HTML with small interactions.</li><li><a href='https://hotwired.dev/'><b>Hotwire</b></a> – A set of tools (Turbo + Stimulus) for building modern web apps without heavy JavaScript.</li><li><a href='https://www.penguinrandomhouse.com/books/552885/thinking-in-bets-by-annie-duke/'><b>Thinking in Bets</b></a> – A book about better decision-making under uncertainty, by Annie Duke.</li></ul><p><br/></p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of <em>On Rails</em>, Robby is joined by<a href='https://www.linkedin.com/in/hilary-stohs-krause/'> Hilary Stohs-Krause</a>, a Senior Software Engineer at<a href='https://redcanary.com/'> Red Canary</a>. They explore how engineering teams approach everyday performance work, from small Active Record optimizations to larger architectural decisions. Hilary shares insights from Red Canary&apos;s journey switching from React to Rails&apos; native Hotwire stack, how her team tackled flaky test failures that were slowing down continuous deployments, and some strong opinions about custom linters.</p><p><br/></p><p>🧰 Tools, Libraries, and Books Mentioned</p><ul><li><a href='https://github.com/rubocop/rubocop'><b>RuboCop</b></a> – Enforces Ruby style and conventions, with support for custom cops.</li><li><a href='https://github.com/sds/haml-lint'><b>haml-lint</b></a> – Linter for HAML templates to enforce consistent view code.</li><li><a href='https://eslint.org/'><b>ESLint</b></a> – JavaScript linter used for maintaining consistent code quality, especially in React.</li><li><a href='https://github.com/hadolint/hadolint'><b>HadoLint</b></a> – Linter for Dockerfiles to catch common issues and enforce best practices.</li><li><a href='https://github.com/natritmeyer/site_prism'><b>SitePrism</b></a> – Page-object model DSL for Capybara to reduce flaky system tests.</li><li><a href='https://sidekiq.org/'><b>Sidekiq</b></a> – Background job processor used in production Rails environments.</li><li><a href='https://turbo.hotwired.dev/'><b>Turbo</b></a> – Part of the Hotwire stack for reactive updates without full-page reloads.</li><li><a href='https://stimulus.hotwired.dev/'><b>Stimulus</b></a> – Lightweight JavaScript framework for enhancing HTML with small interactions.</li><li><a href='https://hotwired.dev/'><b>Hotwire</b></a> – A set of tools (Turbo + Stimulus) for building modern web apps without heavy JavaScript.</li><li><a href='https://www.penguinrandomhouse.com/books/552885/thinking-in-bets-by-annie-duke/'><b>Thinking in Bets</b></a> – A book about better decision-making under uncertainty, by Annie Duke.</li></ul><p><br/></p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/17742159-hilary-stohs-krause-scaling-rails-with-small-wins.mp3" length="63143872" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-17742159</guid>
    <pubDate>Mon, 01 Sep 2025 04:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/17742159/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/17742159/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Intro and welcome" />
  <psc:chapter start="1:00" title="What keeps Hilary &quot;On Rails&quot; and the Ruby community&#39;s impact" />
  <psc:chapter start="3:46" title="Hiring junior developers in today&#39;s market" />
  <psc:chapter start="5:27" title="Red Canary&#39;s deliberate approach to bringing on jumior talent" />
  <psc:chapter start="13:06" title="Creating safety and documentation for new developers" />
  <psc:chapter start="17:55" title="Who&#39;s responsible for performance in Rails application" />
  <psc:chapter start="21:30" title="The performance difference between size, length, and count" />
  <psc:chapter start="27:48" title="Caching strategies and trade-offs for different customer sizes" />
  <psc:chapter start="32:44" title="Using logging data to understand actual user behavior" />
  <psc:chapter start="41:15" title="Establishing coding standards with RuboCop and custom cops" />
  <psc:chapter start="48:16" title="How Red Canary monitors and addresses performance issues" />
  <psc:chapter start="57:42" title="The decision to migrate from React to Turbo and Stimulus" />
  <psc:chapter start="1:09:46" title="Pattern drift and getting team buy-in for standards" />
  <psc:chapter start="1:15:45" title="Why anyone can champion cleanup efforts, not just seniors" />
  <psc:chapter start="1:25:02" title="Books that influence decision-making in engineering" />
</psc:chapters>
    <itunes:duration>5258</itunes:duration>
    <itunes:keywords>#rails, #rubyonrails, #webdev, #tech, #RedCanary</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>5</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Ryan Stawarz &amp; Austin Story: Inside Doximity’s 15-Year Rails Monolith</itunes:title>
    <title>Ryan Stawarz &amp; Austin Story: Inside Doximity’s 15-Year Rails Monolith</title>
    <itunes:summary><![CDATA[In this episode of On Rails, Robby is joined by Ryan Stawarz and Austin Story from Doximity, where Ruby on Rails has powered the core of their platform for over 15 years. The trio digs into how a single Rails monolith has evolved to support 100+ engineers and a mobile-first experience for millions of healthcare professionals. From front-end framework migrations to API architecture, they explore the real-world decisions required to keep a large Rails app resilient and fast-moving. Ryan and Aus...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of <em>On Rails</em>, Robby is joined by <a href='https://www.linkedin.com/in/ryanstawarz/'>Ryan Stawarz</a> and <a href='https://www.linkedin.com/in/rubyprogramming'>Austin Story</a> from <a href='https://engineering.doximity.com/'>Doximity</a>, where Ruby on Rails has powered the core of their platform for over 15 years. The trio digs into how a single <a href='https://rubyonrails.org/'>Rails</a> monolith has evolved to support 100+ engineers and a mobile-first experience for millions of healthcare professionals. From front-end framework migrations to API architecture, they explore the real-world decisions required to keep a large Rails app resilient and fast-moving.</p><p>Ryan and Austin walk us through the team’s adoption of <a href='https://graphql.org/'>GraphQL</a>, what led them to introduce <a href='https://www.apollographql.com/docs/federation/'>GraphQL Federation</a>, and how they balance speed with reliability when scaling APIs across domains. They talk about the tradeoffs of maintaining both GraphQL and REST, and how Doximity avoids N+1 query pitfalls using <a href='https://github.com/exAspArk/batch-loader'>BatchLoader</a>. The conversation also touches on the evolution of their front-end—from Backbone to <a href='https://vuejs.org/'>Vue.js</a>—and why Rails’ flexibility still gives them an edge.</p><p>Throughout the episode, they share pragmatic insights into debugging at scale, managing one-off data migrations, and determining when a service should live inside or outside the monolith. They also reflect on their use of tools like <a href='https://github.com/Shopify/packwerk'>Packwerk</a>, <a href='https://anycable.io/'>AnyCable</a>, and <a href='https://github.com/departurerb/departure'>Departure</a>, and how a culture of trust, documentation, and lightweight planning helps Doximity move fast without breaking things.</p><p><b>🧰 Tools &amp; Libraries Mentioned</b></p><p>- <a href='https://rubyonrails.org/'>Ruby on Rails</a> – The web framework powering Doximity’s monolith and many of their services.  </p><p>- <a href='https://graphql-ruby.org/'>GraphQL-Ruby</a> – Ruby gem for building GraphQL APIs in Rails.  </p><p>- <a href='https://github.com/exAspArk/batch-loader'>BatchLoader</a>– Helps reduce N+1 queries in GraphQL.  </p><p>- <a href='https://vuejs.org/'>Vue.js</a> – Their chosen frontend framework for building single-page applications.  </p><p>- <a href='https://github.com/Shopify/packwerk'>Packwerk</a> – Helps enforce modular boundaries in their Rails monolith.  </p><p>- <a href='https://github.com/departurerb/departure'>Departure</a> – Used for safe database migrations on large datasets.  </p><p>- <a href='https://github.com/rails/thor'>Thor</a> – Used to run one-off CLI scripts with easier testability.  </p><p>- <a href='https://github.com/doximity/rake_ui'>rake-ui</a> – Internal tool for triggering Rake tasks via a web UI.  </p><p>- <a href='https://anycable.io/'>AnyCable</a> – Go-based replacement for ActionCable to support realtime features at scale.  </p><p>- <a href='https://www.docker.com/'>Docker</a> – Powers consistent local dev and containerized environments.  </p><p>- <a href='https://firebase.google.com/'>Firebase</a> – Used for push notifications in mobile apps.  </p><p><br/></p><p><br/></p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of <em>On Rails</em>, Robby is joined by <a href='https://www.linkedin.com/in/ryanstawarz/'>Ryan Stawarz</a> and <a href='https://www.linkedin.com/in/rubyprogramming'>Austin Story</a> from <a href='https://engineering.doximity.com/'>Doximity</a>, where Ruby on Rails has powered the core of their platform for over 15 years. The trio digs into how a single <a href='https://rubyonrails.org/'>Rails</a> monolith has evolved to support 100+ engineers and a mobile-first experience for millions of healthcare professionals. From front-end framework migrations to API architecture, they explore the real-world decisions required to keep a large Rails app resilient and fast-moving.</p><p>Ryan and Austin walk us through the team’s adoption of <a href='https://graphql.org/'>GraphQL</a>, what led them to introduce <a href='https://www.apollographql.com/docs/federation/'>GraphQL Federation</a>, and how they balance speed with reliability when scaling APIs across domains. They talk about the tradeoffs of maintaining both GraphQL and REST, and how Doximity avoids N+1 query pitfalls using <a href='https://github.com/exAspArk/batch-loader'>BatchLoader</a>. The conversation also touches on the evolution of their front-end—from Backbone to <a href='https://vuejs.org/'>Vue.js</a>—and why Rails’ flexibility still gives them an edge.</p><p>Throughout the episode, they share pragmatic insights into debugging at scale, managing one-off data migrations, and determining when a service should live inside or outside the monolith. They also reflect on their use of tools like <a href='https://github.com/Shopify/packwerk'>Packwerk</a>, <a href='https://anycable.io/'>AnyCable</a>, and <a href='https://github.com/departurerb/departure'>Departure</a>, and how a culture of trust, documentation, and lightweight planning helps Doximity move fast without breaking things.</p><p><b>🧰 Tools &amp; Libraries Mentioned</b></p><p>- <a href='https://rubyonrails.org/'>Ruby on Rails</a> – The web framework powering Doximity’s monolith and many of their services.  </p><p>- <a href='https://graphql-ruby.org/'>GraphQL-Ruby</a> – Ruby gem for building GraphQL APIs in Rails.  </p><p>- <a href='https://github.com/exAspArk/batch-loader'>BatchLoader</a>– Helps reduce N+1 queries in GraphQL.  </p><p>- <a href='https://vuejs.org/'>Vue.js</a> – Their chosen frontend framework for building single-page applications.  </p><p>- <a href='https://github.com/Shopify/packwerk'>Packwerk</a> – Helps enforce modular boundaries in their Rails monolith.  </p><p>- <a href='https://github.com/departurerb/departure'>Departure</a> – Used for safe database migrations on large datasets.  </p><p>- <a href='https://github.com/rails/thor'>Thor</a> – Used to run one-off CLI scripts with easier testability.  </p><p>- <a href='https://github.com/doximity/rake_ui'>rake-ui</a> – Internal tool for triggering Rake tasks via a web UI.  </p><p>- <a href='https://anycable.io/'>AnyCable</a> – Go-based replacement for ActionCable to support realtime features at scale.  </p><p>- <a href='https://www.docker.com/'>Docker</a> – Powers consistent local dev and containerized environments.  </p><p>- <a href='https://firebase.google.com/'>Firebase</a> – Used for push notifications in mobile apps.  </p><p><br/></p><p><br/></p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/17653501-ryan-stawarz-austin-story-inside-doximity-s-15-year-rails-monolith.mp3" length="51811002" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-17653501</guid>
    <pubDate>Tue, 12 Aug 2025 05:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/17653501/transcript" type="text/html" />
    <podcast:chapters url="https://www.buzzsprout.com/2462975/17653501/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Ryan Stawarz &amp; Austin Story: Inside Doximity’s 15-Year Rails Monolith" />
  <psc:chapter start="1:20" title="What keeps Ryan and Austin “On Rails”  " />
  <psc:chapter start="6:48" title="Why Doximity still relies on a Rails monolith at scale " />
  <psc:chapter start="10:10" title="The early decision to adopt GraphQL in a Rails codebase" />
  <psc:chapter start="14:25" title="How Docs Tasks help generate realistic data for debugging" />
  <psc:chapter start="17:40" title="GraphQL Federation and simplifying deploy complexity " />
  <psc:chapter start="21:05" title="Lessons from working with gRPC and REST alongside GraphQL" />
  <psc:chapter start="25:20" title="Choosing Vue.js for frontend development in a large Rails app" />
  <psc:chapter start="32:40" title="Using Packwerk to define boundaries in the Rails monolith" />
  <psc:chapter start="36:45" title="How Doximity balances experimentation and architectural clarity" />
  <psc:chapter start="41:15" title="Real-time Rails with ActionCable and AnyCable " />
  <psc:chapter start="44:10" title="Internal tools that shape how engineering works at scale" />
  <psc:chapter start="47:30" title="How the `departure` gem enables safer DB migrations " />
  <psc:chapter start="54:25" title="Advice for smaller Rails teams dealing with scale" />
  <psc:chapter start="1:08:30" title="Favorite engineering books and closing reflections" />
</psc:chapters>
    <itunes:duration>4314</itunes:duration>
    <itunes:keywords>#rails, #rubyonrails, #webdev, #tech, #doximity</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>4</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Nadia Odunayo &amp; Scaling Rails for Millions of Users as a Solo Dev</itunes:title>
    <title>Nadia Odunayo &amp; Scaling Rails for Millions of Users as a Solo Dev</title>
    <itunes:summary><![CDATA[In this episode of On Rails, Nadia Odunayo, founder and solo developer of The StoryGraph, joins us to share what it really takes to build and maintain a Rails application used by over four million readers across web and mobile. We discuss lessons from launching a PWA, shifting to Turbo Native for cross-platform support, and navigating challenges like in-app purchases and data syncing between systems. Nadia also talks about the bold decision to move from Heroku to YugabyteDB to support growing...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of <em>On Rails</em>, <a href='https://www.linkedin.com/in/nodunayo/'>Nadia Odunayo</a>, founder and solo developer of <a href='https://thestorygraph.com'>The StoryGraph</a>, joins us to share what it really takes to build and maintain a Rails application used by over four million readers across web and mobile.</p><p>We discuss lessons from launching a PWA, shifting to <a href='https://turbo.hotwired.dev/handbook/native'>Turbo Native</a> for cross-platform support, and navigating challenges like in-app purchases and data syncing between systems. Nadia also talks about the bold decision to move from Heroku to <a href='https://www.yugabyte.com/'>YugabyteDB</a> to support growing workloads, and why she decided against hiring a team to manage it.</p><p>We also explore what it means to remain a solo developer by choice, the value of the Rails community, and why <a href='https://rubyonrails.org'>Ruby on Rails</a> continues to be the framework that powers her entire business. </p><p><b>Platforms &amp; Distribution</b></p><ul><li><a href='https://thestorygraph.com/'>The StoryGraph</a> – Nadia’s solo-built reading and book tracking platform </li><li><a href='https://apps.apple.com/us/app/the-storygraph/id1565176753'>Apple App Store – The StoryGraph</a></li><li><a href='https://play.google.com/store/apps/details?id=com.thestorygraph.thestorygraph'>Google Play Store – StoryGraph</a> </li><li><a href='https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps'>Progressive Web Apps (MDN)</a> – Alternative mobile delivery method initially explored</li></ul><p><b>Tools, Libraries &amp; Services</b></p><ul><li><a href='https://rubyonrails.org'>Ruby on Rails</a> – The primary framework powering<a href='https://thestorygraph.com'> The StoryGraph</a> </li><li><a href='https://turbo.hotwired.dev/handbook/native'>Turbo / Hotwire Native</a> – Used to support mobile apps with shared Rails backend </li><li><a href='https://github.com/heartcombo/devise'>Devise (GitHub)</a> – Authentication library for Rails </li><li><a href='https://sidekiq.org'>Sidekiq</a> – Background job processor </li><li><a href='https://github.com/instacart/makara'>Makara (GitHub)</a> – Database proxy for master/replica load splitting </li><li><a href='https://www.heroku.com'>Heroku</a> – Former hosting platform for The StoryGraph </li><li><a href='https://www.yugabyte.com'>YugabyteDB</a> – Postgres-compatible distributed database chosen for scaling </li><li><a href='https://www.postgresql.org/docs/current/queries-with.html'>CTEs (Common Table Expressions)</a> – Used for optimizing queries across distributed data</li><li><a href='https://linear.app/'>Linear</a> – Project management tool currently used by Nadia</li></ul><p><b>Books</b></p><ul><li><a href='https://pragprog.com/titles/psruby/ruby-under-a-microscope/'><em>Ruby Under a Microscope</em> by Pat Shaughnessy</a> – A deep dive into Ruby internals </li></ul><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of <em>On Rails</em>, <a href='https://www.linkedin.com/in/nodunayo/'>Nadia Odunayo</a>, founder and solo developer of <a href='https://thestorygraph.com'>The StoryGraph</a>, joins us to share what it really takes to build and maintain a Rails application used by over four million readers across web and mobile.</p><p>We discuss lessons from launching a PWA, shifting to <a href='https://turbo.hotwired.dev/handbook/native'>Turbo Native</a> for cross-platform support, and navigating challenges like in-app purchases and data syncing between systems. Nadia also talks about the bold decision to move from Heroku to <a href='https://www.yugabyte.com/'>YugabyteDB</a> to support growing workloads, and why she decided against hiring a team to manage it.</p><p>We also explore what it means to remain a solo developer by choice, the value of the Rails community, and why <a href='https://rubyonrails.org'>Ruby on Rails</a> continues to be the framework that powers her entire business. </p><p><b>Platforms &amp; Distribution</b></p><ul><li><a href='https://thestorygraph.com/'>The StoryGraph</a> – Nadia’s solo-built reading and book tracking platform </li><li><a href='https://apps.apple.com/us/app/the-storygraph/id1565176753'>Apple App Store – The StoryGraph</a></li><li><a href='https://play.google.com/store/apps/details?id=com.thestorygraph.thestorygraph'>Google Play Store – StoryGraph</a> </li><li><a href='https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps'>Progressive Web Apps (MDN)</a> – Alternative mobile delivery method initially explored</li></ul><p><b>Tools, Libraries &amp; Services</b></p><ul><li><a href='https://rubyonrails.org'>Ruby on Rails</a> – The primary framework powering<a href='https://thestorygraph.com'> The StoryGraph</a> </li><li><a href='https://turbo.hotwired.dev/handbook/native'>Turbo / Hotwire Native</a> – Used to support mobile apps with shared Rails backend </li><li><a href='https://github.com/heartcombo/devise'>Devise (GitHub)</a> – Authentication library for Rails </li><li><a href='https://sidekiq.org'>Sidekiq</a> – Background job processor </li><li><a href='https://github.com/instacart/makara'>Makara (GitHub)</a> – Database proxy for master/replica load splitting </li><li><a href='https://www.heroku.com'>Heroku</a> – Former hosting platform for The StoryGraph </li><li><a href='https://www.yugabyte.com'>YugabyteDB</a> – Postgres-compatible distributed database chosen for scaling </li><li><a href='https://www.postgresql.org/docs/current/queries-with.html'>CTEs (Common Table Expressions)</a> – Used for optimizing queries across distributed data</li><li><a href='https://linear.app/'>Linear</a> – Project management tool currently used by Nadia</li></ul><p><b>Books</b></p><ul><li><a href='https://pragprog.com/titles/psruby/ruby-under-a-microscope/'><em>Ruby Under a Microscope</em> by Pat Shaughnessy</a> – A deep dive into Ruby internals </li></ul><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/17575580-nadia-odunayo-scaling-rails-for-millions-of-users-as-a-solo-dev.mp3" length="39050873" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-17575580</guid>
    <pubDate>Mon, 28 Jul 2025 11:00:00 -0400</pubDate>
    <podcast:chapters url="https://www.buzzsprout.com/2462975/17575580/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Nadia Odunayo &amp; Scaling Rails for Millions of Users as a Solo Dev" />
  <psc:chapter start="1:00" title="Why Nadia has stayed with Rails since her bootcamp days" />
  <psc:chapter start="7:00" title="Leaning on Rails gems and ecosystem to accelerate solo development" />
  <psc:chapter start="8:20" title="How Turbo enabled Nadia to build for web, iOS, and Android as one developer" />
  <psc:chapter start="9:00" title="Why the PWA approach didn’t work out—and the shift to app stores" />
  <psc:chapter start="13:11" title="Solving the challenge of reconciling in-app purchases with Rails user accounts" />
  <psc:chapter start="14:53" title="Building trust with users during long development sprints" />
  <psc:chapter start="16:07" title="60% of StoryGraph users are on mobile apps, with Android leading" />
  <psc:chapter start="19:40" title="What it took to scale StoryGraph to four million users" />
  <psc:chapter start="22:20" title="Migrating from Postgres to Yugabyte for horizontal scalability" />
  <psc:chapter start="27:10" title="Why Nadia continues to run StoryGraph as a solo developer" />
  <psc:chapter start="33:00" title="Evolving the infrastructure and moving off of Heroku" />
  <psc:chapter start="45:30" title="Nadia’s perspective on Rails as a “one-person framework”" />
</psc:chapters>
    <itunes:duration>3250</itunes:duration>
    <itunes:keywords>#rails, #rubyonrails, #webdev, #tech, #TurboNative, #mobileapps, #Storygraph #solodev</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>3</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Jean Boussier &amp; IO-Bound Misconceptions</itunes:title>
    <title>Jean Boussier &amp; IO-Bound Misconceptions</title>
    <itunes:summary><![CDATA[Jean Boussier, Senior Staff Engineer at Shopify and member of the Rails Core team, joins Robby to dig into the performance realities behind modern Rails apps. They explore what it means to be IO-bound or CPU-bound, how Ruby’s Global VM Lock affects concurrency, and why "fast" is too vague to be useful. Jean explains why instrumentation is often the missing piece and shares thoughtful approaches to using background jobs with intention. They also talk about gem dependencies. The gems in your `G...]]></itunes:summary>
    <description><![CDATA[<p>Jean Boussier, Senior Staff Engineer at <a href='https://www.shopify.com'>Shopify</a> and member of the <a href='https://rubyonrails.org/community'>Rails Core team</a>, joins Robby to dig into the performance realities behind modern Rails apps.</p><p>They explore what it means to be IO-bound or CPU-bound, how <a href='https://www.rubyguides.com/2015/07/ruby-global-interpreter-lock/'>Ruby’s Global VM Lock</a> affects concurrency, and why &quot;fast&quot; is too vague to be useful. Jean explains why instrumentation is often the missing piece and shares thoughtful approaches to using background jobs with intention.</p><p>They also talk about gem dependencies. The gems in your `Gemfile` are not magic. If your app depends on them, you should understand them. You can read the code. You can patch it. You can make it your own.</p><p>This episode is a reminder that Rails is not a black box. It is a system you can study, shape, and improve. The more you learn how it works, the more confidently you can build with it.</p><p>🔗 <b>References &amp; Resources Mentioned</b></p><p>- 📖 <a href='https://craftinginterpreters.com/'>Crafting Interpreters</a> – A book Jean recommends for understanding how interpreters and Ruby internals work  </p><p>- 🧵 <a href='https://github.com/Shopify/gvltools'>GVL Tools (Shopify gem)</a> – A tool for measuring thread contention in Ruby apps  </p><p>- 📊 <a href='https://appsignal.com'>AppSignal</a> – Monitoring platform that integrates with GVL instrumentation  </p><p>- 🚢 <a href='https://github.com/Shopify/shipit-engine'>ShipIt Engine</a> – Shopify’s open-source deployment tool  </p><p>- 🔒 <a href='https://www.rubyguides.com/2015/07/ruby-global-interpreter-lock/'>Ruby’s Global VM Lock</a> – Overview of what the GVL is and how it works  </p><p>- 🦄 <a href='https://bogomips.org/unicorn/'>Unicorn</a> – A classic preforking Ruby web server  </p><p>- 🐆 <a href='https://puma.io/'>Puma</a> – A multi-threaded Ruby/Rack web server  </p><p>- 🔀 <a href='https://byroot.github.io/ruby/performance/2025/03/04/the-pitchfork-story.html'>Pitchfork</a> – Shopify’s fork of Unicorn, optimized for their infrastructure  </p><p>- ⚙️ <a href='https://api.rubyonrails.org/v7.1/classes/ActiveRecord/Relation.html#method-i-load_async'>ActiveRecord Async Queries</a> – Jean’s Rails Core contribution for backgrounding slow queries  </p><p>- 🔗 <a href='https://graphql.org/'>GraphQL</a> – Used at Shopify to structure and query API data</p><p><br/><br/></p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>Jean Boussier, Senior Staff Engineer at <a href='https://www.shopify.com'>Shopify</a> and member of the <a href='https://rubyonrails.org/community'>Rails Core team</a>, joins Robby to dig into the performance realities behind modern Rails apps.</p><p>They explore what it means to be IO-bound or CPU-bound, how <a href='https://www.rubyguides.com/2015/07/ruby-global-interpreter-lock/'>Ruby’s Global VM Lock</a> affects concurrency, and why &quot;fast&quot; is too vague to be useful. Jean explains why instrumentation is often the missing piece and shares thoughtful approaches to using background jobs with intention.</p><p>They also talk about gem dependencies. The gems in your `Gemfile` are not magic. If your app depends on them, you should understand them. You can read the code. You can patch it. You can make it your own.</p><p>This episode is a reminder that Rails is not a black box. It is a system you can study, shape, and improve. The more you learn how it works, the more confidently you can build with it.</p><p>🔗 <b>References &amp; Resources Mentioned</b></p><p>- 📖 <a href='https://craftinginterpreters.com/'>Crafting Interpreters</a> – A book Jean recommends for understanding how interpreters and Ruby internals work  </p><p>- 🧵 <a href='https://github.com/Shopify/gvltools'>GVL Tools (Shopify gem)</a> – A tool for measuring thread contention in Ruby apps  </p><p>- 📊 <a href='https://appsignal.com'>AppSignal</a> – Monitoring platform that integrates with GVL instrumentation  </p><p>- 🚢 <a href='https://github.com/Shopify/shipit-engine'>ShipIt Engine</a> – Shopify’s open-source deployment tool  </p><p>- 🔒 <a href='https://www.rubyguides.com/2015/07/ruby-global-interpreter-lock/'>Ruby’s Global VM Lock</a> – Overview of what the GVL is and how it works  </p><p>- 🦄 <a href='https://bogomips.org/unicorn/'>Unicorn</a> – A classic preforking Ruby web server  </p><p>- 🐆 <a href='https://puma.io/'>Puma</a> – A multi-threaded Ruby/Rack web server  </p><p>- 🔀 <a href='https://byroot.github.io/ruby/performance/2025/03/04/the-pitchfork-story.html'>Pitchfork</a> – Shopify’s fork of Unicorn, optimized for their infrastructure  </p><p>- ⚙️ <a href='https://api.rubyonrails.org/v7.1/classes/ActiveRecord/Relation.html#method-i-load_async'>ActiveRecord Async Queries</a> – Jean’s Rails Core contribution for backgrounding slow queries  </p><p>- 🔗 <a href='https://graphql.org/'>GraphQL</a> – Used at Shopify to structure and query API data</p><p><br/><br/></p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/17496711-jean-boussier-io-bound-misconceptions.mp3" length="47033086" type="audio/mpeg" />
    <itunes:author>Rails Foundation, Robby Russell</itunes:author>
    <guid isPermaLink="false">Buzzsprout-17496711</guid>
    <pubDate>Mon, 14 Jul 2025 11:00:00 -0400</pubDate>
    <podcast:chapters url="https://www.buzzsprout.com/2462975/17496711/chapters.json" type="application/json" />
    <psc:chapters>
  <psc:chapter start="0:00" title="Jean Boussier &amp; IO-Bound Misconceptions" />
  <psc:chapter start="4:10" title="What Rails Infrastructure work looks like at Shopify  " />
  <psc:chapter start="11:46" title="“Your gems are your code too”" />
  <psc:chapter start="28:40" title="Latency vs. throughput: performance isn’t just about “faster”" />
  <psc:chapter start="29:07" title="Ferrari vs. bus: a performance analogy that clicks" />
  <psc:chapter start="34:23" title="The IO-bound self-fulfilling prophecy" />
  <psc:chapter start="37:03" title="Why instrumentation matters" />
  <psc:chapter start="40:00" title="Background jobs and external API calls" />
  <psc:chapter start="53:04" title="Contributing to Rails Core" />
</psc:chapters>
    <itunes:duration>3916</itunes:duration>
    <itunes:keywords>rails, ruby on rails, ruby gems</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>2</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Rosa Gutiérrez &amp; Solid Queue</itunes:title>
    <title>Rosa Gutiérrez &amp; Solid Queue</title>
    <itunes:summary><![CDATA[In this episode of ‘On Rails’, host Robby Russell (@planetargon) chats with Rosa Gutiérrez, Principal Programmer at 37signals, about the technical decisions behind Solid Queue - a database-backed job queue replacing Resque in their Rails apps. Rosa dives into why her team built Solid Queue, how it improves reliability, visibility, and maintainability, and the challenges of migrating live apps like Hey during active development. Learn how they tackled recurring jobs, long-running tasks, and te...]]></itunes:summary>
    <description><![CDATA[<p>In this episode of ‘On Rails’, host Robby Russell (@planetargon) chats with Rosa Gutiérrez, Principal Programmer at <a href='https://37signals.com/'>37signals</a>, about the technical decisions behind Solid Queue - a database-backed job queue replacing Resque in their Rails apps.</p><p>Rosa dives into why her team built <a href='https://github.com/rails/solid_queue'>Solid Queue</a>, how it improves reliability, visibility, and maintainability, and the challenges of migrating live apps like <a href='https://www.hey.com/'>Hey</a> during active development. Learn how they tackled recurring jobs, long-running tasks, and testing strategies, plus insights on system design, scaling, and the joy of deleting old code.</p><p>Topics:</p><ul><li>Why 37signals replaced <a href='https://github.com/resque/resque'>Resque</a></li><li>Building a job queue with <a href='https://guides.rubyonrails.org/active_job_basics.html'>ActiveJob</a> + MySQL</li><li>Transparent job states &amp; using <a href='https://github.com/rails/mission_control-jobs'>Mission Control</a> as a dashboard</li><li>Migrating with minimal impact</li><li>Best practices for recurring and long-running jobs</li><li>Recommended tools, testing gems, and dev books</li></ul><p>Links:</p><ul><li>Rosa&apos;s <a href='https://gist.github.com/rosa/57041c184068a76a77141c8b2765c511'>migration script for scheduled jobs</a> from Resque to Solid Queue</li><li><a href='https://github.com/fractaledmind/acidic_job'>Acidic Job</a></li><li><a href='https://github.com/fractaledmind/chaotic_job'>Chaotic Job</a></li><li><a href='https://rosa.codes/'>Rosa.codes</a></li><li><a href='https://www.rubyevents.org/speakers/rosa-gutierrez'>Rosa’s videos on Ruby Events</a></li><li><a href='https://dev.37signals.com/author/rosa/'>Rosa on the 37signals Dev blog</a></li><li><a href='https://github.com/rosa'>Rosa on Github</a></li><li><a href='https://www.linkedin.com/in/rosagutierrezescudero/'>Rosa on LinkedIn</a></li><li>Book Recommendation: <a href='https://martinfowler.com/articles/refactoring-2nd-ed.html'><em>Refactoring</em>, Second Edition</a> by Martin Fowler<br/><br/></li></ul><p>#RubyOnRails #SolidQueue #BackgroundJobs #37signals #OnRailsPodcast</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode of ‘On Rails’, host Robby Russell (@planetargon) chats with Rosa Gutiérrez, Principal Programmer at <a href='https://37signals.com/'>37signals</a>, about the technical decisions behind Solid Queue - a database-backed job queue replacing Resque in their Rails apps.</p><p>Rosa dives into why her team built <a href='https://github.com/rails/solid_queue'>Solid Queue</a>, how it improves reliability, visibility, and maintainability, and the challenges of migrating live apps like <a href='https://www.hey.com/'>Hey</a> during active development. Learn how they tackled recurring jobs, long-running tasks, and testing strategies, plus insights on system design, scaling, and the joy of deleting old code.</p><p>Topics:</p><ul><li>Why 37signals replaced <a href='https://github.com/resque/resque'>Resque</a></li><li>Building a job queue with <a href='https://guides.rubyonrails.org/active_job_basics.html'>ActiveJob</a> + MySQL</li><li>Transparent job states &amp; using <a href='https://github.com/rails/mission_control-jobs'>Mission Control</a> as a dashboard</li><li>Migrating with minimal impact</li><li>Best practices for recurring and long-running jobs</li><li>Recommended tools, testing gems, and dev books</li></ul><p>Links:</p><ul><li>Rosa&apos;s <a href='https://gist.github.com/rosa/57041c184068a76a77141c8b2765c511'>migration script for scheduled jobs</a> from Resque to Solid Queue</li><li><a href='https://github.com/fractaledmind/acidic_job'>Acidic Job</a></li><li><a href='https://github.com/fractaledmind/chaotic_job'>Chaotic Job</a></li><li><a href='https://rosa.codes/'>Rosa.codes</a></li><li><a href='https://www.rubyevents.org/speakers/rosa-gutierrez'>Rosa’s videos on Ruby Events</a></li><li><a href='https://dev.37signals.com/author/rosa/'>Rosa on the 37signals Dev blog</a></li><li><a href='https://github.com/rosa'>Rosa on Github</a></li><li><a href='https://www.linkedin.com/in/rosagutierrezescudero/'>Rosa on LinkedIn</a></li><li>Book Recommendation: <a href='https://martinfowler.com/articles/refactoring-2nd-ed.html'><em>Refactoring</em>, Second Edition</a> by Martin Fowler<br/><br/></li></ul><p>#RubyOnRails #SolidQueue #BackgroundJobs #37signals #OnRailsPodcast</p><p><a target="_blank" href="https://www.buzzsprout.com/2462975/fan_mail/new">Send us Fan Mail</a></p><p><em>On Rails</em> is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails. </p><p><em>On Rails</em> is brought to you by <a href='https://rubyonrails.org/foundation'>The Rails Foundation</a>, and hosted by <a href='https://robbyonrails.com/about/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Robby Russell</a> of <a href='https://www.planetargon.com/?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>Planet Argon</a>, a consultancy that helps teams <a href='https://www.planetargon.com/services?utm_source=podcast&amp;utm_medium=episodenotes&amp;utm_campaign=onrails'>modernize their Ruby on Rails applications</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2462975/episodes/17305252-rosa-gutierrez-solid-queue.mp3" length="51195867" type="audio/mpeg" />
    <itunes:author>Rails Foundation</itunes:author>
    <guid isPermaLink="false">Buzzsprout-17305252</guid>
    <pubDate>Tue, 24 Jun 2025 10:00:00 -0400</pubDate>
    <podcast:transcript url="https://www.buzzsprout.com/2462975/17305252/transcript" type="text/html" />
    <podcast:transcript url="https://www.buzzsprout.com/2462975/17305252/transcript.json" type="application/json" />
    <podcast:transcript url="https://www.buzzsprout.com/2462975/17305252/transcript.srt" type="application/x-subrip" />
    <podcast:transcript url="https://www.buzzsprout.com/2462975/17305252/transcript.vtt" type="text/vtt" />
    <itunes:duration>4262</itunes:duration>
    <itunes:keywords>#rails, #rubyonrails, #webdev, #tech, #software</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>1</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
</channel>
</rss>
