<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Short Ruby Newsletter</title>
    <description>It is a Monday morning summary of the articles, discussions, and news from the Ruby community</description>
    
    <link>https://newsletter.shortruby.com/</link>
    <atom:link href="https://rss.beehiiv.com/feeds/X67SCnFvlW.xml" rel="self"/>
    
    <lastBuildDate>Thu, 16 Apr 2026 23:40:05 +0000</lastBuildDate>
    <pubDate>Tue, 17 Mar 2026 07:10:00 +0000</pubDate>
    <atom:published>2026-03-17T07:10:00Z</atom:published>
    <atom:updated>2026-04-16T23:40:05Z</atom:updated>
    
      <category>Programming</category>
      <category>Software Engineering</category>
      <category>Technology</category>
    <copyright>Copyright 2026, Short Ruby Newsletter</copyright>
    
    <image>
      <url>https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/534d242e-5137-435a-8ca8-a5c84dc73e27/logo-ee3d810d5c963cc878f73fe56b1de63a07a0d67e65e0e609a9ecc2b9ecfeb4d1.png</url>
      <title>Short Ruby Newsletter</title>
      <link>https://newsletter.shortruby.com/</link>
    </image>
    
    <docs>https://www.rssboard.org/rss-specification</docs>
    <generator>beehiiv</generator>
    <language>en-us</language>
    <webMaster>support@beehiiv.com (Beehiiv Support)</webMaster>

      <item>
  <title>Short Ruby Newsletter - edition 171</title>
  <description>The one where Herb 0.9 is released, Ruby 3.4.9 is released, Shopify launches a high performance Ruby analyser, Basecamp launches ONCE</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ed309b9b-d67a-4586-bc3d-93748038475e/cover-page-edition-171.png" length="354245" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-171</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-171</guid>
  <pubDate>Tue, 17 Mar 2026 07:10:00 +0000</pubDate>
  <atom:published>2026-03-17T07:10:00Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#jobs" rel="noopener noreferrer nofollow">💼 Jobs</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="attio-is-the-ai-crm-for-modern-team">Attio is the AI CRM for modern teams.</h3><div class="image"><a class="image__link" href="https://attio.com?utm_source=beehiiv&utm_medium=newsletter_sponsorship&utm_campaign=beehiiv-Y26&utm_content={{publication_alphanumeric_id}}&_bhiiv=opp_046c7442-c800-4155-9707-da6cc382bdad_f1be5357&bhcl_id=b75b80f7-b4b2-47af-a35a-cc5598a63ae6_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/234ece78-a1bb-49b5-a83b-7869b88863e4/Attio_asset_1.png?t=1772213076"/></a></div><p class="paragraph" style="text-align:left;">Connect your email and calendar, and <a class="link" href="https://attio.com?utm_source=beehiiv&utm_medium=newsletter_sponsorship&utm_campaign=beehiiv-Y26&utm_content={{publication_alphanumeric_id}}&_bhiiv=opp_046c7442-c800-4155-9707-da6cc382bdad_f1be5357&bhcl_id=b75b80f7-b4b2-47af-a35a-cc5598a63ae6_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Attio</a> instantly builds your CRM. Every contact, every company, every conversation, all organized in one place.</p><p class="paragraph" style="text-align:left;">Then <a class="link" href="https://attio.com?utm_source=beehiiv&utm_medium=newsletter_sponsorship&utm_campaign=beehiiv-Y26&utm_content={{publication_alphanumeric_id}}&_bhiiv=opp_046c7442-c800-4155-9707-da6cc382bdad_f1be5357&bhcl_id=b75b80f7-b4b2-47af-a35a-cc5598a63ae6_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Ask Attio</a> anything:</p><ul><li><p class="paragraph" style="text-align:left;">Prep for meetings in seconds with full context from across your business</p></li><li><p class="paragraph" style="text-align:left;">Know what’s happening across your entire pipeline instantly</p></li><li><p class="paragraph" style="text-align:left;">Spot deals going sideways before they do</p></li></ul><p class="paragraph" style="text-align:left;">No more digging and no more data entry. Just answers.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://attio.com?utm_source=beehiiv&utm_medium=newsletter_sponsorship&utm_campaign=beehiiv-Y26&utm_content={{publication_alphanumeric_id}}&_bhiiv=opp_046c7442-c800-4155-9707-da6cc382bdad_f1be5357&bhcl_id=b75b80f7-b4b2-47af-a35a-cc5598a63ae6_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Start your free trial →</a></p><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://bsky.app/profile/schwad.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Nick Schwaderer</a> launched an interesting game → <a class="link" href="https://rain.schwadlabs.io/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Raindrops</a></p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ebb0c409-5a16-4f18-ab74-02aef0a505b9/image.png?t=1773471881"/><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rain.schwadlabs.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">https://rain.schwadlabs.io</a></p></span></div></div><p class="paragraph" style="text-align:left;"></p><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://rubyconitaly.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">RubyCon </a> Announced the full agenda at <a class="link" href="https://rubycon.it/schedule/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">https://rubycon.it/schedule/</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/rubyconitaly.bsky.social/post/3mgv5ujjrr227?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ab692409-b450-4b81-8703-2eb14bf0c1ef/image.png?t=1773667876"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/rubyconitaly.bsky.social/post/3mgv5ujjrr227?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://rubyconitaly.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">rubyconitaly.bsky.social</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://x.com/nagachika?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Nagachika</a> announced the release of <a class="link" href="https://www.ruby-lang.org/en/news/2026/03/11/ruby-3-4-9-released/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Ruby 3.4.9</a></p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ef6c243a-b77c-481d-a2e1-f0ace5111c96/image.png?t=1773472387"/><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.ruby-lang.org/en/news/2026/03/11/ruby-3-4-9-released/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">https://www.ruby-lang.org/en/news/2026/03/11/ruby-3-4-9-released/</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://twitter.com/marcoroth_?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Marco Roth</a> announced a new version of <a class="link" href="https://herb-tools.dev/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Herb</a> - read all the details at <a class="link" href="https://herb-tools.dev/blog/whats-new-in-herb-v0-9?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">What’s new in Herb v0.9</a></p><div class="image"><a class="image__link" href="https://x.com/marcoroth_/status/2032565033419370822?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/934b6898-5e1f-4f4b-ac8b-fc197277fc2d/image.png?t=1773478639"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/marcoroth_/status/2032565033419370822?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@marcoroth_</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://www.mikeperham.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Mike Perham</a> announced <a class="link" href="https://www.mikeperham.com/2026/03/10/sidekiq-in-the-terminal/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Sidekiq in the terminal</a></p><div class="image"><a class="image__link" href="https://www.mikeperham.com/2026/03/10/sidekiq-in-the-terminal/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a50cfbd1-98ae-4ae5-9158-b0e0739100f4/image.png?t=1773597802"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.mikeperham.com/2026/03/10/sidekiq-in-the-terminal/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">https://www.mikeperham.com/2026/03/10/sidekiq-in-the-terminal/</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Shopify developers launched a new project <a class="link" href="https://github.com/Shopify/rubydex?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">rubydex</a> - A high performance Ruby indexer</p><div class="image"><a class="image__link" href="https://github.com/Shopify/rubydex?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/483772b7-c395-4cc0-8161-496003da2a76/image.png?t=1773667777"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/Shopify/rubydex?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">https://github.com/Shopify/rubydex</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Edouard Chin, Eileen Uchitelle published an article about <a class="link" href="https://railsatscale.com/2026-03-09-faster-bundler/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Faster bundler</a></p><div class="image"><a class="image__link" href="https://railsatscale.com/2026-03-09-faster-bundler/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/04e4f738-684a-4ebf-b7a1-cdc9afcc675e/image.png?t=1773598661"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://railsatscale.com/2026-03-09-faster-bundler/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Faster bundler</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Robby Russell published a new article about <a class="link" href="https://robbyonrails.com/claude-code-curious-rails-developers/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Claude Code for Semi-Reluctant Ruby on Rails Developers</a></p><div class="image"><a class="image__link" href="https://robbyonrails.com/claude-code-curious-rails-developers/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f4a0c633-f4fa-4d45-9787-5ecbe593cf9f/image.png?t=1773598185"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://robbyonrails.com/claude-code-curious-rails-developers/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Claude Code for Semi-Reluctant Ruby on Rails Developers</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> launched <a class="link" href="https://github.com/basecamp/once?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">basecamp/once: Easy self-hosting for Docker-based web apps</a></p><div class="image"><a class="image__link" href="https://x.com/dhh/status/2033580762402902188?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7edaceca-da8b-4813-844e-e95b54cd8553/image.png?t=1773688099"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/2033580762402902188?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">Writebook is also now released as open source under MIT licence at <a class="link" href="https://github.com/basecamp/writebook?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">https://github.com/basecamp/writebook</a></p><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="the-future-of-ai-in-marketing-your-">The Future of AI in Marketing. Your Shortcut to Smarter, Faster Marketing.</h3><div class="image"><a class="image__link" href="https://offers.hubspot.com/matg-ai-strategies?utm_source=beehiiv&utm_medium=paid&utm_campaign=Marketing_Leads_EN_NAM_NAM_FutureOfAIMarketing_cm464_{{publication_alphanumeric_id}}&utm_term=versionC&_bhiiv=opp_09ab8bdc-9278-4f6d-b853-9f097a371205_a60b6612&bhcl_id=8afadff2-e0fd-48f1-ade7-e06742f20f16_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1693c9ea-b3ec-411a-82e4-019c026ef253/Offer_1_Modern_2_1200x628__1_.png?t=1750102350"/></a></div><p class="paragraph" style="text-align:left;">This guide distills <a class="link" href="https://offers.hubspot.com/matg-ai-strategies?utm_source=beehiiv&utm_medium=paid&utm_campaign=Marketing_Leads_EN_NAM_NAM_FutureOfAIMarketing_cm464_{{publication_alphanumeric_id}}&utm_term=versionC&_bhiiv=opp_09ab8bdc-9278-4f6d-b853-9f097a371205_a60b6612&bhcl_id=8afadff2-e0fd-48f1-ade7-e06742f20f16_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">10 AI strategies from industry leaders</a> that are transforming marketing. </p><ul><li><p class="paragraph" style="text-align:left;">Learn how HubSpot&#39;s engineering team achieved 15-20% productivity gains with AI</p></li><li><p class="paragraph" style="text-align:left;">Learn how AI-driven emails achieved 94% higher conversion rates</p></li><li><p class="paragraph" style="text-align:left;">Discover 7 ways to enhance your marketing strategy with AI.</p></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://offers.hubspot.com/matg-ai-strategies?utm_source=beehiiv&utm_medium=paid&utm_campaign=Marketing_Leads_EN_NAM_NAM_FutureOfAIMarketing_cm464_{{publication_alphanumeric_id}}&utm_term=versionC&_bhiiv=opp_09ab8bdc-9278-4f6d-b853-9f097a371205_a60b6612&bhcl_id=8afadff2-e0fd-48f1-ade7-e06742f20f16_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Outpace your competitors by mastering AI.</a></p><p class="paragraph" style="text-align:left;"><a class="link" href="https://offers.hubspot.com/matg-ai-strategies?utm_source=beehiiv&utm_medium=paid&utm_campaign=Marketing_Leads_EN_NAM_NAM_FutureOfAIMarketing_cm464_{{publication_alphanumeric_id}}&utm_term=versionC&_bhiiv=opp_09ab8bdc-9278-4f6d-b853-9f097a371205_a60b6612&bhcl_id=8afadff2-e0fd-48f1-ade7-e06742f20f16_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Get Your Free Guide</a></p><hr class="content_break"><p class="paragraph" style="text-align:left;"></p><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;">️💻 ️<a class="link" href="https://bsky.app/profile/rorvswild.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">RoRvsWild</a> shared a code sample a custom made Rack::Inflater</p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/23bcc0a3-e593-495f-b00b-44a1a2862b3e/image.png?t=1773471551"/></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://bsky.app/profile/johnnunemaker.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">John Nunemaker</a> shared how you can enforce types and provide failures for API endpoints via Dry-rb</p><div class="image"><a class="image__link" href="https://bsky.app/profile/johnnunemaker.com/post/3mguk43j3fa2k?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/10caa0be-a49c-48bf-8c80-3e9dd47790a7/image.png?t=1773471701"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/johnnunemaker.com/post/3mguk43j3fa2k?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://johnnunemaker.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">johnnunemaker.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://kddnewton.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Kevin Newton</a> a code sample <a class="link" href="https://gist.github.com/kddnewton/5cefcd5ab1e5d361ddc9f8a791a71305?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">with some parser tests</a> that shows a lot of interesting things about Ruby syntax: </p><div class="image"><a class="image__link" href="https://gist.github.com/kddnewton/5cefcd5ab1e5d361ddc9f8a791a71305?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0f3dd1dc-6dbb-46a2-914c-1b1a1877bf9d/image.png?t=1773472209"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://gist.github.com/kddnewton/5cefcd5ab1e5d361ddc9f8a791a71305?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">https://gist.github.com/k ddnewton/5cefcd5ab1e5d361ddc9f8a791a71305</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/michaelkoper?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Michael Koper</a> shared a code sample about how form builders are great for AI: </p><div class="image"><a class="image__link" href="https://x.com/michaelkoper/status/2031312043744137409?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3f1c40b6-2a2f-4009-8ca6-97fe073245e5/image.png?t=1773597348"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/michaelkoper/status/2031312043744137409?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@michaelkoper</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://floss.social/@codeDude?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Code Dude</a> shared a code sample showing how to use Ruby http server: </p><div class="image"><a class="image__link" href="https://floss.social/@codeDude/116225967763090724?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/73828b8c-77a2-4068-908e-a90a622788ad/image.png?t=1773598004"/></a><div class="image__source"><span class="image__source_text"><p><a class="link" href="https://floss.social/@codeDude/116225967763090724?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Source: </a><a class="link" href="mailto:codeDude@floss.social" target="_blank" rel="noopener noreferrer nofollow">codeDude@floss.social</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/_st0012?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Stan Lo</a> shared about upcoming IRB features (see the <a class="link" href="https://github.com/ruby/irb/pull/1183?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">PR here</a>)</p><div class="image"><a class="image__link" href="https://x.com/_st0012/status/2033173507337572667?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/87dbeaac-eb0b-48ae-b5cf-5b0efc591c62/image.png?t=1773597518"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_st0012/status/2033173507337572667?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@_st0012</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐️ <a class="link" href="https://twitter.com/palkan_tula?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Vladimir Dementyev</a> shared some insights about Whop’s RSpec test suite</p><div class="image"><a class="image__link" href="https://x.com/palkan_tula/status/2031841497608269835?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/082902ae-528e-4e4e-8ad9-b8000cd14056/image.png?t=1773472605"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/palkan_tula/status/2031841497608269835?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@palkan_tula</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a> shared about his experiment about using agents to fix UI issues</p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/2032513759642558644?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/044b4d6c-d5a2-42b8-88a7-b7d0fc055874/image.png?t=1773478064"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/2032513759642558644?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/mario_chavez?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Mario Alberto Chávez</a> shared about their project called <a class="link" href="https://maquina.app/blog/2026/03/maquina-generators-production-ready-rails-setup/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Maquina Generators: From rails new to Production-Ready</a></p><div class="image"><a class="image__link" href="https://x.com/mario_chavez/status/2032544185518108679?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/930553ba-0903-4ca0-b411-14126ef6542e/image.png?t=1773597482"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mario_chavez/status/2032544185518108679?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@mario_chavez</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://bsky.app/profile/lillich.co?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Jochen Lillich</a> shared about how easily is to express what the intention of the code is in Ruby</p><div class="image"><a class="image__link" href="https://bsky.app/profile/geewiz.dev/post/3mgwrfpyvos2x?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f7e810cc-375f-46da-aa90-2269b2b39c28/image.png?t=1773472086"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/lillich.co/post/3mgwrfpyvos2x?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://lillich.co?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">lillich.co</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://twitter.com/mario_chavez?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Mario Alberto Chávez</a> shared about why he strongly believes in Rails</p><div class="image"><a class="image__link" href="https://x.com/mario_chavez/status/2032542128425906606?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/93f971ee-0d08-4c5a-b9d8-d961428553c5/image.png?t=1773478222"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mario_chavez/status/2032542128425906606?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@mario_chavez</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://bsky.app/profile/rubycentral.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Ruby Central</a> shared stories of Why I ruby → You can submit yours <a class="link" href="https://forms.gle/cZ53ySeNaUxSZqhD6?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">using this form</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/rubycentral.org/post/3mgxchsqv4s2c?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9f27ff6b-648c-4caa-b996-5b9df1d5d00c/image.png?t=1773597687"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/rubycentral.org/post/3mgxchsqv4s2c?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://rubycentral.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">rubycentral.org</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="jobs">💼 Jobs</h2><p class="paragraph" style="text-align:left;">This is a new section curated by Raul from <a class="link" href="https://CalmCompanies.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">CalmCompanies.club</a> </p><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Falgrano.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Algrano</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Upload your resume to autofill the application form or fill in details about yourself, your experience, your engineering background, and how you think about problems.</p></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Full-Stack Engineer (Salary not specified) - Remote or Algrano HQ Zürich - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.deel.com%2Fjob-boards%2Falgrano%2Fjob-details%2F143be364-4243-4671-b1ad-1b302bebfdb7%2Foverview&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fapple.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apple</a></p><ul><li><p class="paragraph" style="text-align:left;">Backend</p><ul><li><p class="paragraph" style="text-align:left;">Senior Software Engineer - Backend (Developer Publications) ($171,600 - $302,200) - San Diego, California, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fapp%2Fen-us%2Fapply%2F200645173-3543&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">🆕 Senior Software Engineer - SWE Program Tools ($139,500 - $258,100) - San Diego, California, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fapp%2Fen-us%2Fapply%2F200651141-3543&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Full-stack Software Engineer ($147,400 - $272,100) - Cupertino, California, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fapp%2Fen-us%2Fapply%2F200646220-0836&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbeehiiv.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">beehiiv</a></p><ul><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Senior Software Engineer, Ad Solutions (global) (USD 165,000-185,000/annual) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbeehiiv.bamboohr.com%2Fcareers%2F50&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Better Stack</a></p><ul><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">/^Full-?stack Engineer$/i ($60K - $300K/year + equity) - Remote (NAMER) or On-site (Prague, Czech Republic) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com%2Fcareers&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbuildkite.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">BuildKite</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p></li><li><p class="paragraph" style="text-align:left;">Backend</p><ul><li><p class="paragraph" style="text-align:left;">Senior Engineer (Pipelines) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5031519008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Engineer (Test Engine) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5021558008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">DevOps</p><ul><li><p class="paragraph" style="text-align:left;">DevOps Support Engineer ($95,000-$125,000) - Remote US - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5097330008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">Security</p><ul><li><p class="paragraph" style="text-align:left;">Staff Security Engineer ANZ Region (Salary not specified) - ANZ Region - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5138711008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">Platform</p><ul><li><p class="paragraph" style="text-align:left;">🆕 Senior Engineer (Compute & Agents) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5151562008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Circle</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p></li><li><p class="paragraph" style="text-align:left;">Infrastructure</p><ul><li><p class="paragraph" style="text-align:left;">Senior Back-End Software Engineer, Infra ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F4961366008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Applied AI ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5066690008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, CRM ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5076959008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Live ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5077650008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, CMS ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5096679008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Growth ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5112587008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">QA</p><ul><li><p class="paragraph" style="text-align:left;">Senior Quality Platform Engineer ($120,000 - $130,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5058408008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcompanycam.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">CompanyCam</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Upload your resume, a cover letter, and answer a couple of questions about the role and your experience.</p></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Senior Software Engineer (Ruby on Rails/React) ($175k - $200k) - Remote US - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcompanycam.com%2Fjob%3Fgh_jid%3D7617931003&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fwww.mindfulchef.com%2F&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Mindful Chef</a></p><ul><li><p class="paragraph" style="text-align:left;">Backend</p><ul><li><p class="paragraph" style="text-align:left;">Rails Engineer (Salary not specified) - London HQ - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fmindfulchef.jobs.personio.de%2Fjob%2F2322124%3Flanguage%3Den%26apply&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fserpapi.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">SerpApi</a></p><ul><li><p class="paragraph" style="text-align:left;">Send us your resume at <a class="link" href="mailto:careers@serpapi.com" target="_blank" rel="noopener noreferrer nofollow">careers@serpapi.com</a></p></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">🆕 Junior Fullstack Engineer ($80K - 100K a year + profit share) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fserpapi.com%2Fcareers%2Fjunior-fullstack-engineer&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">🆕 Senior Fullstack Engineer ($150K - 180K a year + profit share) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fserpapi.com%2Fcareers%2Fsenior-fullstack-engineer&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li></ul><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://basecamp.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Basecamp</a> launched <a class="link" href="https://github.com/basecamp/basecamp-cli?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">basecamp-cli</a> - “Basecamp CLI and Agent Skills“</p><div class="image"><a class="image__link" href="https://github.com/basecamp/basecamp-cli?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/10dad701-1e76-4f11-b175-8f724c006cb0/image.png?t=1773473325"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/basecamp/basecamp-cli?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">https://github.com/basecamp/basecamp-cli</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Benito Serna published a new article about <a class="link" href="https://github.com/bhserna/md_record?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">md_record</a> → “File-backed models for Rails. Similar to ActiveRecord but reads from markdown files with YAML frontmatter”</p><div class="image"><a class="image__link" href="https://bhserna.com/md-record-file-backed-models-for-rails?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/926f6aa1-9df6-4bb7-a53f-05585e9c40dd/image.png?t=1773636122"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bhserna.com/md-record-file-backed-models-for-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://bhserna.com/md-record-file-backed-models-for-rails</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Kevin Murphy published a new gem <a class="link" href="https://github.com/kevin-j-m/simplecov-compare?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">simplecov-compare</a> - “A way to compare two SimpleCov runs.”</p><div class="image"><a class="image__link" href="https://kevinjmurphy.com/posts/announcing-simplecov-compare/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3f1f36dc-1ef5-47b3-a76a-d2dd03ee7632/image.png?t=1773636281"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://kevinjmurphy.com/posts/announcing-simplecov-compare/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Announcing simplecov-compare</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://ruby.social/@floehopper?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">James </a>announced a new version of Mocha 3.1.0 → <a class="link" href="https://github.com/freerange/mocha/pull/794?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Format warnings consistently and include source location by floehopper · Pull Request #794</a></p><div class="image"><a class="image__link" href="https://ruby.social/@floehopper/116228893448604693?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/07471897-663a-4e74-b109-05a41f892606/image.png?t=1773597935"/></a><div class="image__source"><span class="image__source_text"><p><a class="link" href="https://ruby.social/@floehopper/116228893448604693?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Source: </a><a class="link" href="mailto:floehopper@ruby.social" target="_blank" rel="noopener noreferrer nofollow">floehopper@ruby.social</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/tobi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Tobi Lutke</a> open sourced <a class="link" href="https://github.com/davebcn87/pi-autoresearch?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">/autoresearch plugin</a> for pi</p><div class="image"><a class="image__link" href="https://x.com/tobi/status/2032212536716578932?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0220b2fa-2583-4452-86f0-058351d84dd3/image.png?t=1773473013"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/tobi/status/2032212536716578932?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@tobi</a></p></span></div></div><div class="image"><a class="image__link" href="https://github.com/davebcn87/pi-autoresearch?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9e822df0-3fb9-4cb7-9d16-851660ab2d49/image.png?t=1773473092"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/davebcn87/pi-autoresearch?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">https://github.com/davebcn87/pi-autoresearch</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="http://claude.ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Claude</a> increased the context window to 1 million for Claude Opus and Sonnet</p><div class="image"><a class="image__link" href="https://x.com/claudeai/status/2032509548297343196?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/30778fb4-e990-4f2d-b193-b3fea3185972/image.png?t=1773473541"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/claudeai/status/2032509548297343196?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@claudeai</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/yongfook?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Jon Yongfook</a> shared about AI impact on developers productivity: </p><div class="image"><a class="image__link" href="https://x.com/yongfook/status/2030941843547168905?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/301b2b91-ac8d-4962-bfe3-185b7def618a/image.png?t=1773597294"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/yongfook/status/2030941843547168905?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">@yongfook</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞This Week in Rails published a new edition → <a class="link" href="https://rubyonrails.org/2026/3/13/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Validate URI scheme in Action Text and more</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new edition → <a class="link" href="https://rubyweekly.com/issues/791?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Shopify&#39;s push to make Bundler and RubyGems faster</a></p><p class="paragraph" style="text-align:left;">🗞 Matt Solt published a new edition → <a class="link" href="https://rubyai.beehiiv.com/p/ruby-ai-news-march-12th-2026?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby AI News - March 12th, 2026</a></p><p class="paragraph" style="text-align:left;">🗞 Andrey Eremin​ published a new edition of → <a class="link" href="https://newsletters.eremin.eu/posts/static-ruby-monthly-issue-14-march-2026?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Static Ruby Monthly | Issue 14, March 2026</a></p><p class="paragraph" style="text-align:left;">🗞 Andy Croll published a new edition → <a class="link" href="https://andycroll.com/ruby/with-options-group-shared-config/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Group Repeated Options with with_options</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 Errol Schmidt published a new podcast episode → <a class="link" href="https://open.spotify.com/episode/5Npmr20ZusTfRqXDaoHi2f?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Future of Rails in the Age of AI with Amanda Perino (Rails Foundation) - Technology For Humans | Podcast on Spotify</a></p><p class="paragraph" style="text-align:left;">🎧 The Bike Shed published a new episode → <a class="link" href="https://feed.thoughtbot.com/link/24077/17296886/the-bike-shed-ep-497-diagrams-we-love?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Bike Shed Ep 497: Diagrams we love</a></p><p class="paragraph" style="text-align:left;">🎧 The Ruby AI Podcast published a new episode → <a class="link" href="https://www.buzzsprout.com/2388930/episodes/18814616-crms-don-t-have-to-suck-rebuilding-business-software-with-ai-and-ruby-with-thomas-witt?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">CRMs Don’t Have to Suck: Rebuilding Business Software with AI and Ruby with Thomas Witt</a></p><p class="paragraph" style="text-align:left;">🎧 Remote Ruby published a new episode → <a class="link" href="https://www.buzzsprout.com/2260490/episodes/18827088-heroku-hosting-and-the-ai-era?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Heroku, Hosting, and the AI Era</a> </p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">Kasper Timm Hansen published an article about <a class="link" href="https://kaspth.com/posts/i-quit-rails-core-4-years-ago-heres-what-ive-been-up-to?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">I quit Rails core 4 years ago, here’s what I’ve been up to</a></p><p class="paragraph" style="text-align:left;">🆕 Julian Rubisch published a new article about <a class="link" href="https://www.rorvswild.com/blog/2026/advanced-domain-modeling-rails-1?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Advanced Domain Modeling Techniques for Ruby on Rails – Part 1</a></p><p class="paragraph" style="text-align:left;">🆕 Amol Joshi published a new article about <a class="link" href="https://blog.saeloun.com/2026/03/11/ruby-concurrency-beyond-fibers/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby Concurrency Beyond Fibers: Threads, Ractors, and True Parallelism</a></p><p class="paragraph" style="text-align:left;">🆕 Sid Krishnan published a new article about <a class="link" href="https://ducktypelabs.com/how-to-navigate-with-turbo-frames/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to navigate with Turbo Frames</a></p><p class="paragraph" style="text-align:left;">🆕 Koichi Sasada published a new article about <a class="link" href="https://dev.to/ko1/fixing-hotspots-and-coverage-gaps-in-one-shot-with-lumitrace-58ll?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Fixing Hotspots and Coverage Gaps in One Shot with lumitrace</a> and about <a class="link" href="https://dev.to/ko1/unearthing-dry-violations-from-hotspot-data-with-lumitrace-4p4l?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Unearthing DRY Violations from Hotspot Data with lumitrace</a></p><p class="paragraph" style="text-align:left;">🆕 Luis Moyano published a new article about <a class="link" href="https://luis.land/blog/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">A technical breakdown on how ShinyJsonLogic became the fastest JSON Logic gem around.</a></p><p class="paragraph" style="text-align:left;">🆕 Zil Norvilis published a new article about <a class="link" href="https://norvilis.com/how-hotwire-restored-my-sanity-in-web-development?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How Hotwire Restored My Sanity in Web Development</a> and about <a class="link" href="https://norvilis.com/why-i-switched-from-rspec-to-minitest-rails-default?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Why I Switched from RSpec to Minitest (Rails Default)</a></p><p class="paragraph" style="text-align:left;">🆕 Giménez Silva Germán Alberto published a new article about <a class="link" href="https://rubystacknews.com/2026/03/11/mruby-gems-extending-ruby-for-embedded-systems/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Most developers associate Ruby with web applications, but Ruby can also run inside em</a></p><p class="paragraph" style="text-align:left;">🆕 Alex Piechowski published an article about <a class="link" href="https://piechowski.io/post/how-i-audit-a-legacy-rails-codebase/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How I Audit a Legacy Rails Codebase in the First Week</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/video-hover-preview-stimulus/?ref=shortruby.com&utm_source=shortruby" target="_blank" rel="noopener noreferrer nofollow">Video Preview on Hover with Stimulus</a></p><p class="paragraph" style="text-align:left;">Javier Cervantes published a new article about <a class="link" href="https://www.rubyforum.org/t/guide-to-deploy-a-rails-app-in-less-than-10-minutes/196?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">Guide to deploy a Rails app (in less than 10 minutes)</a></p><p class="paragraph" style="text-align:left;">Ryan Bigg published a new article about <a class="link" href="https://ryanbigg.com/2026/03/from-heroku-to-render?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">From Heroku to Render</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">David Copeland published a new article about <a class="link" href="https://pwa.support?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-171" target="_blank" rel="noopener noreferrer nofollow">pwa.support</a><a class="link" href="https://naildrivin5.com/blog/2026/03/09/pwa-support-and-the-mediocre-state-of-pwas.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow"> and the Mediocre State of PWAs</a></p><p class="paragraph" style="text-align:left;">Karol Bąk published a new article about <a class="link" href="https://kukicola.io/posts/your-websites-next-visitor-is-an-ai-agent/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Your website’s next visitor is an AI agent</a></p><p class="paragraph" style="text-align:left;">Greg Molnar published a new article about <a class="link" href="https://greg.molnar.io/blog/you-are-probably-validating-passwords-wrong/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">You are (probably) validating passwords wrong</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=0a46db17-7338-401f-be95-92f1dadac249&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 170</title>
  <description>The one where Yusuke Endoh benchmarked showed Ruby to be the best for LLMs, and where we got two releases of Rails CMS, a repo with 200+ real Rails code bases was released, and Shopify actively discourages RSpec internally. </description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/92af3e83-197a-4159-ac64-7571ef45bda4/cover-page-edition-170.png" length="405670" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-170</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-170</guid>
  <pubDate>Tue, 10 Mar 2026 07:29:00 +0000</pubDate>
  <atom:published>2026-03-10T07:29:00Z</atom:published>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#jobs" rel="noopener noreferrer nofollow">💼 Jobs</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="ship-docs-your-team-is-actually-pro">Ship Docs Your Team Is Actually Proud Of</h3><div class="image"><a class="image__link" href="https://www.mintlify.com/?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&utm_medium=newsletter&utm_content=Mintlify%2C%20Feb%20-%20Primary%202&_bhiiv=opp_c78cbea3-0eee-4f67-900b-c01cf1c614b1_4a7360ef&bhcl_id=76f6ab14-b4ba-40c1-af16-c3ff3a7f57cc_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bfcbfcbc-d3cd-4601-8c5e-66a44900e34f/Frame_4444.png?t=1770940654"/></a></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.mintlify.com/?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&utm_medium=newsletter&utm_content=Mintlify%2C%20Feb%20-%20Primary%202&_bhiiv=opp_c78cbea3-0eee-4f67-900b-c01cf1c614b1_4a7360ef&bhcl_id=76f6ab14-b4ba-40c1-af16-c3ff3a7f57cc_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Mintlify</a> helps you create fast, beautiful docs that developers actually enjoy using. Write in markdown, sync with your repo, and deploy in minutes. Built-in components handle search, navigation, API references, and interactive examples out of the box, so you can focus on clear content instead of custom infrastructure.</p><p class="paragraph" style="text-align:left;">Automatic versioning, analytics, and AI powered search make it easy to scale as your product grows. Your docs stay accurate automatically with AI-powered workflows with every pull request.</p><p class="paragraph" style="text-align:left;">Whether you&#39;re a dev, technical writer, part of devrel, and beyond, Mintlify fits into the way you already work and helps your documentation keep pace with your product.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.mintlify.com/?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&utm_medium=newsletter&utm_content=Mintlify%2C%20Feb%20-%20Primary%202&_bhiiv=opp_c78cbea3-0eee-4f67-900b-c01cf1c614b1_4a7360ef&bhcl_id=76f6ab14-b4ba-40c1-af16-c3ff3a7f57cc_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Get Started for Free Today</a></p><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://panasiti.me/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Giovapanasiti</a> launched <a class="link" href="https://www.active-canvas.com/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">ActiveCanvas — AI-Powered CMS Engine for Rails</a></p><div class="image"><a class="image__link" href="https://www.active-canvas.com/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d1be2f4a-8882-400f-819b-5c1a07300c2e/image.png?t=1772987697"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.active-canvas.com/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://www.active-canvas.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://aviflombaum.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Avi Flombaum</a> launched <a class="link" href="https://railspress.org/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RailsPress - Blog Engine, CMS & Entity System for Rails 8</a></p><div class="image"><a class="image__link" href="https://railspress.org/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b1d704fc-65dd-41de-94b3-f968989da018/image.png?t=1772988061"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://railspress.org/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RailsPress - Blog Engine, CMS & Entity System for Rails 8</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://greg.molnar.io/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Greg Molnar</a> launched <a class="link" href="https://gregmolnar.gumroad.com/l/security-for-rails-developers?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">a course about Rails security</a>: </p><div class="image"><a class="image__link" href="https://x.com/GregMolnar/status/2029882606976729322?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7e1c51c3-febc-4759-a5bb-4c18c0580904/image.png?t=1773035303"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/GregMolnar/status/2029882606976729322?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@GregMolnar</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📆 <a class="link" href="https://www.rubyevents.org/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Ruby Events</a> published a new edition of <a class="link" href="https://www.rubyevents.org/announcements/february-2026-newsletter?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RubyEvents.org February 2026 Newsletter</a></p><div class="image"><a class="image__link" href="https://www.rubyevents.org/announcements/february-2026-newsletter?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2534868a-47bd-4a71-84d7-8b637099f26d/image.png?t=1773034738"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.rubyevents.org/announcements/february-2026-newsletter?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">https://www.rubyevents.org/announcements/february-2026-newsletter</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://bsky.app/profile/rubycentral.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Ruby Central</a> announced they have extended the deadline for <a class="link" href="https://rubycentral.teamtailor.com/jobs/6963879-rubyconf-pitch-competition-the-ruby-runway?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Ruby Runaway</a></p><div class="image"><a class="image__link" href="https://rubycentral.teamtailor.com/jobs/6963879-rubyconf-pitch-competition-the-ruby-runway?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/99fd5822-2cac-4077-97c0-cc6b39628ac9/image.png?t=1772982302"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubycentral.teamtailor.com/jobs/6963879-rubyconf-pitch-competition-the-ruby-runway?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Ruby Runaway</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://www.blastoffrails.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Blastoff Rails</a> shared <a class="link" href="https://www.blastoffrails.com/speakers.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">the agenda for the event</a>: </p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/50681012-ba96-433f-a2aa-3834900e343f/image.png?t=1773030067"/></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> shared <a class="link" href="https://docs.google.com/forms/d/e/1FAIpQLSfHT9zJmnau03uzcOjmamO-hb3km9EQTURTY0lKDOY91JBycQ/viewform?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Tropical on Rails 2026: Ticket Giveaway / Sorteio de Ingressos</a></p><div class="image"><a class="image__link" href="https://x.com/rails/status/2029311979412758535?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/36f52e3a-b2df-46c2-89c6-cb48cb8a6503/image.png?t=1773031084"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rails/status/2029311979412758535?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@rails</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://twitter.com/jruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">J Ruby Dev Team</a> announced release of <a class="link" href="https://www.jruby.org/2026/03/04/jruby-10-0-4-0.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">JRuby 10.0.4.0 Released</a></p><div class="image"><a class="image__link" href="https://x.com/jruby/status/2029246278601748642?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/89c3951c-0f18-411b-b2ea-3539da9d162e/image.png?t=1773031021"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jruby/status/2029246278601748642?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@jruby</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://twitter.com/mametter?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Yusuke Endoh</a> runs benchmarks about <a class="link" href="https://dev.to/mame/which-programming-language-is-best-for-claude-code-508a?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Which Programming Language Is Best for Claude Code?</a></p><div class="image"><a class="image__link" href="https://x.com/mametter/status/2029363950081720340?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ab4dcf44-1dbb-45c0-a57a-219a4649123e/image.png?t=1773031151"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mametter/status/2029363950081720340?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@mametter</a></p></span></div></div><p class="paragraph" style="text-align:left;">Yujuske Endoh replied to a question about dynamic languages having an advantage due to less boilerplate: </p><div class="image"><a class="image__link" href="https://x.com/mametter/status/2029371413837299755?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/72af3d39-f0e9-4bb2-ba39-a3f87dba9a32/image.png?t=1773031218"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mametter/status/2029371413837299755?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@mametter</a></p></span></div></div><p class="paragraph" style="text-align:left;">Comments from the community: </p><div class="image"><a class="image__link" href="https://x.com/paolino/status/2029466341019713781?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d2acce00-3f17-4f66-a421-1754a10eafa9/image.png?t=1773034322"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/paolino/status/2029466341019713781?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@paolino</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/dhh/status/2029955480689270858?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/936b146b-dbb7-483f-bcd9-ea968bcaa8a7/image.png?t=1773034422"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/2029955480689270858?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/inazarova/status/2029379899715403902?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/249a3f5d-9054-47dd-9557-feaba45123bc/image.png?t=1773034535"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/inazarova/status/2029379899715403902?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@inazarova</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 ️<a class="link" href="https://bsky.app/profile/headius.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Charles Oliver Nutter</a> shared about support ruby Rails 8 in JRuby: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/headius.bsky.social/post/3mgit5adwjv2w?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/170a84c4-a4a2-4009-bb83-c49b7e010dc7/image.png?t=1772983135"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/headius.bsky.social/post/3mgit5adwjv2w?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://headius.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">headius.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Kasper Timm Hansen and David Rodríguez wrote about <a class="link" href="https://gem.coop/updates/6/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">“How namespaces work”</a> in <a class="link" href="http://Gem.coop?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Gem.coop</a> </p><div class="image"><a class="image__link" href="https://gem.coop/updates/6/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/84a83a47-84bf-4abe-b601-300853f80f49/image.png?t=1772983268"/></a><div class="image__source"><span class="image__source_text"><p>Source <a class="link" href="https://gem.coop/updates/6/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">“How namespaces work”</a> </p></span></div></div><p class="paragraph" style="text-align:left;">️👉 <a class="link" href="https://x.com/SevenviewSteve?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Steve Clarke</a> created a new repo with 200 Ruby on Rails applications. See it at <a class="link" href="https://github.com/steveclarke/real-world-rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">real-world-rails</a></p><div class="image"><a class="image__link" href="https://x.com/SevenviewSteve/status/2025997225726300250?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a849ea48-e7da-442c-ba4f-55c6f787aa8c/image.png?t=1772986380"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/SevenviewSteve/status/2025997225726300250?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@SevenviewSteve</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="the-future-of-ai-in-marketing-your-">The Future of AI in Marketing. Your Shortcut to Smarter, Faster Marketing.</h3><div class="image"><a class="image__link" href="https://offers.hubspot.com/matg-ai-strategies?utm_source=beehiiv&utm_medium=paid&utm_campaign=Marketing_Leads_EN_NAM_NAM_FutureOfAIMarketing_cm464_{{publication_alphanumeric_id}}&utm_term=versionC&_bhiiv=opp_d014d659-12a8-457a-8e2f-a5d7e0149819_a60b6612&bhcl_id=237ed162-6034-4edb-bae2-1ffd6fe54fb7_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1693c9ea-b3ec-411a-82e4-019c026ef253/Offer_1_Modern_2_1200x628__1_.png?t=1750102350"/></a></div><p class="paragraph" style="text-align:left;">This guide distills <a class="link" href="https://offers.hubspot.com/matg-ai-strategies?utm_source=beehiiv&utm_medium=paid&utm_campaign=Marketing_Leads_EN_NAM_NAM_FutureOfAIMarketing_cm464_{{publication_alphanumeric_id}}&utm_term=versionC&_bhiiv=opp_d014d659-12a8-457a-8e2f-a5d7e0149819_a60b6612&bhcl_id=237ed162-6034-4edb-bae2-1ffd6fe54fb7_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">10 AI strategies from industry leaders</a> that are transforming marketing. </p><ul><li><p class="paragraph" style="text-align:left;">Learn how HubSpot&#39;s engineering team achieved 15-20% productivity gains with AI</p></li><li><p class="paragraph" style="text-align:left;">Learn how AI-driven emails achieved 94% higher conversion rates</p></li><li><p class="paragraph" style="text-align:left;">Discover 7 ways to enhance your marketing strategy with AI.</p></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://offers.hubspot.com/matg-ai-strategies?utm_source=beehiiv&utm_medium=paid&utm_campaign=Marketing_Leads_EN_NAM_NAM_FutureOfAIMarketing_cm464_{{publication_alphanumeric_id}}&utm_term=versionC&_bhiiv=opp_d014d659-12a8-457a-8e2f-a5d7e0149819_a60b6612&bhcl_id=237ed162-6034-4edb-bae2-1ffd6fe54fb7_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Outpace your competitors by mastering AI.</a></p><p class="paragraph" style="text-align:left;"><a class="link" href="https://offers.hubspot.com/matg-ai-strategies?utm_source=beehiiv&utm_medium=paid&utm_campaign=Marketing_Leads_EN_NAM_NAM_FutureOfAIMarketing_cm464_{{publication_alphanumeric_id}}&utm_term=versionC&_bhiiv=opp_d014d659-12a8-457a-8e2f-a5d7e0149819_a60b6612&bhcl_id=237ed162-6034-4edb-bae2-1ffd6fe54fb7_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Get Your Free Guide</a></p><hr class="content_break"><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared about RSpec being deprecated at Shopify:</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/2027428277049237743?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/183d8d35-ef98-438b-bc89-9f07d459c24e/image.png?t=1772988111"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/2027428277049237743?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://twitter.com/rafaelfranca?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Rafael França</a> added: </p><div class="image"><a class="image__link" href="https://x.com/rafaelfranca/status/2027446722763399333?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e0c3bdd4-609c-4225-801b-a96dcf283e31/image.png?t=1772988250"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rafaelfranca/status/2027446722763399333?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@rafaelfranca</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/rafaelfranca/status/2027492575922299259?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f3874e9b-4783-4202-b54d-e876c580f3c6/image.png?t=1772988288"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rafaelfranca/status/2027492575922299259?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@rafaelfranca</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/yarotheslav?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Yaroslav Shmarov</a> shared code sample about <a class="link" href="https://hotwire-native-oauth.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">hotwire-native-oauth.md</a></p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e4468cae-c18b-498d-abd0-f6bb29551e9d/image.png?t=1772988514"/><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://hotwire-native-oauth.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">hotwire-native-oauth.md</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://blog.schwad.org/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Nick Schwaderer</a> shared a code sample showing how to use recursion and pattern matching to sum values of various objects: </p><div class="image"><a class="image__link" href="https://x.com/schwad_rb/status/2028942880216166563?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/10cc59f4-23ef-438b-b9e8-d705107055b2/image.png?t=1773030698"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/schwad_rb/status/2028942880216166563?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@schwad_rb</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 ️<a class="link" href="https://bsky.app/profile/lillich.co?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Jochen Lillich</a> shared a code sample showing how simple is to multiply array elements in Ruby: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/lillich.co/post/3mg652jxpdc2r?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/355cd485-3f73-4e4a-8bba-0580711af7f2/image.png?t=1772982436"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/lillich.co/post/3mg652jxpdc2r?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://lillich.co?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">lillich.co</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://bsky.app/profile/yegorov.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Artem Yegorov</a> shared about using normalize: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/yegorov.bsky.social/post/3mfmaff74e224?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0f8df694-12e5-435e-b352-818456ec52b6/image.png?t=1772986090"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/yegorov.bsky.social/post/3mfmaff74e224?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://yegorov.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">yegorov.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="http://alifadel.me/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">علي فاضل | Ali Fadel </a>shared a code sample about: </p><div class="image"><a class="image__link" href="https://x.com/alihfadel/status/2029181468342145505?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/569593d9-a70c-4641-8ecf-a18c2c85572d/image.png?t=1773030967"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/alihfadel/status/2029181468342145505?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@alihfadel</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://x.com/naumanthanvi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Nauman Tariq</a> shared a code sample about setting a stable client-side identity for new (unsaved) Rails records</p><div class="image"><a class="image__link" href="https://x.com/naumanthanvi/status/2026889077816205583?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3be30bbe-ac78-4d4b-b32b-de6bd4104459/image.png?t=1772987849"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/naumanthanvi/status/2026889077816205583?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@naumanthanvi</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="http://alifadel.me/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">علي فاضل | Ali Fadel</a> shared a code sample about Rails store_accessor </p><div class="image"><a class="image__link" href="https://x.com/alihfadel/status/2028927862145794395?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b062172c-3486-48bc-b200-012d7f3014ef/image.png?t=1773030643"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/alihfadel/status/2028927862145794395?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@alihfadel</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://x.com/naumanthanvi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Nauman Tariq</a> shared about Stimulus controllers tips and tricks: </p><div class="image"><a class="image__link" href="https://x.com/naumanthanvi/status/2026504929012072544?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/11b5b78c-cf0a-470e-a705-50f1aeb67b1e/Xnapper-2026-03-08-18.29.13.png?t=1772987384"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/naumanthanvi/status/2026504929012072544?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@naumanthanvi</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐️<a class="link" href="https://bsky.app/profile/veganstraightedge.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Shane Becker</a> asked about the namespace net as in net/http: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/veganstraightedge.com/post/3mg3zl4knno2b?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1cd68bea-d1a5-460c-a463-a0dcbbdba2b8/image.png?t=1772985072"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/veganstraightedge.com/post/3mg3zl4knno2b?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://veganstraightedge.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">veganstraightedge.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">There were some explanations offered: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/rkh.cool/post/3mg43z73ebs2q?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e5fd21ce-1f55-40ef-967b-c92dd94ac079/image.png?t=1772985151"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/rkh.cool/post/3mg43z73ebs2q?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://rkh.cool?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">rkh.cool</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/rkh.cool/post/3mg444caffc2q?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/067e677b-e61b-46e8-9400-d5c2e58a5552/image.png?t=1772985176"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/rkh.cool/post/3mg444caffc2q?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://rkh.cool?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">rkh.cool</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/bleything.net/post/3mg45egamn224?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fe3b7c6a-a3d9-40a8-a618-65252787d16e/image.png?t=1772985228"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/bleything.net/post/3mg45egamn224?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://bleything.net?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">bleything.net</a></p></span></div></div><p class="paragraph" style="text-align:left;"> 📐 <a class="link" href="https://paolino.me/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Carmine Paolino</a> announced a new version of <a class="link" href="https://rubyllm.com/agentic-workflows/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Agentic Workflows</a></p><div class="image"><a class="image__link" href="https://x.com/paolino/status/2026628201124950176?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9c988dc0-55a0-41b4-a902-cf09f7a37479/image.png?t=1772987467"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/paolino/status/2026628201124950176?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@paolino</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> shared the new headline: </p><div class="image"><a class="image__link" href="https://x.com/rails/status/2029573933033291874?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/77b9e9fb-e85e-4339-916d-ebe34ee7c5f8/image.png?t=1773034823"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rails/status/2029573933033291874?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@rails</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://bsky.app/profile/wnb-rb.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">WNB.rb </a>shared they invite you to fill in <a class="link" href="https://docs.google.com/forms/d/e/1FAIpQLSeEJnd19y9lmNWxkwDt0SK5RCsrKcq5PcIlZpiNBv7y-jJinQ/viewform?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">WNB.rb Community Survey</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/wnb-rb.dev/post/3mfv3uwxkbl2y?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e49a55bd-1426-47ca-aebd-c0d684d647cb/image.png?t=1772985023"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/wnb-rb.dev/post/3mfv3uwxkbl2y?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://wnb-rb.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">wnb-rb.dev</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💡 <a class="link" href="https://twitter.com/marcoroth_?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Marco Roth</a> shared a couple of improvements that are coming to Herb. <a class="link" href="https://github.com/marcoroth/herb/pulls?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Check the PRs on Github</a> to see the upcoming and merged improvements. </p><div class="image"><a class="image__link" href="https://x.com/marcoroth_/status/2028920400856408307?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4db802b3-7ee2-485c-be1e-50b024484992/image.png?t=1773030252"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/marcoroth_/status/2028920400856408307?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@marcoroth_</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/marcoroth.dev/post/3mgkjkx4yyc2s?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3ef6ccea-e3bb-4bfb-b69e-399656d31051/image.png?t=1773030329"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/marcoroth.dev/post/3mgkjkx4yyc2s?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://marcoroth.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">marcoroth.dev</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/marcoroth.dev/post/3mgdrcz74nk2u?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8e923774-a2b2-44d4-b3ac-e13598268747/image.png?t=1773030386"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/marcoroth.dev/post/3mgdrcz74nk2u?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://marcoroth.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">marcoroth.dev</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/marcoroth.dev/post/3mgc6lijcqs2m?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e7d93f5c-4f3f-4386-908c-567f0e63b7cd/image.png?t=1773030418"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/marcoroth.dev/post/3mgc6lijcqs2m?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://marcoroth.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">marcoroth.dev</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://x.com/chu2bard?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Carson Hubbard</a> shared about Rails being a fit for AI agents: </p><div class="image"><a class="image__link" href="https://x.com/chu2bard/status/2029576456553071095?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f601670a-d21c-4eaf-81fd-576432bafc6a/image.png?t=1773034881"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/chu2bard/status/2029576456553071095?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@chu2bard</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="http://www.derekneighbors.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Derek Neighbors</a> shared about Rails and React: </p><div class="image"><a class="image__link" href="https://x.com/dneighbors/status/2029968586597618084?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/88fa6515-1108-473f-8ec9-f257d2a815a8/image.png?t=1773035378"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dneighbors/status/2029968586597618084?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@dneighbors</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="jobs">💼 Jobs</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Falgrano.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Algrano</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Upload your resume to autofill the application form or fill in details about yourself, your experience, your engineering background, and how you think about problems.</p><ul><li><p class="paragraph" style="text-align:left;">Full-Stack Engineer (Salary not specified) - Remote or Algrano HQ Zürich - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.deel.com%2Fjob-boards%2Falgrano%2Fjob-details%2F143be364-4243-4671-b1ad-1b302bebfdb7%2Foverview&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fapple.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apple</a></p><ul><li><p class="paragraph" style="text-align:left;">Backend</p><ul><li><p class="paragraph" style="text-align:left;">Senior Software Engineer - Backend (Developer Publications) ($171,600 - $302,200) - San Diego, California, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fapp%2Fen-us%2Fapply%2F200645173-3543&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">🆕 Senior Software Engineer - Business Technology Solutions ($162,500 - $244,600) - Elk Grove, California, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fapp%2Fen-us%2Fapply%2F200574765-0776&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Full-stack Software Engineer ($147,400 - $272,100) - Cupertino, California, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fapp%2Fen-us%2Fapply%2F200646220-0836&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbeehiiv.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">beehiiv</a></p><ul><li><p class="paragraph" style="text-align:left;">Senior Software Engineer, Ad Solutions (global) (USD 165,000-185,000/annual) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbeehiiv.bamboohr.com%2Fcareers%2F50&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Better Stack</a></p><ul><li><p class="paragraph" style="text-align:left;">/^Full-?stack Engineer$/i ($60K - $300K/year + equity) - Remote (NAMER) or On-site (Prague, Czech Republic) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com%2Fcareers&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbuildkite.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">BuildKite</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p></li><li><p class="paragraph" style="text-align:left;">Backend</p><ul><li><p class="paragraph" style="text-align:left;">Senior Engineer (Pipelines) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5031519008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Engineer (Test Engine) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5021558008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">DevOps</p><ul><li><p class="paragraph" style="text-align:left;">DevOps Support Engineer ($95,000-$125,000) - Remote US - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5097330008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">Security</p><ul><li><p class="paragraph" style="text-align:left;">🆕 Staff Security Engineer ANZ Region (Salary not specified) - ANZ Region - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5138711008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Foncactus.com%2F&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Cactus</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Submit your resume at <a class="link" href="https://workoncactus.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">workoncactus.com</a> Call with Maya, our AI assistant - (415) 360-3350 Write us why you are interested at <a class="link" href="mailto:join@oncactus.com" target="_blank" rel="noopener noreferrer nofollow">join@oncactus.com</a>. Resumes are great but we’d love to see that you know how to write and can communicate effectively. Don&#39;t go overboard, under 500 words is more than enough. Call with CTO founder - assess background and technical alignment Onsite Interview to meet the team, including our CEO Ajith - (you get to know the company and we get to know you) Two-week paid work trial Offer</p></li><li><p class="paragraph" style="text-align:left;">Senior Ruby on Rails + AI Engineer ($120K - $150K) - San Mateo, CA, US - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fwww.ycombinator.com%2Fcompanies%2Foncactus%2Fjobs%2FEQeRwos-senior-ruby-on-rails-ai-engineer&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Circle</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p></li><li><p class="paragraph" style="text-align:left;">Infrastructure</p><ul><li><p class="paragraph" style="text-align:left;">Senior Back-End Software Engineer, Infra ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F4961366008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Applied AI ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5066690008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, CRM ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5076959008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Live ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5077650008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, CMS ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5096679008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Growth ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5112587008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Payments ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5096777008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">QA</p><ul><li><p class="paragraph" style="text-align:left;">Senior Quality Platform Engineer ($120,000 - $130,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5058408008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcompanycam.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">CompanyCam</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Upload your resume, a cover letter, and answer a couple of questions about the role and your experience.</p></li><li><p class="paragraph" style="text-align:left;">Senior Software Engineer (Ruby on Rails/React) ($175k - $200k) - Remote US - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcompanycam.com%2Fjob%3Fgh_jid%3D7617931003&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fevilmartians.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Evil Martians</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Don’t send us a standard CV. Send us an email to <a class="link" href="mailto:obey-backend@evilmartians.com" target="_blank" rel="noopener noreferrer nofollow">obey-backend@evilmartians.com</a> with your full name as the email subject. The email must be in Russian. In your email: Your story. Tell us about your experience, interests, your previous projects, and your role (what did you do or achieve). Code showcase. As a starting point, we need to see some sample code. You can send us links to your GitHub projects or Pull Requests. You can also create (secret) GitHub Gists to send us code samples from your closed source projects: something that solves a non-obvious, advanced task, or examples of beautiful code. Ideally, you would also describe what the code does, include tests, and a general description of the feature or the problem relevant to the code. Location & relocation. Mention your current location and if you’re open to relocation. We do not hire in Russia.</p></li><li><p class="paragraph" style="text-align:left;">Ruby Backend Engineer ($65K – $110K gross annual salary) - Remote (minimum of 3 hours daily overlap with the Pacific Timezone; relocation to Portugal possible) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=mailto%3Aobey-backend%40evilmartians.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fwww.mindfulchef.com%2F&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Mindful Chef</a></p><ul><li><p class="paragraph" style="text-align:left;">🆕 Rails Engineer (Salary not specified) - London HQ - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fmindfulchef.jobs.personio.de%2Fjob%2F2322124%3Flanguage%3Den%26apply&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/peterc?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Peter</a> <a class="link" href="https://github.com/peterc?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Cooper</a> launched a new gem <a class="link" href="https://github.com/peterc/pure_jpeg?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">pure_jpeg: Pure Ruby JPEG encoder and decoder with no native dependencies</a></p><div class="image"><a class="image__link" href="https://github.com/peterc/pure_jpeg?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/869a88eb-6bfb-43fd-a2c9-bdee0dc1f417/image.png?t=1772985334"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/peterc/pure_jpeg?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">https://github.com/peterc/pure_jpeg</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/Gusto?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Gusto</a> launched a new gem <b><a class="link" href="https://github.com/Gusto/fixture_kit?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">fixture_kit</a></b><span style="color:rgb(0, 0, 0);font-size:medium;"> </span><span style="color:rgb(0, 0, 0);">- </span><span style="color:rgb(0, 0, 0);"><i>&quot;FixtureKit provides lightning-fast test setup by caching database records. Define fixtures using any tool (FactoryBot, raw ActiveRecord, etc.), and FixtureKit caches the SQL to replay in subsequent test runs.&quot;</i></span></p><div class="image"><a class="image__link" href="https://github.com/Gusto/fixture_kit?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a50d1e8d-9e87-4d4b-af2f-1028c3edad10/image.png?t=1773116634"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/Gusto/fixture_kit?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">https://github.com/Gusto/fixture_kit</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/ko1?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Koichi Sasada</a> published a new gem <b><a class="link" href="https://github.com/ko1/lumitrace?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">lumitrace</a></b><span style="color:rgb(0, 0, 0);font-size:medium;"> </span><span style="color:rgb(0, 0, 0);">- </span><span style="color:rgb(0, 0, 0);"><i>&quot;Inline expression tracing for Ruby&quot;. </i></span><span style="color:rgb(0, 0, 0);">Read also this article about how to use </span><a class="link" href="https://dev.to/ko1/using-lumitrace-to-eliminate-redundant-type-conversions-in-ruby-1kfg?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Using lumitrace to eliminate redundant type conversions in Ruby</a></p><div class="image"><a class="image__link" href="https://dev.to/ko1/lumitrace-see-what-your-ruby-code-is-actually-doing-instantly-251n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/14348ea6-2194-4fb3-a4c0-58a3c6732e42/image.png?t=1773116837"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://dev.to/ko1/lumitrace-see-what-your-ruby-code-is-actually-doing-instantly-251n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">https://dev.to/ko1/lumitrace-see-what-your-ruby-code-is-actually-doing-instantly-251n</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://twitter.com/AdamMusaAly?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Adam</a> announced a new project <a class="link" href="https://github.com/AdamMusa/RubyNative?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RubyNative: RubyNative is a library that allows building web, desktop and mobile applications in Ruby without prior experience in frontend development.</a></p><div class="image"><a class="image__link" href="https://github.com/AdamMusa/ruflet?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a123a245-2cbb-4561-8a2a-61cdb3c6669b/image.png?t=1772987313"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/AdamMusa/ruflet?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">https://github.com/AdamMusa/ruflet</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="http://www.brunotorio.us/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Bruno Bornsztein</a> announced a new gem <a class="link" href="https://github.com/bborn/claude_console?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">claude_console</a> - &quot;Pair with Claude Code in your Rails console&quot;</p><div class="image"><a class="image__link" href="https://github.com/bborn/claude_console?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ce5fc29c-c479-4bdb-8ca2-d6c5eba415ec/image.png?t=1772987991"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/bborn/claude_console?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://github.com/bborn/claude_console</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://twitter.com/zilkucinskas?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Zilvinas Kucinskas</a> announced a new version of <a class="link" href="https://github.com/SearchApi/wreq-ruby?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">wreq-ruby: Ruby bindings for wreq, an HTTP client with TLS/HTTP2 browser fingerprinting</a></p><div class="image"><a class="image__link" href="https://github.com/SearchApi/wreq-ruby?tab=readme-ov-file&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c58b7f0f-0d84-4c08-a93f-0a80eb757c5f/image.png?t=1772997738"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/SearchApi/wreq-ruby?tab=readme-ov-file&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">https://github.com/SearchApi/wreq-ruby</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://x.com/naumanthanvi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Nauman Tariq</a> announced a new gem <a class="link" href="https://github.com/StockLive-Group/predicate?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">predicate</a></p><div class="image"><a class="image__link" href="https://github.com/StockLive-Group/predicate?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2e4f32d0-2c1e-40ca-93dd-13ee3a9afe50/image.png?t=1773034649"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/StockLive-Group/predicate?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">https://github.com/StockLive-Group/predicate</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://blog.codenamev.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Valentino Stoll</a> announced a new gem of <a class="link" href="https://github.com/codenamev/claude_memory?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">claude_memory</a> - &quot;Turn-key Ruby gem providing Claude Code with instant, high-quality, long-term, self-managed memory using Claude Code Hooks + MCP + Output Style.&quot;</p><div class="image"><a class="image__link" href="https://github.com/codenamev/claude_memory?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3866ec33-711d-4802-88c8-fb975a1ce455/image.png?t=1773035471"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/codenamev/claude_memory?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">https://github.com/codenamev/claude_memory</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://www.dbreunig.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Drew Breunig</a> announced a new version of <a class="link" href="https://github.com/dbreunig/jekyll-third-audience?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">GitHub - dbreunig/jekyll-third-audience: A Jekyll plugin that generates clean Markdown copies of blog posts alongside their HTML output, making your content accessible to AI agents — the &quot;third audience&quot; of the web</a></p><div class="image"><a class="image__link" href="https://github.com/dbreunig/jekyll-third-audience?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7ab43c3d-5e2d-4242-ac81-94b8bf6aad8d/image.png?t=1773063485"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/dbreunig/jekyll-third-audience?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">https://github.com/dbreunig/jekyll-third-audience</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/skryukov_dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Svyatoslav Kryukov</a> announced a new gem <a class="link" href="https://github.com/skryukov/rails_vite?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">rails_vite</a> - &quot;Simple Vite integration for Rails, inspired by Laravel. No proxy, no config duplication.&quot;</p><div class="image"><a class="image__link" href="https://github.com/skryukov/rails_vite?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fbf06947-8a9f-417b-9292-aa72ba8d03c2/image.png?t=1773063729"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/skryukov/rails_vite?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">https://github.com/skryukov/rails_vite</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://bsky.app/profile/batsov.net?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Bozhidar Batsov</a> announced <a class="link" href="https://github.com/rubocop/rubocop/releases/tag/v1.85.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Release RuboCop v1.85.0 · rubocop/rubocop</a></p><div class="image"><a class="image__link" href="https://github.com/rubocop/rubocop/releases/tag/v1.85.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/daf1c1fd-54e8-4dab-9db4-dc5e9e9e3681/image.png?t=1772985383"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/rubocop/rubocop/releases/tag/v1.85.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">https://github.com/rubocop/rubocop/releases/tag/v1.85.0</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://bsky.app/profile/presidentbeef.ruby.social.ap.brid.gy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Justin Collins</a> announced a new version of <a class="link" href="https://brakemanscanner.org/blog/2026/02/26/brakeman-8-dot-0-dot-3-released?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Brakeman: Brakeman 8.0.3</a></p><div class="image"><a class="image__link" href="https://brakemanscanner.org/blog/2026/02/26/brakeman-8-dot-0-dot-3-released?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/14634512-7462-4123-b303-4277412826bd/image.png?t=1772986146"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://brakemanscanner.org/blog/2026/02/26/brakeman-8-dot-0-dot-3-released?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Brakeman: Brakeman 8.0.3</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://paolino.me/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Carmine Paolino</a> announced a new version of RubyLLM →<a class="link" href="https://github.com/crmne/ruby_llm/releases/tag/1.13.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow"> Release 1.13.0· crmne/ruby_llm</a> (there were also a couple of minor versions released)</p><div class="image"><a class="image__link" href="https://github.com/crmne/ruby_llm/releases/tag/1.13.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ee9d46d6-3441-4371-ad29-b6f6a0897e0f/image.png?t=1773030909"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/crmne/ruby_llm/releases/tag/1.13.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">https://github.com/crmne/ruby_llm/releases/tag/1.13.0</a>\</p></span></div></div><p class="paragraph" style="text-align:left;"></p><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://bsky.app/profile/fxn.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Xavier Noria</a> shared about gap in the knowledge: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/fxn.bsky.social/post/3mfpo6fabtk2c?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/df411980-d2ba-4cef-9616-d4d5448473f8/image.png?t=1772985937"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fxn.bsky.social/post/3mfpo6fabtk2c?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fxn.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">fxn.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://bsky.app/profile/byroot.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Jean Boussier</a> shared about handling PRs made by LLMs: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/byroot.bsky.social/post/3mgcjtlrfcc2t?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e5cd679b-e449-42aa-80e2-0e2d4988c503/image.png?t=1772986002"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/byroot.bsky.social/post/3mgcjtlrfcc2t?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://byroot.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">byroot.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://bsky.app/profile/headius.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Charles Oliver Nutter</a> shared about good software design: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/headius.bsky.social/post/3mgiq6ccx5g2w?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/46b465da-b9b9-4970-b8ef-a44df7fca2af/image.png?t=1772986046"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/headius.bsky.social/post/3mgiq6ccx5g2w?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://headius.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">headius.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> announced the skill for <a class="link" href="https://github.com/basecamp/omarchy/blob/dev/default/omarchy-skill/SKILL.md?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">omarchy-skill/</a><a class="link" href="https://SKILL.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">SKILL.md</a><a class="link" href="https://github.com/basecamp/omarchy/blob/dev/default/omarchy-skill/SKILL.md?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow"> at dev · basecamp/omarchy</a></p><div class="image"><a class="image__link" href="https://github.com/basecamp/omarchy/blob/dev/default/omarchy-skill/SKILL.md?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/98a809a7-c50f-499a-9fc4-8214628d4566/image.png?t=1772987641"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/basecamp/omarchy/blob/dev/default/omarchy-skill/SKILL.md?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://github.com/basecamp/omarchy/blob/dev/default/omarchy-skill/SKILL.md</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://mitchellh.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Mitchell Hashimoto</a> announced Ghostty will support <a class="link" href="https://github.com/ghostty-org/ghostty/pull/11208?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">AppleScript by mitchellh · Pull Request #11208 · ghostty-org/ghostty</a></p><div class="image"><a class="image__link" href="https://x.com/mitchellh/status/2030063199052255504?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3bcae852-3a84-44aa-b000-f8319be4be40/image.png?t=1773063429"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mitchellh/status/2030063199052255504?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">@mitchellh</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><p class="paragraph" style="text-align:left;"></p><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 This Week in Rails published a new edition about <a class="link" href="https://rubyonrails.org/2026/3/3/planning-center-newest-contributing-member?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Planning Center is the newest Rails Foundation Contributing member</a> and about <a class="link" href="https://rubyonrails.org/2026/3/6/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">This Week in Rails: March 6, 2026</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Central published a new edition about <a class="link" href="https://mailchi.mp/348647f7308b/the-ruby-central-readme-february2026-newsletter?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Ruby Central README: February 2026</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby On Rails published a new edition about <a class="link" href="https://rubyonrails.org/2026/2/28/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Action Text gets Markdown conversion, editor links in devcontainers, and more!</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 Remote Ruby published a new episode <a class="link" href="https://www.remoteruby.com/2260490/episodes/18785026-jeff-dickey-on-mise-precompiled-rubies-and-much-more?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Jeff Dickey on Mise, Precompiled Rubies, and much more</a></p><p class="paragraph" style="text-align:left;">🎧 Rails Business published a new episode about <a class="link" href="https://www.buzzsprout.com/2435951/episodes/18785602-john-nunemaker-on-ai-development.mp3?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">John Nunemaker on AI Development</a></p><p class="paragraph" style="text-align:left;">🎧 Mike Rispoli published a new podcast about <a class="link" href="https://www.youtube.com/watch?v=RszqJbFnh3U&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Irina Nazarova, CEO @ Evil Martians | Building Better Software With Rails</a></p><p class="paragraph" style="text-align:left;">🎧 The Bike Shed published a new podcast episode about <a class="link" href="https://bikeshed.thoughtbot.com/496?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">496: Test suite performance</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Brad Gessler published a video about executing Ruby code inside an mRuby sandbox → <a class="link" href="https://beautifulruby.com/code/enclave?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Enclave</a></p><p class="paragraph" style="text-align:left;">🎥 Dave Kimura published a video about <a class="link" href="https://www.driftingruby.com/episodes/optimizations?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Episode 551 - Optimizations</a></p><p class="paragraph" style="text-align:left;">🎥 Matt Diebolt published a new video about <a class="link" href="https://threadreaderapp.com/thread/2026797059618038041.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">How Fizzy uses some of the Rails internals to reduce n+1 queries</a></p><p class="paragraph" style="text-align:left;">🎥 Jeremy Smith published a new video about <a class="link" href="https://www.youtube.com/watch?v=B3BBk3zf2w0&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Blue Ridge Behind the Scenes - Marketing</a></p><p class="paragraph" style="text-align:left;">🎥 Evil Martians published a new video from <a class="link" href="https://www.youtube.com/watch?v=izKer1w6nWc&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">SF Ruby Meetup. February 2026 @ Sentry</a>. </p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">Adam McCrea published a new article about <a class="link" href="https://judoscale.com/blog/heroku-whats-next?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Heroku: What’s Next</a></p><p class="paragraph" style="text-align:left;">Anderson Guimarães Moura published a new article about <a class="link" href="https://blog.codeminer42.com/mastering-derived-tables-in-rails/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Mastering Derived Tables in Rails - The Miners</a></p><p class="paragraph" style="text-align:left;">Robby Russell published a new article about <a class="link" href="https://robbyonrails.com/articles/2026/02/26/building-a-rag-tool-in-ruby/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Building a RAG Tool in Ruby 4: What Actually Happened</a></p><p class="paragraph" style="text-align:left;">Jorge Alvarez published a new article about <a class="link" href="https://alvareznavarro.es/blog/2026/03/there-s-never-been-a-better-time-to-become-a-web-developer?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">There&#39;s never been a better time to become a web developer</a></p><p class="paragraph" style="text-align:left;">Ender Ahmet Yurt published a new article about <a class="link" href="https://enderahmetyurt.com/ruby-didnt-die-in-the-age-of-ai/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Ruby Didn&#39;t Die in the Age of AI</a></p><p class="paragraph" style="text-align:left;">Matheus Richard  published a new article about <a class="link" href="https://thoughtbot.com/blog/combine-capybara-selectors-to-avoid-the-sequential-timeout-trap?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Combine Capybara selectors to avoid the sequential timeout trap</a></p><p class="paragraph" style="text-align:left;">Greg Molnar published a new article about <a class="link" href="https://greg.molnar.io/blog/ruby-proxy-for-sqlmap-and-websockets/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby proxy for SQLMap and Websockets</a></p><p class="paragraph" style="text-align:left;">Vladimir Dementyev published a new article about <a class="link" href="https://evilmartians.com/chronicles/ruby-on-whales-docker-for-ruby-rails-development?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby on Whales: Dockerizing Ruby and Rails development</a></p><p class="paragraph" style="text-align:left;">Daniel Domjan published a new article about <a class="link" href="https://blog.jetbrains.com/ruby/2026/02/rubymine-mcp-and-the-rails-toolset/?ref=shortruby.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Building LLM-Friendly MCP Tools in RubyMine: Pagination, Filtering, and Error Design</a></p><p class="paragraph" style="text-align:left;">Sam Ruby published a new article about <a class="link" href="https://intertwingly.net/blog/2026/03/01/Capybara-Without-the-Browser-Tax.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Capybara Without the Browser Tax</a></p><p class="paragraph" style="text-align:left;">Andy Croll published a new article about <a class="link" href="https://andycroll.com/ruby/to-param-seo-friendly-urls/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Customize Model URLs with to_param</a></p><p class="paragraph" style="text-align:left;">Ariel Juodziukynas published a new article about <a class="link" href="https://fastruby.io/blog/speed-up-tests-from-40-to-4-minutes.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">From 40 Minutes to 4 with Tests Parallelization</a></p><p class="paragraph" style="text-align:left;">André Arko published a new article about <a class="link" href="https://andre.arko.net/2026/03/03/four-months-of-ruby-central-moving-ruby-backward/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Four months of Ruby Central moving Ruby backward</a></p><p class="paragraph" style="text-align:left;">Reni Mercier published a new article about <a class="link" href="https://remimercier.com/minitest-spec-and-rails-hooks/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Using Minitest::Spec in Rails? Watch out for the lifecycle hooks!</a></p><p class="paragraph" style="text-align:left;">Andrey Novikov published a new article about <a class="link" href="https://evilmartians.com/chronicles/flipper-gem-is-amazing-we-extended-it-the-martian-way?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Flipper gem is amazing, here&#39;s how we extended it the Martian way</a></p><p class="paragraph" style="text-align:left;">Nazareno Moresco published a new article about <a class="link" href="https://sinaptia.dev/posts/storing-multi-valued-enum-fields-in-activerecord?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Storing multi-valued enum fields in ActiveRecord</a></p><p class="paragraph" style="text-align:left;">Scout APM published a new article about <a class="link" href="https://www.scoutapm.com/blog/best-rails-apm-tools-in-2026-a-developers-guide?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Best Rails APM Tools in 2026: A Developer&#39;s Guide</a></p><p class="paragraph" style="text-align:left;">Ben Sheldon published a new article about <a class="link" href="https://island94.org/2026/03/a-bulletproof-wait_for_turbo-test-helper?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">A bulletproof </a>wait_for_turbo<a class="link" href="https://island94.org/2026/03/a-bulletproof-wait_for_turbo-test-helper?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow"> test helper</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">Sebastian Jimenez published a new article about <a class="link" href="https://dev.to/sebasjimenezvel/deploying-rails-8s-solid-trio-to-production-with-a-single-database-55be?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-170" target="_blank" rel="noopener noreferrer nofollow">Deploying Rails 8&#39;s Solid Trio to Production with a Single Database</a></p><p class="paragraph" style="text-align:left;">Amol Joshi published a new article about <a class="link" href="https://blog.saeloun.com/2026/02/26/rails-7-to-8-upgrade-guide/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Upgrading from Rails 7.2 to Rails 8 - The Latest and Greatest</a></p><p class="paragraph" style="text-align:left;">Joe Combs published a new article about <a class="link" href="https://josephecombs.com/2026/02/27/cursor-and-modern-rails-from-zero-to-production?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Cursor + Modern Rails: From Zero to Production</a></p><p class="paragraph" style="text-align:left;">Ali Fadel, Ibraheem Tuffaha published a new article about <a class="link" href="https://www.milkstraw.ai/blog/webauthn-rails-setup-passkey-registration?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Implementing WebAuthn (Passkeys) in Rails: Setup and Registration - MilkStraw AI</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">Greg Molnar published a new article about <a class="link" href="https://greg.molnar.io/blog/blocking-bots-with-fail2ban/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Blocking bots with fail2ban | Greg Molnar</a></p><p class="paragraph" style="text-align:left;">Richard Schneeman published a new article about <a class="link" href="https://www.schneems.com/2026/03/01/how-to-sustain-heroku/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to &quot;Sustain Heroku&quot;</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=b018fe1d-0864-477f-946a-62f20c578cfc&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 169</title>
  <description>The one where 37 Signals launches Upright open source monitoring tool, Rubocop gets an experimental MCP server, Rails Designer shows us how to use Stimulus to record videos in Rails and RSpec launches v.4.0.0.beta1</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/15c1533f-3c84-4a8e-9ac1-96019bc38f28/cover-page-edition-169.png" length="362597" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-169</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-169</guid>
  <pubDate>Mon, 23 Feb 2026 14:13:40 +0000</pubDate>
  <atom:published>2026-02-23T14:13:40Z</atom:published>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#jobs" rel="noopener noreferrer nofollow">💼 Jobs</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><h3 class="heading" style="text-align:left;" id="the-tech-newsletter-for-engineers-w">The Tech newsletter for Engineers who want to stay ahead</h3><div class="image"><a class="image__link" href="https://magic.beehiiv.com/v1/5f7ce6e3-9a71-416b-99a7-606c5f7e2447?email={{email}}&redirect_to=https%3A%2F%2Fcodenewsletter.ai%2Fforms%2F14166360-de71-46c4-8722-878d417fab5c&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_8ff4344a-54c9-49da-9698-14889a2295af_94e90c2e&bhcl_id=d61ce4ec-4a67-4061-a101-cff32824f40d_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/67300775-7738-44d1-a246-dd3e5c0d1713/The_Morning_Paper_for_AI___ML_Engineers_V2__1_.jpg?t=1759254145"/></a></div><p class="paragraph" style="text-align:left;">Tech moves fast, but you&#39;re still playing catch-up?</p><p class="paragraph" style="text-align:left;">That&#39;s exactly why 100K+ engineers working at Google, Meta, and Apple read <a class="link" href="https://magic.beehiiv.com/v1/5f7ce6e3-9a71-416b-99a7-606c5f7e2447?email={{email}}&redirect_to=https%3A%2F%2Fcodenewsletter.ai%2Fforms%2F14166360-de71-46c4-8722-878d417fab5c&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_8ff4344a-54c9-49da-9698-14889a2295af_94e90c2e&bhcl_id=d61ce4ec-4a67-4061-a101-cff32824f40d_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">The Code</a> twice a week.</p><p class="paragraph" style="text-align:left;">Here&#39;s what you get:</p><ul><li><p class="paragraph" style="text-align:left;">Curated tech news that shapes your career - Filtered from thousands of sources so you know what&#39;s coming 6 months early.</p></li><li><p class="paragraph" style="text-align:left;">Practical resources you can use immediately - Real tutorials and tools that solve actual engineering problems.</p></li><li><p class="paragraph" style="text-align:left;">Research papers and insights decoded - We break down complex tech so you understand what matters.</p></li></ul><p class="paragraph" style="text-align:left;">All delivered twice a week in just 2 short emails.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://magic.beehiiv.com/v1/5f7ce6e3-9a71-416b-99a7-606c5f7e2447?email={{email}}&redirect_to=https%3A%2F%2Fcodenewsletter.ai%2Fforms%2F14166360-de71-46c4-8722-878d417fab5c&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_8ff4344a-54c9-49da-9698-14889a2295af_94e90c2e&bhcl_id=d61ce4ec-4a67-4061-a101-cff32824f40d_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Join 100K+ engineers</a></p><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://metaredux.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Bozhidar Batsov</a> announced a new website look for <a class="link" href="https://rubocop.org/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RuboCop: The Ruby Linter/Formatter that Serves and Protects</a></p><div class="image"><a class="image__link" href="https://x.com/bbatsov/status/2023871544876007505?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e0cd8bb7-d0e3-42b3-a4bd-c6f96fe1b457/image.png?t=1771770005"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/bbatsov/status/2023871544876007505?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@bbatsov</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://nts.strzibny.name/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Josef Strzibny</a> announced a reduce in pricing for <a class="link" href="https://kamalcourse.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Kamal DevOps</a>: </p><div class="image"><a class="image__link" href="https://x.com/strzibnyj/status/2024770744807461304?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8573b341-41b3-4f85-ada8-5a9dbfc69ba7/image.png?t=1771770058"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/strzibnyj/status/2024770744807461304?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@strzibnyj</a></p></span></div></div><p class="paragraph" style="text-align:left;">Josef also announced an update to his book <a class="link" href="https://testdrivingrails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Test Driving Rails version 1.1</a> that now comes with database optimizations and Claude Code skills. </p><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://blog.codenamev.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Valentino Stoll</a> launched <a class="link" href="https://dailyvibe.ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">dailyvibe.ai</a> - A curated digest of quality content, delivered once a day for cities around the world</p><div class="image"><a class="image__link" href="https://x.com/thecodenamev/status/2024970547189211163?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/70ad072a-0788-40b4-8c11-5fe467a5fffb/image.png?t=1771770494"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/thecodenamev/status/2024970547189211163?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@thecodenamev</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://bsky.app/profile/kyrylo.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Kyrylo Silin</a> prelunached <a class="link" href="https://telesink.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">telesink.com</a> - Know what your product is doing. Right now. They launched so far the open source repository at <a class="link" href="https://github.com/telesink/telesink?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">telesink/telesink: Know what your product is doing</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/kyrylo.org/post/3mfbhxmeknc2q?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4cd52fdb-17d7-49e5-8ca8-f97ef5ed34fe/image.png?t=1771771731"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/kyrylo.org/post/3mfbhxmeknc2q?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://kyrylo.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">kyrylo.org</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://bsky.app/profile/blueridgeruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Blue Ridge Ruby</a> announced they are offering up to 10 scholarship tickets. Fill in <a class="link" href="https://docs.google.com/forms/d/e/1FAIpQLSdHb0FXhvMtHr7qXcMt4fEbiqxwnk0-8hrFPf_miqzrNmBUsg/viewform?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">this application form</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/blueridgeruby.com/post/3mf7tdbkfxs23?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0d2a8412-26a6-4e74-92a3-09f644cae3d1/image.png?t=1771747473"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/blueridgeruby.com/post/3mf7tdbkfxs23?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://blueridgeruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">blueridgeruby.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">📆 <a class="link" href="https://bsky.app/profile/rubycentral.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Ruby Central</a> invited people to share stories about Ruby - <a class="link" href="https://forms.gle/cZ53ySeNaUxSZqhD6?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">submit yours here</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/rubycentral.org/post/3mfcbixdv2j2i?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4ce3974b-a6d1-46c5-bb8f-34517356401e/image.png?t=1771748124"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/rubycentral.org/post/3mfcbixdv2j2i?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://rubycentral.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">rubycentral.org</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://friendlyrb.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Friendly.Rb</a> shared a video from the last edition. See <a class="link" href="https://www.youtube.com/watch?v=bUjVCueMaI0&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">the video on Youtube</a></p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3d6a6af1-595d-48a4-90fe-d7c027591121/image.png?t=1771770737"/></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://rbqconf.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Rbq Conf</a> reminnded us that the <a class="link" href="https://rbqconf.com/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RBQ Conf </a>medium pricing will end in about 2 weeks (a little less now when you receive this newsletter): </p><div class="image"><a class="image__link" href="https://x.com/rbqconf/status/2024937040211575214?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d1cb3144-5dc0-4802-89c1-d42f7cc288e7/image.png?t=1771770960"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rbqconf/status/2024937040211575214?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@rbqconf</a></p></span></div></div><p class="paragraph" style="text-align:left;">📆 <a class="link" href="https://bsky.app/profile/rubycentral.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Ruby Central</a> announced tickets are available at <a class="link" href="https://ti.to/rubyconf/rubyconf-2026?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">RubyConf</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/rubycentral.org/post/3meyqhsv2k323?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7f4af706-5009-4301-8069-5dbfca57cd31/image.png?t=1771771441"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/rubycentral.org/post/3meyqhsv2k323?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://rubycentral.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">rubycentral.org</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/inazarova?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Irina Nazarova</a> shared about the upcoming <a class="link" href="https://t.co/rAI2Aq7Q79?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">SF Ruby Meetup on 25 February</a></p><div class="image"><a class="image__link" href="https://x.com/inazarova/status/2025280846677377278?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b33f44ed-581a-4cb5-808c-c31561f679e3/image.png?t=1771773111"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/inazarova/status/2025280846677377278?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@inazarova</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉 37 Signals launched a new product called Upright. Read the launch article → <a class="link" href="https://dev.37signals.com/introducing-upright/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Introducing Upright: An Open Source Synthetic Monitoring System</a>. Visit the repository at <a class="link" href="https://github.com/basecamp/upright?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">https://github.com/basecamp/upright</a>. Notice the licence of this product is MIT. </p><div class="image"><a class="image__link" href="https://dev.37signals.com/introducing-upright/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7b5dfe0a-11cb-414b-ac65-9e3e779110d4/image.png?t=1771777882"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://dev.37signals.com/introducing-upright/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Introducing Upright: An Open Source Synthetic Monitoring System</a>. </p></span></div></div><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://github.com/koic?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Koichi ITO</a> merged a PR for Rubocop <a class="link" href="https://github.com/rubocop/rubocop/pull/14911?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Support built-in MCP server</a></p><div class="image"><a class="image__link" href="https://github.com/rubocop/rubocop/pull/14911?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b554377d-ec6c-4f1d-b10b-d90c7cef1bd1/image.png?t=1771768854"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/rubocop/rubocop/pull/14911?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">https://github.com/rubocop/rubocop/pull/14911</a></p></span></div></div><p class="paragraph" style="text-align:left;">Here is how to use it: </p><div class="image"><a class="image__link" href="https://github.com/rubocop/rubocop/blob/master/docs/modules/ROOT/pages/usage/mcp.adoc?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e9e362e8-bbb3-4f14-8dcb-0c13c2e2a328/image.png?t=1771768925"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/rubocop/rubocop/blob/master/docs/modules/ROOT/pages/usage/mcp.adoc?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">https://github.com/rubocop/rubocop/blob/master/docs/modules/ROOT/pages/usage/mcp.adoc</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Rails Designer published a tutorial about how to <a class="link" href="https://railsdesigner.com/recording-video-stimulus/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Record video in Rails with Stimulus</a></p><div class="image"><a class="image__link" href="https://railsdesigner.com/recording-video-stimulus/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/122eac9a-2d13-4a41-9bd6-af343ec1ffec/image.png?t=1771787400"/></a><div class="image__source"><span class="image__source_text"><p>Source <a class="link" href="https://railsdesigner.com/recording-video-stimulus/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Record video in Rails with Stimulus</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://github.com/rspec/rspec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">RSpec</a> annmounced versiopn <a class="link" href="https://github.com/rspec/rspec/blob/main/rspec-core/Changelog.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169#400beta1--2026-02-18" target="_blank" rel="noopener noreferrer nofollow">4.0.0.beta1</a>. There are quite a few breaking changes: </p><div class="image"><a class="image__link" href="https://github.com/rspec/rspec/blob/main/rspec-core/Changelog.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169#400beta1--2026-02-18" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d7718847-609a-4180-a8b3-5dc1999e8d30/image.png?t=1771788054"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/rspec/rspec/blob/main/rspec-core/Changelog.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169#400beta1--2026-02-18" target="_blank" rel="noopener noreferrer nofollow">https://github.com/rspec/rspec/blob/main/rspec-core/Changelog.md#400beta1--2026-02-18</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><h3 class="heading" style="text-align:left;">Unlock ChatGPT’s Full Power at Work</h3><div class="image"><a class="image__link" href="https://www.mindstream.news/chatgpt-for-work-bundle/?utm_medium=incentivized-signup&utm_source=beehiivads&utm_campaign={{publication_alphanumeric_id}}&utm_term=beehiivads_{{publication_alphanumeric_id}}_Version-K&_bhiiv=opp_29e8c50a-7111-4d8e-9e88-8727f9598571_ebecf11e&bhcl_id=c3909be1-48b5-41f2-97c1-f45bbfe26ee5_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9d8651f9-aec7-4c73-adc0-871f68c76425/Essential_Resources_Opt_2.2__1920x1080_.png?t=1763752173"/></a></div><p class="paragraph" style="text-align:left;">ChatGPT is transforming productivity, but most teams miss its true potential. Subscribe to <a class="link" href="https://www.mindstream.news/chatgpt-for-work-bundle/?utm_medium=incentivized-signup&utm_source=beehiivads&utm_campaign={{publication_alphanumeric_id}}&utm_term=beehiivads_{{publication_alphanumeric_id}}_Version-K&_bhiiv=opp_29e8c50a-7111-4d8e-9e88-8727f9598571_ebecf11e&bhcl_id=c3909be1-48b5-41f2-97c1-f45bbfe26ee5_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Mindstream</a> for free and access 5 expert-built resources packed with prompts, workflows, and practical strategies for 2025.</p><p class="paragraph" style="text-align:left;">Whether you&#39;re crafting content, managing projects, or automating work, this kit helps you save time and get better results every week.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.mindstream.news/chatgpt-for-work-bundle/?utm_medium=incentivized-signup&utm_source=beehiivads&utm_campaign={{publication_alphanumeric_id}}&utm_term=beehiivads_{{publication_alphanumeric_id}}_Version-K&_bhiiv=opp_29e8c50a-7111-4d8e-9e88-8727f9598571_ebecf11e&bhcl_id=c3909be1-48b5-41f2-97c1-f45bbfe26ee5_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Get Your Free Resource Kit</a></p><hr class="content_break"><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://bsky.app/profile/developwithstyle.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Joel Moss</a> shared a code sample about setting a session variable in a Rails controller in testing environment: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/developwithstyle.com/post/3mfa6r7tqtk2p?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/267ba1d0-ab6a-48ca-991f-b99e1d5edaab/image.png?t=1771767536"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/developwithstyle.com/post/3mfa6r7tqtk2p?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://developwithstyle.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">developwithstyle.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://bsky.app/profile/yarotheslav.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Yaroslav Shmarov</a> shared about asking Claude Code (or in general AI agents) to read the <a class="link" href="https://discuss.rubyonrails.org/t/active-storage-in-production-lessons-learned-and-in-depth-look-at-how-it-works/83289?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Active Storage in production: lessons learned and in-depth look at how it works </a>thread and apply the learnings share there: </p><div class="image"><a class="image__link" href="https://Source: [@yarotheslav.bsky.social](https://bsky.app/profile/yarotheslav.bsky.social/post/3mfeip7sa5s26)" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1abc1ff3-add6-439a-9592-54786fcdeb38/image.png?t=1771767636"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/yarotheslav.bsky.social/post/3mfeip7sa5s26?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://yarotheslav.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">yarotheslav.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">The thread started in 2023 but people are replying to it every year: </p><div class="image"><a class="image__link" href="https://discuss.rubyonrails.org/t/active-storage-in-production-lessons-learned-and-in-depth-look-at-how-it-works/83289/36?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4c63c6ac-b616-4989-ac37-d23bbcb39c72/image.png?t=1771767708"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://discuss.rubyonrails.org/t/active-storage-in-production-lessons-learned-and-in-depth-look-at-how-it-works/83289/36?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">https://discuss.rubyonrails.org/t/active-storage-in-production-lessons-learned-and-in-depth-look-at-how-it-works/83289/36</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://nilesh.trivedi.link/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Nilesh Trivedi</a> shared about using RubyLLM: </p><div class="image"><a class="image__link" href="https://x.com/nileshtrivedi/status/2024665157176349011?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4698dcf6-b020-4a4f-917b-d4f30ff17d31/image.png?t=1771772669"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nileshtrivedi/status/2024665157176349011?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@nileshtrivedi</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://hashrocket.com/team/tony-yunker?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Tony Yunker </a>posted on TIL Hashrocket h<a class="link" href="https://til.hashrocket.com/posts/tu0egszz43-check-subclass-relationships-in-ruby?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">ow to check subclass relationships</a> in Ruby: </p><div class="image"><a class="image__link" href="https://til.hashrocket.com/authors/tonyyunker?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e46a6646-ead0-4086-9205-053e616562e8/image.png?t=1771780769"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://til.hashrocket.com/authors/tonyyunker?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">https://til.hashrocket.com/authors/tonyyunker</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 Josef Šimánek published a new article to propose a single file MCP and created a gem for it <a class="link" href="https://rubyelders.com/writings/2026-02-schnellmcp.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">SchnellMCP: Ruby native MCP server experience</a></p><div class="image"><a class="image__link" href="https://rubyelders.com/writings/2026-02-schnellmcp.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/11745cc5-4b6f-4dce-9a6c-c4ca15e81d17/image.png?t=1771788743"/></a><div class="image__source"><span class="image__source_text"><p>Source <a class="link" href="https://rubyelders.com/writings/2026-02-schnellmcp.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">SchnellMCP: Ruby native MCP server experience</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐<a class="link" href="https://bsky.app/profile/andyw8.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Andy Waite</a> shared a discussion happening about <a class="link" href="https://github.com/rubocop/rubocop/discussions/14910?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">RuboCop&#39;s place in an AI/agentic future · rubocop rubocop · Discussion #14910</a></p><div class="image"><a class="image__link" href="https://github.com/rubocop/rubocop/discussions/14910?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169#discussion-9490180" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/587bee5f-f75f-4c85-bdbc-9523654947de/image.png?t=1771767909"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/rubocop/rubocop/discussions/14910?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169#discussion-9490180" target="_blank" rel="noopener noreferrer nofollow">https://github.com/rubocop/rubocop/discussions/14910#discussion-9490180</a></p></span></div></div><p class="paragraph" style="text-align:left;">Where <a class="link" href="https://github.com/bbatsov?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Bozhidar Batsov</a> (creator of Rubocop) replied: </p><div class="image"><a class="image__link" href="https://github.com/rubocop/rubocop/discussions/14910?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169#discussioncomment-15831317" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2ea948c5-00d0-493b-88b7-2dcec2c51724/image.png?t=1771768465"/></a><div class="image__source"><span class="image__source_text"><p><a class="link" href="https://github.com/rubocop/rubocop/discussions/14910?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169#discussioncomment-15831317" target="_blank" rel="noopener noreferrer nofollow">https://github.com/rubocop/rubocop/discussions/14910#discussioncomment-15831317</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://bsky.app/profile/timriley.info?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Tim Riley</a> asked about feedback on <a class="link" href="https://discourse.hanamirb.org/t/feedback-on-hanami-minitest/1415?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Hanami’s upcoming Minitest support</a>. Readf the full post from Tim with code samples, I am putting here just the last part: </p><div class="image"><a class="image__link" href="https://discourse.hanamirb.org/t/feedback-on-hanami-minitest/1415?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/15b38c1b-8980-4354-af4d-23570de4fcf2/image.png?t=1771769466"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://discourse.hanamirb.org/t/feedback-on-hanami-minitest/1415?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">https://discourse.hanamirb.org/t/feedback-on-hanami-minitest/1415</a> </p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;">❤️ Carmine Paolino published a new article about <a class="link" href="https://paolino.me/ruby-is-the-best-language-for-ai-apps/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby Is the Best Language for Building AI Apps</a></p><div class="image"><a class="image__link" href="https://x.com/paolino/status/2024873420219986221?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d2da7d0c-6736-4ca6-8e03-71b486167de3/image.png?t=1771772823"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/paolino/status/2024873420219986221?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@paolino</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="jobs">💼 Jobs</h2><p class="paragraph" style="text-align:left;">This is a new section curated by Raul from <a class="link" href="https://CalmCompanies.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">CalmCompanies.club</a> \</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Falgrano.com&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Algrano</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Upload your resume to autofill the application form or fill in details about yourself, your experience, your engineering background, and how you think about problems.</p></li><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">Full-Stack Engineer (Not specified) - Remote or Algrano HQ Zürich - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.deel.com%2Fjob-boards%2Falgrano%2Fjob-details%2F143be364-4243-4671-b1ad-1b302bebfdb7%2Foverview&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fapple.com&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apple</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Apple accepts applications to this posting on an ongoing basis. <a class="link" href="https://jobs.apple.com/app/en-us/apply/200645173-3543?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Submit Resume</a></p></li></ul><ul><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">🆕 Full-stack Software Engineer ($147,400 - $272,100) - Cupertino, California, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fapp%2Fen-us%2Fapply%2F200646220-0836&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">🆕 Senior Backend/Fullstack Engineer, Creativity Apps ($171,600 and $302,200) - San Diego, California, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fapp%2Fen-us%2Fapply%2F200645775-3543&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><b>Backend</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Software Engineer - Backend (Developer Publications) ($171,600 - $302,200) - San Diego, California, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fapp%2Fen-us%2Fapply%2F200645173-3543&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbeehiiv.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">beehiiv</a></p><ul><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">🆕 Senior Software Engineer, Ad Solutions (global) (USD 165,000-185,000/annual) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbeehiiv.bamboohr.com%2Fcareers%2F50&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Better Stack</a></p><ul><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">/^Full-?stack Engineer$/i ($60K - $300K/year + equity) - Remote (NAMER) or On-site (Prague, Czech Republic) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com%2Fcareers&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbuildkite.com&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">BuildKite</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p></li><li><p class="paragraph" style="text-align:left;"><b>Backend</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Engineer (Pipelines) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5031519008&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Engineer (Test Engine) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5021558008&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><b>DevOps</b></p><p class="paragraph" style="text-align:left;"> • 🆕 DevOps Support Engineer ($95,000-$125,000) - Remote US - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5097330008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Foncactus.com%2F&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Cactus</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Submit your resume at <a class="link" href="https://workoncactus.com/?utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">workoncactus.com</a>Call with Maya, our AI assistant - (415) 360-3350 Write us why you are interested at <a class="link" href="mailto:join@oncactus.com" target="_blank" rel="noopener noreferrer nofollow">join@oncactus.com</a>. Resumes are great but we’d love to see that you know how to write and can communicate effectively. Don&#39;t go overboard, under 500 words is more than enough. Call with CTO founder - assess background and technical alignment Onsite Interview to meet the team, including our CEO Ajith - (you get to know the company and we get to know you) Two-week paid work trial Offer</p></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Senior Ruby on Rails + AI Engineer ($120K - $150K) - San Mateo, CA, US - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fwww.ycombinator.com%2Fcompanies%2Foncactus%2Fjobs%2FEQeRwos-senior-ruby-on-rails-ai-engineer&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Circle</a></p><p class="paragraph" style="text-align:left;">‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p><ul><li><p class="paragraph" style="text-align:left;">Infrastructure</p><ul><li><p class="paragraph" style="text-align:left;">Senior Back-End Software Engineer, Infra ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F4961366008&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Applied AI ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5066690008&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, CRM ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5076959008&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Live ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5077650008&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, CMS ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5096679008&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Growth ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5112587008&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Payments ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5096777008&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">QA</p><ul><li><p class="paragraph" style="text-align:left;">🆕<span style="color:rgb(0, 0, 0);font-size:medium;"> Senior Quality Platform Engineer ($120,000 - $130,000 USD per year) - Remote - </span><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5058408008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcliniko.com&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Cliniko</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: The following page has the application form with a few questions. The “short friendly summary” field needs to give us enough information to be interested in taking you to the next stage. We typically get a lot of applications (there will be thousands), so do put some effort into this section please. Notably, there&#39;s no resume or cover letter submission, so this is your spot to give us some insight into who you are. And please be yourself, there’s no need for formality. There&#39;ll be a few other short questions, including one asking for an answer to a pseudocode statement, and one requiring some searching on our website. It&#39;s important to answer those two correctly. We won’t consider any applications that get either wrong. </p></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">🆕 Full Stack Developer (Salary not specified) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fapply.workable.com%2Fcliniko%2Fj%2FB8F753BB53%2Fapply&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcompanycam.com&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">CompanyCam</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Upload your resume, a cover letter, and answer a couple of questions about the role and your experience.</p></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Senior Software Engineer (Ruby on Rails/React) ($175k - $200k) - U.S. Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcompanycam.com%2Fjob%3Fgh_jid%3D7617931003&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fevilmartians.com&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Evil Martians</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Don’t send us a standard CV. Send us an email to <a class="link" href="mailto:obey-backend@evilmartians.com" target="_blank" rel="noopener noreferrer nofollow">obey-backend@evilmartians.com</a> with your full name as the email subject. The email must be in Russian. In your email: Your story. Tell us about your experience, interests, your previous projects, and your role (what did you do or achieve). Code showcase. As a starting point, we need to see some sample code. You can send us links to your GitHub projects or Pull Requests. You can also create (secret) GitHub Gists to send us code samples from your closed source projects: something that solves a non-obvious, advanced task, or examples of beautiful code. Ideally, you would also describe what the code does, include tests, and a general description of the feature or the problem relevant to the code. Location & relocation. Mention your current location and if you’re open to relocation. We do not hire in Russia.</p></li><li><p class="paragraph" style="text-align:left;">Backend</p><ul><li><p class="paragraph" style="text-align:left;">Ruby Backend Engineer ($65K – $110K gross annual salary) - Remote (minimum of 3 hours daily overlap with the Pacific Timezone; relocation to Portugal possible) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=mailto%3Aobey-backend%40evilmartians.com&utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://bsky.app/profile/afomera.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Andrea Fomera</a> announced <a class="link" href="https://afomera.dev/posts/2026-02-20-checkset-introduction?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Checkset - a Ruby gem for repeatable verifications using Playwright</a> - Link to <a class="link" href="https://github.com/afomera/checkset?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Github repository</a></p><div class="image"><a class="image__link" href="https://afomera.dev/posts/2026-02-20-checkset-introduction?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/14250fc5-d500-4625-b408-fd3e0a94e608/image.png?t=1771771912"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://afomera.dev/posts/2026-02-20-checkset-introduction?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">https://afomera.dev/posts/2026-02-20-checkset-introduction</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://bsky.app/profile/jakobs.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Jakob Skjerning</a> announced a new UI library for Rails: <a class="link" href="https://mentalized.net/journal/2026/02/21/flowbite-components/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Announcing Flowbite Components for Rails</a>. See directly all the components on <a class="link" href="https://flowbite-components.substancelab.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Flowbite website</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/jakobs.bsky.social/post/3mfemuyzqzq2m?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/66e11441-ad9d-42a8-a571-256a114a89f3/image.png?t=1771772147"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/jakobs.bsky.social/post/3mfemuyzqzq2m?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://jakobs.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">jakobs.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="http://www.stablegen.io/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Stable Gen</a> announced a new gem <a class="link" href="https://github.com/wuliwong/token_ledger?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">token_ledger: A double-entry accounting ledger for managing token balances in Ruby on Rails applications. Provides atomic transactions, idempotency, audit trails, and thread-safe operations.</a></p><div class="image"><a class="image__link" href="https://github.com/wuliwong/token_ledger?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1c971c55-537c-4720-85fa-30a3064eb080/image.png?t=1771772534"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/wuliwong/token_ledger?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://github.com/wuliwong/token_ledger</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://alexanderzeitler.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Alexander Zeitler </a>announced a new project <a class="link" href="https://github.com/Shivareddy-Aluri/solid-queue-tui?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">solid-queue-tui: A terminal UI dashboard for Solid Queue</a></p><div class="image"><a class="image__link" href="https://github.com/Shivareddy-Aluri/solid-queue-tui?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9da40a7c-4e3c-448e-8454-896b17bf0b17/image.png?t=1771773380"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/Shivareddy-Aluri/solid-queue-tui?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://github.com/Shivareddy-Aluri/solid-queue-tui</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/skryl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Alex Skryl</a> published a new gem <a class="link" href="https://github.com/skryl/mlx-ruby?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">mlx</a> - &quot;A Ruby wrapper for the native MLX machine learning runtime.&quot; (MLX is a NumPy-like array framework for machine learning)</p><div class="image"><a class="image__link" href="https://github.com/skryl/mlx-ruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bfe147ea-6ba5-4357-98ca-df82415a35dd/image.png?t=1771776995"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/skryl/mlx-ruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">https://github.com/skryl/mlx-ruby</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/mdotvasylenchuk?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Mykhailo Vasylenchuk </a>published a new gem <a class="link" href="https://github.com/VasylenchukMischa/fake-file?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">fake-file</a> - &quot;gem used different libraries to create fake file as fast as these libraries work&quot;</p><div class="image"><a class="image__link" href="https://github.com/mdotvasylenchuk/fake-file?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6ae80887-df90-43ed-b6d9-1459cf95c8ee/image.png?t=1771780912"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/mdotvasylenchuk/fake-file?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://github.com/mdotvasylenchuk/fake-file</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/patriciomacadden?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Patricio Mac Adden </a> published a new gem <a class="link" href="https://github.com/sinaptia/ruby_llm-evals?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">ruby_llm-evals</a> - &quot;LLM evaluation engine for Rails.&quot;</p><div class="image"><a class="image__link" href="https://github.com/sinaptia/ruby_llm-evals?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c55aaba2-a95f-442e-a78e-921d4e81e8a7/image.png?t=1771786057"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/sinaptia/ruby_llm-evals?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">https://github.com/sinaptia/ruby_llm-evals</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/MadBomber?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Dewayne VanHoozer</a> published a new gem <a class="link" href="https://github.com/MadBomber/robot_lab?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">robot_lab</a> - &quot;RobotLab is a Ruby framework for building and orchestrating multi-robot LLM workflows. Built on ruby_llm, it provides robots with template-based prompts, tools, and shared memory; networks for coordinating multiple robots with intelligent routing; MCP (Model Context Protocol) integration for external tool servers; a memory system with Redis backend and semantic caching; and Rails integration with generators and ActiveRecord- backed conversation history. &quot;</p><div class="image"><a class="image__link" href="https://github.com/MadBomber/robot_lab?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9f448067-aa1b-4bee-b354-da16807d0374/image.png?t=1771786714"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/MadBomber/robot_lab?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">https://github.com/MadBomber/robot_lab</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Mario Alberto Chávez announced <a class="link" href="https://mariochavez.io/desarrollo/2026/02/21/recuerd0-source-code-now-available/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Recuerd0 Source Code Now Available</a> under OSASSY license → See <a class="link" href="https://github.com/maquina-app/recuerd0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">the Github Repo</a></p><div class="image"><a class="image__link" href="https://github.com/maquina-app/recuerd0?tab=readme-ov-file&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/63dc98db-d412-4d6a-ac3d-b7c5f8cc7486/image.png?t=1771788972"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/maquina-app/recuerd0?tab=readme-ov-file&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">https://github.com/maquina-app/recuerd0</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://bsky.app/profile/fxn.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Xavier Noria</a> announced an update for <a class="link" href="https://github.com/fxn/zeitwerk?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">zeitwerk</a> - &quot; Zeitwerk implements constant autoloading with Ruby semantics. Each gem and application may have their own independent autoloader, with its own configuration, inflector, and logger. Supports autoloading, reloading, and eager loading. &quot;</p><div class="image"><a class="image__link" href="https://bsky.app/profile/fxn.bsky.social/post/3mf74yjktvs2o?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/87f1d5ed-f6e2-4656-957e-964fb9ae9ad6/image.png?t=1771771531"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fxn.bsky.social/post/3mf74yjktvs2o?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fxn.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">fxn.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://bsky.app/profile/marcoroth.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Marco Roth</a> announced an update for <a class="link" href="https://github.com/marcoroth/herb/pull/1216?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Herb Parser: Introduce UnclosedCloseTagError</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/marcoroth.dev/post/3mfaxkzr5c22n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c45729d8-68ad-4c58-a432-a93b30753aad/image.png?t=1771771675"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/marcoroth.dev/post/3mfaxkzr5c22n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://marcoroth.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">marcoroth.dev</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://adamchalmers.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Adam Chalmers</a> announced a new version of rv with <a class="link" href="https://github.com/spinel-coop/rv/releases/tag/v0.5.1?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Release v0.5.1 · spinel-coop/rv</a></p><div class="image"><a class="image__link" href="https://x.com/adam_chal/status/2024211835747021173?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/da57ac75-cba7-4106-a009-17233209444d/image.png?t=1771772624"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/adam_chal/status/2024211835747021173?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@adam_chal</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 Carmine Paolino announced a new version of <a class="link" href="https://paolino.me/rubyllm-1-12-agents/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">RubyLLM version 1.12 - Agent DSL</a></p><div class="image"><a class="image__link" href="https://paolino.me/rubyllm-1-12-agents/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/db61884a-4745-4b0e-904c-b9fcefaf5698/image.png?t=1771837298"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://paolino.me/rubyllm-1-12-agents/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">https://paolino.me/rubyllm-1-12-agents/</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/fatkodima?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Dima Fatko</a> announced a new version of simpecov with <a class="link" href="https://github.com/simplecov-ruby/simplecov/pull/1154?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Add support for </a>oneshot_lines<a class="link" href="https://github.com/simplecov-ruby/simplecov/pull/1154?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow"> coverage mode by fatkodima · Pull Request #1154 · simplecov-ruby/simplecov</a></p><div class="image"><a class="image__link" href="https://x.com/fatkodima/status/2024185457387446458?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f5b85625-84a1-4037-a830-961eaf732c9c/image.png?t=1771772581"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/fatkodima/status/2024185457387446458?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@fatkodima</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://bsky.app/profile/nateberkopec.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared about thinking about development with gen AI: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/nateberkopec.bsky.social/post/3mfcldl6h362a?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/705e6063-5bd5-4369-8ae6-a6dd894f7e0b/image.png?t=1771771860"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/nateberkopec.bsky.social/post/3mfcldl6h362a?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://nateberkopec.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">nateberkopec.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://thomwolf.io/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Thomas Wolf</a> shared about changes generate by generative AI. Here is the TL;DR they shared but you should <a class="link" href="https://threadreaderapp.com/thread/2023387043967959138.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">read the entire post shared</a></p><div class="image"><a class="image__link" href="https://x.com/Thom_Wolf/status/2023387043967959138?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/03447dbe-9087-4d69-a935-51ebf7520584/image.png?t=1771772342"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/Thom_Wolf/status/2023387043967959138?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@Thom_Wolf</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="http://claude.ai/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Claude</a> announced <a class="link" href="https://www.anthropic.com/news/claude-code-security?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Making frontier cybersecurity capabilities available to defenders \ Anthropic</a></p><div class="image"><a class="image__link" href="https://x.com/claudeai/status/2024907535145468326?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a641c01e-bd35-4c86-b15a-5719756c1a5d/image.png?t=1771772888"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/claudeai/status/2024907535145468326?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">@claudeai</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><p class="paragraph" style="text-align:left;"></p><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 <a class="link" href="https://twitter.com/vipulnsward?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Vipul A M</a> published a new edition of This Week in Rails about <a class="link" href="https://rubyonrails.org/2026/2/20/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">New date time helpers, improved hash methods and more!</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new edition about <a class="link" href="https://rubyweekly.com/issues/788?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RSpec 4.0 beta plus Matz&#39;s latest Ruby decisions</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧Errol Schmidt published a new podcast about <a class="link" href="https://open.spotify.com/episode/5muHods7xOcg7s2LZyN1bd?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">David Hill: Ruby Gala, Session Planning for Ruby Conf and Effective Communication - Technology For Humans</a></p><p class="paragraph" style="text-align:left;">🎧 The Bike Shed published a new podcast about <a class="link" href="https://feed.thoughtbot.com/link/24077/17277952/the-bike-shed-ep-494-primitive-obsession?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Bike Shed Ep 494: Primitive Obsession</a></p><p class="paragraph" style="text-align:left;">🎧 Rails Business published a new podcast about <a class="link" href="https://www.buzzsprout.com/2435951/episodes/18701005-kyle-keesling?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Kyle Keesling - the co-owner of PASS Testing</a></p><p class="paragraph" style="text-align:left;">🎧 Giant Robots Podcast published a new podcast about <a class="link" href="https://feed.thoughtbot.com/link/24077/17279457/giant-robots-podcast-ep-603-the-product-we-are-going-to-build?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ep 603: The product we are going to build</a></p><p class="paragraph" style="text-align:left;">🎧 Remote Ruby published a new podcast about <a class="link" href="https://www.buzzsprout.com/2260490/episodes/18705858-bridge-components-swift-ui-and-more-with-joe-masilotti?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Bridge Components, Swift UI and more with Joe Masilotti</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Joël Quenneville published a new video about <a class="link" href="https://www.youtube.com/watch?v=F5YpXQDS4fo&embeds_referring_euri=https%3A%2F%2Fx.com%2F&source_ve_path=Mjg2NjY&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">State is the First Decision You Never Made</a></p><p class="paragraph" style="text-align:left;">🎥 GoRails published a new episode about <a class="link" href="https://gorails.com/episodes/dynamic-partial-rendering?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Dynamic Partial Rendering</a></p><p class="paragraph" style="text-align:left;"></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">Yaroslav Kurbatov published a new article about <a class="link" href="https://evilmartians.com/chronicles/writing-custom-rubocop-rules-in-2026?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Writing custom RuboCop rules in 2026</a></p><p class="paragraph" style="text-align:left;">Maciej Mensfeld published a new article about <a class="link" href="https://mensfeld.pl/2026/02/waterdrop-fd-polling-50-percent-faster/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">One Thread to Poll Them All: How a Single Pipe Made WaterDrop 50% Faster</a></p><p class="paragraph" style="text-align:left;">Will Larry published a new article about <a class="link" href="https://thoughtbot.com/blog/a-javascript-developer-s-guide-to-rails-authorization-with-pundit?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">A JavaScript developer&#39;s guide to Rails: Authorization with Pundit</a></p><p class="paragraph" style="text-align:left;">Alessandro Rodi published a new article about <a class="link" href="https://coorasse.com/blog/from-three-queries-to-one-with-upsert/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">From 3 queries to 1 with Rails upsert</a></p><p class="paragraph" style="text-align:left;">Jake Goldsborough published a new article about <a class="link" href="https://blog.discourse.org/2026/02/how-we-fixed-yaml-comment-preservation-in-ruby-and-why-we-sponsored-it/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How We Fixed YAML Comment Preservation in Ruby (And Why We Sponsored It)</a></p><p class="paragraph" style="text-align:left;">Syed Aslam published a new article about <a class="link" href="https://syedaslam.com/posts/when-or-equals-betrays-your-memoization/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">When ||= Betrays Your Memoization</a></p><p class="paragraph" style="text-align:left;">Ruby Gems published a new article about <a class="link" href="https://blog.rubygems.org/2026/02/16/organizations-beta.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Organizations Private Beta</a></p><p class="paragraph" style="text-align:left;">Patricio Mac Adden published a new article about <a class="link" href="https://sinaptia.dev/posts/evaluating-llm-prompts-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Evaluating LLM prompts in Rails</a></p><p class="paragraph" style="text-align:left;">Jonathan Rochkind published a new article about <a class="link" href="https://bibwild.wordpress.com/2026/02/18/activerecord-neighbor-vector-search-with-per-document-max/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">ActiveRecord neighbor vector search, with per-document max</a></p><p class="paragraph" style="text-align:left;">Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/recording-video-stimulus/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Record video in Rails with Stimulus</a></p><p class="paragraph" style="text-align:left;">David Morales published a new article about <a class="link" href="https://develclan.com/cost-change-software/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Cost of Change in Software</a></p><p class="paragraph" style="text-align:left;">Lovro Bikić published a new article about <a class="link" href="https://lovro-bikic.github.io/300-days-of-rubocop/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">300 Days of RuboCop</a></p><p class="paragraph" style="text-align:left;">Josef Šimánek published a new article about <a class="link" href="https://rubyelders.com/writings/2026-02-schnellmcp.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">SchnellMCP: Ruby native MCP server experience</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">Amol Joshi published a new article <a class="link" href="https://blog.saeloun.com/2026/02/19/rails-6-to-7-upgrade-guide/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-169" target="_blank" rel="noopener noreferrer nofollow">Upgrading from Rails 6.1 to Rails 7 - The Modern Stack</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">Daniela Baron published a new article about <a class="link" href="https://danielabaron.me/blog/building-an-ai-blog-editor-with-claude-skills/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Building an AI Blog Editor with Claude Skills</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=70bc0b62-def8-48ee-ad59-978db50c9942&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 168</title>
  <description>The one where we get Hotwire Skills from Hotwire Club, Peter Cooper launches Planet Ruby, Evil Martians launches Tutorialkit.rb, Yuri Sidorov launched Ruby Community and new features approved to be implemented in Ruby</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/da434555-0e5a-4581-a2af-deb42da4c262/cover-page-edition-168.png" length="384768" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-168</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-168</guid>
  <pubDate>Tue, 17 Feb 2026 10:47:23 +0000</pubDate>
  <atom:published>2026-02-17T10:47:23Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#jobs" rel="noopener noreferrer nofollow">💼 Jobs</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><h3 class="heading" style="text-align:left;" id="vibe-code-with-your-voice">Vibe code with your voice</h3><div class="image"><a class="image__link" href="https://ref.wisprflow.ai/beehiiv-dev/?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&utm_term=dev_primary1&_bhiiv=opp_8fa42944-59bb-47e9-b054-9d551f69966b_6e77d35f&bhcl_id=759c2a35-b9fb-41a1-adba-c3f1f88e26e1_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ec544231-dfb6-48e2-a3bf-5f064ad0eb32/Newsletters_Image_1920x1080__8_.png?t=1767983375"/></a></div><p class="paragraph" style="text-align:left;">Vibe code by voice. <a class="link" href="https://ref.wisprflow.ai/beehiiv-dev/?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&utm_term=dev_primary1&_bhiiv=opp_8fa42944-59bb-47e9-b054-9d551f69966b_6e77d35f&bhcl_id=759c2a35-b9fb-41a1-adba-c3f1f88e26e1_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Wispr Flow</a> lets you dictate prompts, PRDs, bug reproductions, and code review notes directly in Cursor, Warp, or your editor of choice. Speak instructions and Flow will auto-tag file names, preserve variable names and inline identifiers, and format lists and steps for immediate pasting into GitHub, Jira, or Docs. That means less retyping, fewer copy and paste errors, and faster triage. Use voice to dictate prompts and directions inside Cursor or Warp and get developer-ready text with file name recognition and variable recognition built in. For deeper context and examples, see our Vibe Coding article on <a class="link" href="https://ref.wisprflow.ai/beehiiv-dev/?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&utm_term=dev_primary1&_bhiiv=opp_8fa42944-59bb-47e9-b054-9d551f69966b_6e77d35f&bhcl_id=759c2a35-b9fb-41a1-adba-c3f1f88e26e1_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">wisprflow.ai</a>. Try Wispr Flow for engineers.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://ref.wisprflow.ai/beehiiv-dev/?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&utm_term=dev_primary1&_bhiiv=opp_8fa42944-59bb-47e9-b054-9d551f69966b_6e77d35f&bhcl_id=759c2a35-b9fb-41a1-adba-c3f1f88e26e1_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Try Wispr Flow</a></p><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://peterc.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Peter Cooper</a> from <a class="link" href="https://rubyweekly.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Ruby Weekly</a> launched a new website <a class="link" href="https://planetruby.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Planet Ruby</a> where you can read the top Ruby blogs every day: </p><div class="image"><a class="image__link" href="https://planetruby.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a0cdd608-0ffb-4584-a26d-b58780efab95/image.png?t=1771300596"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://planetruby.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://planetruby.org</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/evilmartians?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Evil Martians</a> launched <a class="link" href="https://evilmartians.com/chronicles/tutorialkit-rb-the-ruby-wasm-journey-goes-onward?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Tutorialkit.rb</a></p><div class="image"><a class="image__link" href="https://evilmartians.com/chronicles/tutorialkit-rb-the-ruby-wasm-journey-goes-onward?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3d61aff4-7f35-4a34-9c6b-530041642ea0/image.png?t=1771103830"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://evilmartians.com/chronicles/tutorialkit-rb-the-ruby-wasm-journey-goes-onward?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://evilmartians.com/chronicles/tutorialkit-rb-the-ruby-wasm-journey-goes-onward</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/YuriSidorov?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Yuri Sidorov</a> launched <a class="link" href="https://rubycommunity.org/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Ruby Community</a></p><div class="image"><a class="image__link" href="https://rubycommunity.org/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5eec593d-85bb-4688-88e3-55eb9a82b890/image.png?t=1771103976"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubycommunity.org/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://rubycommunity.org/</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://mariochavez.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Mario Alberto Chávez</a> launched a new project <a class="link" href="https://recuerd0.ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Recuerd0</a></p><div class="image"><a class="image__link" href="https://recuerd0.ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3dde19a2-6c72-4b5e-b916-7f1429097ee1/image.png?t=1771303084"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://recuerd0.ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://recuerd0.ai</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://bsky.app/profile/julianrubisch.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Julian Rubisch</a> created <a class="link" href="https://github.com/TheHotwireClub/hotwire_club-skills?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">new skills for Hotwire</a>. I think this is great news as there are not many skills (that I know of) that are specific for Hotwire: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/julianrubisch.at/post/3meqhz6a4j226?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a16736a2-9ef7-4d47-bd88-c68fb7656edd/image.png?t=1771319137"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/julianrubisch.bsky.social/post/3meqhz6a4j226?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://julianrubisch.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">julianrubisch.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">You should also consider subscribing to <a class="link" href="http://Hotwire.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Hotwire.club</a> and support Julian and the other people that are involved in making the Hotwire club an amazing place to learn: </p><div class="image"><a class="image__link" href="https://hotwire.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c43fff56-18c9-4fe1-82fb-65f402cd94c0/image.png?t=1771319386"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://hotwire.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://hotwire.club</a></p></span></div></div><div class="blockquote"><blockquote class="blockquote__quote"><p class="paragraph" style="text-align:left;">We will tackle coding challenges in a biweekly pace, approaching the building blocks of Hotwire from first principles. We will furthermore highlight that Turbo and Stimulus are JavaScript libraries independent of any specific backend. This will equip us with a more profound knowledge of the capabilities, boundaries towards each other, and limits of the elements of the stack.</p><figcaption class="blockquote__byline"> From <a class="link" href="https://hotwire.club/about/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://hotwire.club/about/</a></figcaption></blockquote></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 From <a class="link" href="http://Rubyevents.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Rubyevents.org</a> here is a reminder of some upcoming Ruby conferences: </p><div class="image"><a class="image__link" href="https://www.rubyevents.org/events?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a54d53ba-24e4-4b51-a58b-efc9afe3e8a0/image.png?t=1771319595"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.rubyevents.org/events?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://www.rubyevents.org/events</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉 A feature proposal by Jean Boussier from 3 years ago <a class="link" href="https://bugs.ruby-lang.org/issues/19107?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Allow trailing comma in method signature</a> was just accepted by Matz in the last Dev Meeting. </p><div class="image"><a class="image__link" href="https://bugs.ruby-lang.org/issues/19107?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/828f4bc8-ef63-4ce2-ba28-bb978f670b8c/image.png?t=1771300898"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bugs.ruby-lang.org/issues/19107?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://bugs.ruby-lang.org/issues/19107</a></p></span></div></div><div class="image"><a class="image__link" href="https://bugs.ruby-lang.org/issues/19107?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1eacd420-b0b6-4d5b-b263-76ff0e2fc392/image.png?t=1771301197"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bugs.ruby-lang.org/issues/19107?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://bugs.ruby-lang.org/issues/19107</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://x.com/dbackeus?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">David Backeus</a> also published an article about this <a class="link" href="https://lovingruby.com/reasons/43-trailing-commas?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Trailing commas</a>.</p><p class="paragraph" style="text-align:left;">Follow the <a class="link" href="https://github.com/ruby/prism/pull/3920?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">PR in Ruby/Prism</a> which is open and not yet merged </p><p class="paragraph" style="text-align:left;">👉 Another proposal from Jean Boussier about adding Dir.scan<a class="link" href="https://bugs.ruby-lang.org/issues/21800?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow"> to list directory entires with their type</a> was also accepted in <a class="link" href="https://github.com/ruby/dev-meeting-log/blob/master/2026/DevMeeting-2026-02-12.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168#feature-21800-new-api-to-efficiently-scan-directories-efficiently-byroot" target="_blank" rel="noopener noreferrer nofollow">the last Dev Meeting</a>. The PR is already <a class="link" href="https://github.com/ruby/ruby/pull/16153?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">merged to Ruby master</a></p><div class="codeblock"><pre><code>Dir.scan(path) &#123; |entry_name, entry_type| &#125;
Dir.scan(path) # =&gt; [[entry_name, entry_type], ...]</code></pre></div><div class="image"><a class="image__link" href="https://github.com/ruby/dev-meeting-log/blob/master/2026/DevMeeting-2026-02-12.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168#feature-21800-new-api-to-efficiently-scan-directories-efficiently-byroot" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/196c795a-5560-4591-912b-0e4714d4d84f/image.png?t=1771301422"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/ruby/dev-meeting-log/blob/master/2026/DevMeeting-2026-02-12.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168#feature-21800-new-api-to-efficiently-scan-directories-efficiently-byroot" target="_blank" rel="noopener noreferrer nofollow">https://github.com/ruby/dev-meeting-log/blob/master/2026/DevMeeting-2026-02-12.md#feature-21800-new-api-to-efficiently-scan-directories-efficiently-byroot</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Proposal from Marc-Andre Lafortune about <a class="link" href="https://bugs.ruby-lang.org/issues/15330?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">autoload_relative</a> was also accepted in the <a class="link" href="https://github.com/ruby/dev-meeting-log/blob/master/2026/DevMeeting-2026-02-12.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168#feature-21800-new-api-to-efficiently-scan-directories-efficiently-byroot" target="_blank" rel="noopener noreferrer nofollow">same DevMeeting</a> and <a class="link" href="https://github.com/ruby/ruby/pull/16148?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">merged to Ruby master</a></p><div class="image"><a class="image__link" href="https://github.com/ruby/dev-meeting-log/blob/master/2026/DevMeeting-2026-02-12.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168#feature-15330-introduce-autoload_relative-ioquatix" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6b9cdeb1-6b5f-4f1a-9fe0-193487521424/image.png?t=1771301681"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/ruby/dev-meeting-log/blob/master/2026/DevMeeting-2026-02-12.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168#feature-15330-introduce-autoload_relative-ioquatix" target="_blank" rel="noopener noreferrer nofollow">DevMeeting</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 A proposal from Ufuk Kayserilioglu about <a class="link" href="https://bugs.ruby-lang.org/issues/19979?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Allow methods to declare that they don&#39;t accept a block via </a>&nil has also <a class="link" href="https://github.com/ruby/ruby/pull/11065?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">been merged to master</a>: </p><div class="image"><a class="image__link" href="https://bugs.ruby-lang.org/issues/19979?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a6bb3269-7086-41c7-a8d7-8533d52a417e/image.png?t=1771302144"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bugs.ruby-lang.org/issues/19979?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://bugs.ruby-lang.org/issues/19979</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 A proposal from Earlopain about <a class="link" href="https://bugs.ruby-lang.org/issues/21781?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Add </a>fetch_values<a class="link" href="https://bugs.ruby-lang.org/issues/21781?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow"> method on </a>ENV has also been accepted in the in <a class="link" href="https://github.com/ruby/dev-meeting-log/blob/master/2026/DevMeeting-2026-02-12.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168#feature-21800-new-api-to-efficiently-scan-directories-efficiently-byroot" target="_blank" rel="noopener noreferrer nofollow">the last Dev Meeting</a>. Follow the <a class="link" href="https://github.com/ruby/ruby/pull/16177?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">open PR</a> to know when it will be merged to Ruby master</p><div class="image"><a class="image__link" href="https://bugs.ruby-lang.org/issues/21781?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/93cce676-71c3-4345-86be-2a3d13bfc565/image.png?t=1771302290"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bugs.ruby-lang.org/issues/21781?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://bugs.ruby-lang.org/issues/21781</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><h3 class="heading" style="text-align:left;" id="free-email-without-sacrificing-your">Free email without sacrificing your privacy</h3><div class="image"><a class="image__link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub2=Concept5_Static1&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Secondary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_term=&utm_ads=Concept5_Static1&_bhiiv=opp_d7caefb4-44d4-4624-93fe-021432f39ce8_598ab766&bhcl_id=1d19ad8d-3e37-4b68-bb52-49a000af05d7_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/443fdef5-9b99-4f25-9761-98b6ced3e3a5/05.png?t=1768321676"/></a></div><p class="paragraph" style="text-align:left;">Gmail tracks you. Proton doesn’t. Get private email that puts your data — and your privacy — first.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub2=Concept5_Static1&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Secondary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_term=&utm_ads=Concept5_Static1&_bhiiv=opp_d7caefb4-44d4-4624-93fe-021432f39ce8_598ab766&bhcl_id=1d19ad8d-3e37-4b68-bb52-49a000af05d7_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Ditch the Gmail data grab</a></p><hr class="content_break"><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/kukicola?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Karol Bąk</a> shared a code sample about Forwardable</p><div class="image"><a class="image__link" href="https://x.com/kukicola/status/2020859531266236515?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6ddc2a63-c38a-483d-b864-cb75be7519a7/image.png?t=1771105266"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kukicola/status/2020859531266236515?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">@kukicola</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 David Backeus published a new article about <a class="link" href="https://lovingruby.com/reasons/44-percent-literals-r?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">#44 Percent literals: %r - 365 Reasons to Love Ruby</a></p><div class="image"><a class="image__link" href="https://lovingruby.com/reasons/44-percent-literals-r?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/85fa8962-f0db-499f-896d-fd0ae6954267/image.png?t=1771321445"/></a><div class="image__source"><span class="image__source_text"><p>Source <a class="link" href="https://lovingruby.com/reasons/44-percent-literals-r?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">#44 Percent literals: %r - 365 Reasons to Love Ruby</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Andy Croll published a new article about <a class="link" href="https://andycroll.com/ruby/use-stringinquirer-for-readable-predicate-methods/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Use StringInquirer for Readable Predicate Methods</a></p><div class="image"><a class="image__link" href="https://andycroll.com/ruby/use-stringinquirer-for-readable-predicate-methods/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f5870741-1211-41b3-989b-f441bc2dfe31/image.png?t=1771321512"/></a><div class="image__source"><span class="image__source_text"><p>Source <a class="link" href="https://andycroll.com/ruby/use-stringinquirer-for-readable-predicate-methods/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Use StringInquirer for Readable Predicate Methods</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐 Mike Dalessio and Fernando Olivares published a new episode of Recordables about <a class="link" href="https://dev.37signals.com/rails-multi-tenancy/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails Multi-Tenancy - Lead Programmer Mike Dalessio shares the benefits of multi-tenant databases and how his work with Fizzy led to the the Active Record Tenanted gem.</a></p><div class="image"><a class="image__link" href="https://dev.37signals.com/rails-multi-tenancy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/75018b8a-8b06-4a24-a051-cd00c1f2e880/image.png?t=1771302725"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://dev.37signals.com/rails-multi-tenancy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://dev.37signals.com/rails-multi-tenancy</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 Vladimir Dementyev published a collection of <a class="link" href="https://github.com/palkan/skills?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Claude Code skills</a></p><div class="image"><a class="image__link" href="https://github.com/palkan/skills?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/dc4fdae3-1f11-4f33-83e8-0260da54018b/image.png?t=1771104241"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/palkan/skills?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://github.com/palkan/skills</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💡<a class="link" href="https://x.com/iuhoay?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">路哈哈</a> created a Claude Code skill for <a class="link" href="https://github.com/iuhoay/skills?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">designing/reviewing Rails apps </a></p><div class="image"><a class="image__link" href="https://github.com/iuhoay/skills?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8ec51a50-c026-426d-be02-80585e221c77/image.png?t=1771104487"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/iuhoay/skills?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://github.com/iuhoay/skills</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://x.com/brian_scanlan?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Brian Scanlan</a> shared a post about Intercom Ruby on Rails monolith CI system</p><div class="image"><a class="image__link" href="https://x.com/brian_scanlan/status/2022278432936058967?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ca4b1d34-433e-46a7-bf13-a40f0f8aeade/image.png?t=1771105092"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/brian_scanlan/status/2022278432936058967?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">@brian_scanlan</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://bsky.app/profile/joel.drapper.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Joel Drapper</a> announced that <a class="link" href="https://www.rubyschema.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">RubySchema has a new website</a> </p><div class="image"><a class="image__link" href="https://bsky.app/profile/joel.drapper.me/post/3meuc7rwbgk2n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7f545aa0-bb22-48bb-8793-a12fc3eb34c4/image.png?t=1771134700"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/joel.drapper.me/post/3meuc7rwbgk2n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://joel.drapper.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">joel.drapper.me</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://github.com/solojavier?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Javier Cervantes</a> announced that Ruby Newbie is merging into Ruby Users Forum and there will be a section with posts tagged wtih <a class="link" href="https://www.rubyforum.org/tag/getting-started/44?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Getting Started</a>: </p><div class="image"><a class="image__link" href="https://github.com/ShortRuby/submit/issues/174?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1078cb54-f75d-44cf-9709-8da975c7ab36/image.png?t=1771303181"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/ShortRuby/submit/issues/174?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://github.com/ShortRuby/submit/issues/174</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="http://writesoftwarewell.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Akshay</a> shared about the token efficiency of both Ruby and Rails</p><div class="image"><a class="image__link" href="https://x.com/typeanglestudio/status/2021504102245728305?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e71b1240-2f3c-452a-ae87-db97c1c6302c/image.png?t=1771104561"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/typeanglestudio/status/2021504102245728305?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">@typeanglestudio</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="http://writesoftwarewell.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Akshay</a> is still surprised about the elegance of Rails in development</p><div class="image"><a class="image__link" href="https://x.com/typeanglestudio/status/2021623337777275115?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/38ccaf2a-c955-45c4-a0a6-c2cbe447c146/image.png?t=1771104651"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/typeanglestudio/status/2021623337777275115?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">@typeanglestudio</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 Florian L. created a new gem → <a class="link" href="https://github.com/Alqemist-labs/agent_ferrum?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">agent_ferrum</a> - “Browser automation library optimized for AI agents. Wraps Ferrum (Chrome headless via CDP) with compact snapshots: accessibility tree + markdown.“</p><div class="image"><a class="image__link" href="https://x.com/Florian_elam/status/2021163605408756169?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/39bde6e3-8d77-48b3-9e0a-2b8fa79f3bae/image.png?t=1771135060"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/Florian_elam/status/2021163605408756169?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://x.com/Florian_elam/status/2021163605408756169</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Bryan Beshore created <a class="link" href="https://github.com/bryanbeshore/query_lens?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">query_lens</a> - “Natural language SQL query builder for Rails, powered by AI“ </p><div class="image"><a class="image__link" href="https://github.com/bryanbeshore/query_lens?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/24e7efe4-75cb-49a2-8af0-1ddb47fe81d0/image.png?t=1771104136"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/bryanbeshore/query_lens?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://github.com/bryanbeshore/query_lens</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/alec-c4?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Alexey Poimtsev</a> annoucned a new gem <a class="link" href="https://github.com/alec-c4/active_record_properties?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">active_record_properties</a> - &quot;Store model settings and properties in JSONB columns with a clean DSL, type casting, default values, and validations. A modern alternative to separate settings tables.&quot;</p><div class="image"><a class="image__link" href="https://github.com/alec-c4/active_record_properties?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/17a364d4-c6c0-415e-9d88-f27e79f0930b/image.png?t=1771258242"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/alec-c4/active_record_properties?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://github.com/alec-c4/active_record_properties</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://bsky.app/profile/jorgegorka.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Jorge Alvarez</a> created a new gem → <a class="link" href="https://github.com/jorgegorka/ariadna?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">ariadna</a> - “Ruby on rails meta-prompting, context engineering and spec-driven development system for Claude Code“</p><div class="image"><a class="image__link" href="https://github.com/jorgegorka/ariadna?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cf38ff8d-0fa9-4e9e-887a-db57eb1e465b/image.png?t=1771272919"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/jorgegorka/ariadna?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://github.com/jorgegorka/ariadna</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/craft-wise?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">craft-wise</a> created a new gem → <a class="link" href="https://github.com/craft-wise/rubycrawl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">rubycrawl</a> - “Production-ready web crawler for Ruby powered by Playwright — Bringing the power of modern browser automation to the Ruby ecosystem with first-class Rails support.“</p><div class="image"><a class="image__link" href="https://github.com/craft-wise/rubycrawl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3276185c-7bc8-4fa5-951b-427aaf7a3a8d/image.png?t=1771273541"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/craft-wise/rubycrawl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://github.com/craft-wise/rubycrawl</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Rails Designer published a new gem <a class="link" href="https://github.com/Rails-Designer/icons/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">icons</a> - &quot;Add any icon library to a Ruby app, from Heroicons, to Lucide to Phosphor (and others). Icons is library-agnostic, so you can add any library while using the same interface.&quot;</p><div class="image"><a class="image__link" href="https://github.com/Rails-Designer/icons?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1ce50b91-b94d-4bef-8dbb-d3e7043651c5/image.png?t=1771300241"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/Rails-Designer/icons?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://github.com/Rails-Designer/icons</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://twitter.com/ffaebi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Fabian</a> announced a new version of <a class="link" href="https://github.com/craft-wise/rubycrawl?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">wise/rubycrawl</a></p><div class="image"><a class="image__link" href="https://github.com/craft-wise/rubycrawl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b72d712e-550d-4eb5-a220-9b759611a516/image.png?t=1771320002"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/craft-wise/rubycrawl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://github.com/craft-wise/rubycrawl</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://metaredux.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Bozhidar Batsov</a> announced a new version of <a class="link" href="https://github.com/rubocop/rubocop/releases/tag/v1.84.2?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">v1.84.2 · rubocop/rubocop</a></p><div class="image"><a class="image__link" href="https://github.com/rubocop/rubocop/releases/tag/v1.84.2?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/08685eec-6ebd-4e49-94de-e657ed75e216/image.png?t=1771104729"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/rubocop/rubocop/releases/tag/v1.84.2?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://github.com/rubocop/rubocop/releases/tag/v1.84.2</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/5katkov?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Stanislav Katkov</a> announced a new update → <a class="link" href="https://poshtui.com/changelog/january-2026-update?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">January 2026 update | POSH TUI</a></p><div class="image"><a class="image__link" href="https://poshtui.com/changelog/january-2026-update?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/beb317e5-1c14-4ee6-87a7-924be923f68e/image.png?t=1771104944"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://poshtui.com/changelog/january-2026-update?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">https://poshtui.com/changelog/january-2026-update</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/heartcombo?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Heartcombo</a> announced a new version of <a class="link" href="https://github.com/heartcombo/devise?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">devise</a> - “Flexible authentication solution for Rails with Warden.“</p><div class="image"><a class="image__link" href="https://x.com/heartcombo/status/2022370761659265255?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9078d818-96f9-4133-a573-dfd5a7f2c517/image.png?t=1771105181"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/heartcombo/status/2022370761659265255?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">@heartcombo</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="jobs">💼 Jobs</h2><p class="paragraph" style="text-align:left;">This is a new section curated by Raul from <a class="link" href="https://CalmCompanies.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">CalmCompanies.club</a> </p><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Falgrano.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Algrano</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Upload your resume to autofill the application form or fill in details about yourself, your experience, your engineering background, and how you think about problems.</p></li><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">Full-Stack Engineer (Not specified) - Remote or Algrano HQ Zürich - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.deel.com%2Fjob-boards%2Falgrano%2Fjob-details%2F143be364-4243-4671-b1ad-1b302bebfdb7%2Foverview&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fapple.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apple</a></p><ul><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">Sr. Ruby on Rails Engineer, ASE ($181,100 - $318,400) - San Francisco, CA - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fen-us%2Fdetails%2F200636173-3577%2Fsr-ruby-on-rails-engineer-ase%3Fteam%3DSFTWR&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><b>Backend</b></p><ul><li><p class="paragraph" style="text-align:left;">🆕 Senior Software Engineer - Backend (Developer Publications) ($171,600 - $302,200) - San Diego, California, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fapp%2Fen-us%2Fapply%2F200645173-3543&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Better Stack</a></p><ul><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">/^Full-?stack Engineer$/i ($60K - $300K/year + equity) - Remote (NAMER) or On-site (Prague, Czech Republic) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com%2Fcareers&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbuildkite.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">BuildKite</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p></li><li><p class="paragraph" style="text-align:left;"><b>Backend</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Engineer (Pipelines) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5031519008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Engineer (Test Engine) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5021558008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Foncactus.com%2F&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Cactus</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Submit your resume at <a class="link" href="https://workoncactus.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">workoncactus.com</a> Call with Maya, our AI assistant - (415) 360-3350 Write us why you are interested at <a class="link" href="mailto:join@oncactus.com" target="_blank" rel="noopener noreferrer nofollow">join@oncactus.com</a>. Resumes are great but we’d love to see that you know how to write and can communicate effectively. Don&#39;t go overboard, under 500 words is more than enough. Call with CTO founder - assess background and technical alignment Onsite Interview to meet the team, including our CEO Ajith - (you get to know the company and we get to know you) Two-week paid work trial Offer</p></li><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Ruby on Rails + AI Engineer ($120K - $150K) - San Mateo, CA, US - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fwww.ycombinator.com%2Fcompanies%2Foncactus%2Fjobs%2FEQeRwos-senior-ruby-on-rails-ai-engineer&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Circle</a></p><p class="paragraph" style="text-align:left;">‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p><ul><li><p class="paragraph" style="text-align:left;"><b>Infrastructure</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Back-End Software Engineer, Infra ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F4961366008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Applied AI ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5066690008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, CRM ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5076959008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Live ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5077650008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, CMS ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5096679008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Growth ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5112587008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Payments ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5096777008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><b>Platform</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Quality Platform Engineer ($120K - $130K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5058408008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">AI Platform Engineer, Applied AI ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5102925008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcliniko.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Cliniko</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: The following page has the application form with a few questions. The “short friendly summary” field needs to give us enough information to be interested in taking you to the next stage. We typically get a lot of applications (there will be thousands), so do put some effort into this section please. Notably, there&#39;s no resume or cover letter submission, so this is your spot to give us some insight into who you are. And please be yourself, there’s no need for formality. There&#39;ll be a few other short questions, including one asking for an answer to a pseudocode statement, and one requiring some searching on our website. It&#39;s important to answer those two correctly. We won’t consider any applications that get either wrong. </p></li><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">🆕 Full Stack Developer (Salary not specified) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fapply.workable.com%2Fcliniko%2Fj%2FB8F753BB53%2Fapply&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcompanycam.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">CompanyCam</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Upload your resume, a cover letter, and answer a couple of questions about the role and your experience.</p></li><li><p class="paragraph" style="text-align:left;"><b>Backend</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Software Engineer (Ruby on Rails) ($175k - $200k) - U.S. Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcompanycam.com%2Fjob%3Fgh_jid%3D7579950003&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Software Engineer (Ruby on Rails/React) ($175k - $200k) - U.S. Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcompanycam.com%2Fjob%3Fgh_jid%3D7617931003&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fevilmartians.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Evil Martians</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Don’t send us a standard CV. Send us an email to <a class="link" href="mailto:obey-backend@evilmartians.com" target="_blank" rel="noopener noreferrer nofollow">obey-backend@evilmartians.com</a> with your full name as the email subject. The email must be in Russian. In your email: Your story. Tell us about your experience, interests, your previous projects, and your role (what did you do or achieve). Code showcase. As a starting point, we need to see some sample code. You can send us links to your GitHub projects or Pull Requests. You can also create (secret) GitHub Gists to send us code samples from your closed source projects: something that solves a non-obvious, advanced task, or examples of beautiful code. Ideally, you would also describe what the code does, include tests, and a general description of the feature or the problem relevant to the code. Location & relocation. Mention your current location and if you’re open to relocation. We do not hire in Russia.</p></li><li><p class="paragraph" style="text-align:left;"><b>Backend</b></p><ul><li><p class="paragraph" style="text-align:left;">Ruby Backend Engineer ($65K – $110K gross annual salary) - Remote (minimum of 3 hours daily overlap with the Pacific Timezone; relocation to Portugal possible) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=mailto%3Aobey-backend%40evilmartians.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="http://ryansinger.co?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Ryan Singer</a> published an article about how he used Claude to create a new project from 0</p><div class="image"><a class="image__link" href="https://x.com/rjs/status/2020184536194428951?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5ad82331-d8ff-45a3-a689-4c8e6ebe3db6/image.png?t=1771103111"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rjs/status/2020184536194428951?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">@rjs</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="http://developer.chrome.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Chrome For Developers</a> announced WebMCP is now available for early preview</p><div class="image"><a class="image__link" href="https://x.com/ChromiumDev/status/2022363079976034455?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c213e9d2-361b-42a8-83ec-021f1abfebeb/image.png?t=1771103502"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/ChromiumDev/status/2022363079976034455?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">@ChromiumDev</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://x.com/mikker?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Mikkel Malmberg</a> shared a skill used for refactor pass</p><div class="image"><a class="image__link" href="https://x.com/mikker/status/2021310724988166443?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ce6eaaef-a14c-4820-8847-5cd2c34feda8/image.png?t=1771103295"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mikker/status/2021310724988166443?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">@mikker</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://karpathy.ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Andrej Karpathy</a> created an interesting project → <a class="link" href="https://gist.github.com/karpathy/8627fe009c40f57531cb18360106ce95?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">microgpt</a></p><div class="image"><a class="image__link" href="https://x.com/karpathy/status/2021694437152157847?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/85ff4039-3633-43cc-8a79-9616037f5cbf/image.png?t=1771103423"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/karpathy/status/2021694437152157847?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">@karpathy</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://www.youtube.com/@AIEdgeHQ?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Miles Deutscher</a> made a documented post about AI safety incidents from the past 12 months</p><div class="image"><a class="image__link" href="https://x.com/milesdeutscher/status/2021932331460964793?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a8e64d88-3afa-4f69-984f-665f5093ad5b/image.png?t=1771103576"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/milesdeutscher/status/2021932331460964793?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">@milesdeutscher</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new edition → <a class="link" href="https://rubyweekly.com/issues/787?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RSpec vs Minitest: Setting the record straight</a></p><p class="paragraph" style="text-align:left;">🗞 This Week in Rails published a new article about <a class="link" href="https://rubyonrails.org/2026/2/13/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">This Week in Rails: February 13, 2026</a></p><p class="paragraph" style="text-align:left;">🗞 Matt Solt published a new edition → <a class="link" href="https://rubyai.beehiiv.com/p/ruby-ai-news-february-11th-2026?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby AI News - February 11th, 2026</a></p><p class="paragraph" style="text-align:left;">🗞 Hotwire Weekly published a new edition → <a class="link" href="https://www.hotwireweekly.com/archive/week-05-06-oauth-bridge-components-turbo-actioncable-trap/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Week 05/06 - OAuth Bridge Components, Turbo + ActionCable Trap, and more!</a></p><p class="paragraph" style="text-align:left;">🗞 Andrey Eremin published a new edition → <a class="link" href="https://newsletters.eremin.eu/posts/static-ruby-monthly-issue-13-february-2026?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Static Ruby Monthly | Issue 13, February 2026</a></p><p class="paragraph" style="text-align:left;">🗞 Any Cable published a new edition → <a class="link" href="https://blog.anycable.io/p/any-cables-33-durable-at-once?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Any Cables #33: Durable at Once</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 IndieRails published a new podcast episode → <a class="link" href="https://www.indierails.com/73?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Jared Norman - Building Super Good Software|Teams|OS|companies|.*</a></p><p class="paragraph" style="text-align:left;">🎧 The Ruby AI Podcast published a new episode → <a class="link" href="https://www.buzzsprout.com/2388930/episodes/18655662-from-writing-code-to-orchestrating-it-agentic-development-with-ben-scofield?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">From Writing Code To Orchestrating It, Agentic Development with Ben Scofield</a></p><p class="paragraph" style="text-align:left;">🎧 Remote Ruby published a new episode → <a class="link" href="https://www.buzzsprout.com/2260490/episodes/18660126-kisses-from-andrew-the-ruby-gala-conference-workshops?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Kisses From Andrew, the Ruby Gala & Conference Workshops</a></p><p class="paragraph" style="text-align:left;">🎧 The Bike Shed published a new episode → <a class="link" href="https://bikeshed.thoughtbot.com/493?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">493: Suspenders with Steve Polito</a></p><p class="paragraph" style="text-align:left;">🎧 Errol Schmidt published a new podcast episode → <a class="link" href="https://open.spotify.com/episode/5MdSLqvUGn70lV8SzkmYAb?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Jeff Goree on the future for Heroku users and Migration Plans - Technology For Humans</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Matt Diebolt published a new video → <a class="link" href="https://x.com/mdiebolt/status/2021342575735804247?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">One Simple Case Statement in Fizzy</a></p><p class="paragraph" style="text-align:left;">🎥 37signals published a new video → <a class="link" href="https://www.youtube.com/watch?v=J1I3puqWDEw&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Rails Multi-Tenancy with Mike Dalessio</a></p><p class="paragraph" style="text-align:left;">🎥 Go Rails published a new article about <a class="link" href="https://gorails.com/episodes/clean-up-optional-attributes-in-rails-with-normalizes?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Clean Up Optional Attributes in Rails with Normalizes</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Tim Riley published a new article about <a class="link" href="https://timriley.info/posts/continuations-202606-mailer-rebuild?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-168" target="_blank" rel="noopener noreferrer nofollow">Continuations 2026/06: Mailer rebuild</a></p><p class="paragraph" style="text-align:left;">🆕 Andy Croll published a new article about <a class="link" href="https://andycroll.com/ruby/use-stringinquirer-for-readable-predicate-methods/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Use StringInquirer for Readable Predicate Methods</a></p><p class="paragraph" style="text-align:left;">🆕 Nick Schwaderer published a new article about <a class="link" href="https://schwadlabs.io/blog/resurrecting-whys-dream?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Software That Just Works</a></p><p class="paragraph" style="text-align:left;">🆕 Marcin Ostrowski published a new article about <a class="link" href="https://rubyonai.com/your-ai-has-no-memory-your-rails-codebase-does/?ref=shortruby.com&utm_source=shortruby" target="_blank" rel="noopener noreferrer nofollow">Your AI has no memory. Your Rails codebase does.</a></p><p class="paragraph" style="text-align:left;">🆕 Fernando Martinez published a new article about <a class="link" href="https://sinaptia.dev/posts/ai-agents-in-ruby-why-is-it-so-easy?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">AI agents in Ruby: Why is it so easy?</a></p><p class="paragraph" style="text-align:left;">🆕 David Backeus published a new article about <a class="link" href="https://lovingruby.com/reasons/44-percent-literals-r?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">#44 Percent literals: %r - 365 Reasons to Love Ruby</a></p><p class="paragraph" style="text-align:left;">🆕 Ahmed Nadar published a new article about <a class="link" href="https://world.hey.com/ahmednadar/how-i-went-from-one-button-to-building-entire-rails-apps-in-10-seconds-05e8dfc7?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How I went from one button to building entire Rails apps in 10 seconds</a></p><p class="paragraph" style="text-align:left;">🆕 Juan Gomez published a new article about<a class="link" href="https://drexed.github.io/cmdx/blog/mastering-cmdx-outcomes/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow"> Mastering CMDx Outcomes: Results, States, and Statuses</a></p><p class="paragraph" style="text-align:left;">🆕 Zil Norvilis published a new article about <a class="link" href="https://dev.to/zilton7/testing-the-unstable-how-to-write-tests-for-scrapers-30hn?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Testing the Unstable: How to Write Tests for Scrapers</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">📝 James Hibbard published a new article about <a class="link" href="https://fastretro.app/blog/how-we-improved-rails-response-times-by-87-percent?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How We Improved Rails Response Times by 87%</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">✍️ Josef Strzibny published a new article about <a class="link" href="https://deploymentfromscratch.com/blog/op-cache?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Cache 1Password entries with op-cache</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=58e491f3-3db2-4da5-bc1b-d4062df310ec&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 167</title>
  <description>Then one where Garry Tan president of YCombinator talks about Rails and Claude Code, Ruby Central launches organisations feature, Inertia Rails has a new website and JRuby 1.0.0.3.0 is released</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/14b37a8d-7a60-4689-acca-2ed918cfe430/cover-page-edition-167.png" length="392180" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-167</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-167</guid>
  <pubDate>Mon, 09 Feb 2026 13:37:47 +0000</pubDate>
  <atom:published>2026-02-09T13:37:47Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#jobs" rel="noopener noreferrer nofollow">💼 Jobs</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad) </p><h3 class="heading" style="text-align:left;">Master ChatGPT for Work Success</h3><div class="image"><a class="image__link" href="https://www.mindstream.news/chatgpt-for-work-bundle?utm_source=beehiivads&utm_medium=email-media-newsletter&utm_campaign={{publication_alphanumeric_id}}&utm_term=beehiivads_{{publication_alphanumeric_id}}_PrimaryChatGPTForWorkV1&_bhiiv=opp_7a0cf210-231e-4108-a0ba-3163a691c11a_617abb88&bhcl_id=364abbda-5bb3-4133-af3d-bae576c2e978_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e788668b-6ebf-45df-8e90-541a40da6775/Essential_Resources_Opt1_1_HD_1200x628.png?t=1753305651"/></a></div><p class="paragraph" style="text-align:left;">ChatGPT is revolutionizing how we work, but most people barely scratch the surface. Subscribe to <a class="link" href="https://www.mindstream.news/chatgpt-for-work-bundle?utm_source=beehiivads&utm_medium=email-media-newsletter&utm_campaign={{publication_alphanumeric_id}}&utm_term=beehiivads_{{publication_alphanumeric_id}}_PrimaryChatGPTForWorkV1&_bhiiv=opp_7a0cf210-231e-4108-a0ba-3163a691c11a_617abb88&bhcl_id=364abbda-5bb3-4133-af3d-bae576c2e978_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Mindstream</a> for free and unlock 5 essential resources including templates, workflows, and expert strategies for 2025. Whether you&#39;re writing emails, analyzing data, or streamlining tasks, this bundle shows you exactly how to save hours every week.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.mindstream.news/chatgpt-for-work-bundle?utm_source=beehiivads&utm_medium=email-media-newsletter&utm_campaign={{publication_alphanumeric_id}}&utm_term=beehiivads_{{publication_alphanumeric_id}}_PrimaryChatGPTForWorkV1&_bhiiv=opp_7a0cf210-231e-4108-a0ba-3163a691c11a_617abb88&bhcl_id=364abbda-5bb3-4133-af3d-bae576c2e978_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Subscribe for Your Free Bundle</a></p><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://Roadmap.Sh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Roadmap.Sh</a> launched a new roadmap for learning <a class="link" href="https://roadmap.sh/ruby-on-rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Ruby in Rails</a></p><div class="image"><a class="image__link" href="https://x.com/roadmapsh/status/2018918443328635232?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7eb47e95-036d-4c16-ad46-f9c8c96f2596/image.png?t=1770473745"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/roadmapsh/status/2018918443328635232?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@roadmapsh</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://bsky.app/profile/rubycentral.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Ruby Central</a> announced that RubyGems.org Organizations is in private beta</p><div class="image"><a class="image__link" href="https://bsky.app/profile/rubycentral.org/post/3mdyazb7g2e2t?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7d8d60d2-e17d-4fc6-9d47-4abd486c0ddb/image.png?t=1770471032"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/rubycentral.org/post/3mdyazb7g2e2t?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://rubycentral.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">rubycentral.org</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/zoraslapen?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Saroj Zoras</a> launched <a class="link" href="https://gemchat.org/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">GemChat</a></p><div class="image"><a class="image__link" href="https://gemchat.org/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/89bc8b72-f6fe-4a91-bda8-cb3a64d99923/image.png?t=1770473645"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://gemchat.org/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">https://gemchat.org/</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/skryukov_dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Svyatoslav Kryukov</a> launched a new landing page for inertia-rails → <a class="link" href="https://inertia-rails.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Inertia Rails</a></p><div class="image"><a class="image__link" href="https://x.com/skryukov_dev/status/2019510961208717358?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b6aa9b0f-7c35-4ccf-bc3d-c14ab066664b/image.png?t=1770473806"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/skryukov_dev/status/2019510961208717358?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@skryukov_dev</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 Remember that <a class="link" href="https://rubycommunityconference.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Ruby Community Conference</a> is happening in almost 1 month from now: 13 March 2026 in Cracow, Poland. You should check the agenda and meanwhile here are the workshops: </p><div class="image"><a class="image__link" href="https://rubycommunityconference.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/43be470c-d3b8-4cd1-b4bd-b7cb38106b37/image.png?t=1770643244"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubycommunityconference.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">https://rubycommunityconference.com</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://JRuby.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">JRuby.org</a> announced <a class="link" href="https://www.jruby.org/2026/02/02/jruby-10-0-3-0.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">JRuby 10.0.3.0 Released</a></p><div class="image"><a class="image__link" href="https://www.jruby.org/2026/02/02/jruby-10-0-3-0.html?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4445028d-7306-4c44-a569-290a68e6519e/image.png?t=1770573993"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.jruby.org/2026/02/02/jruby-10-0-3-0.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://www.jruby.org/2026/02/02/jruby-10-0-3-0.html</a></p></span></div></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(34, 34, 34);font-family:Helvetica, Arial, sans-serif;font-size:18px;">👉 </span><a class="link" href="https://andycroll.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Andy Croll</a> published a new article about <a class="link" href="https://andycroll.com/ruby/prefer-in-over-include-for-readable-conditions/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Prefer in? Over include? for Readable Conditions</a></p><div class="image"><a class="image__link" href="https://andycroll.com/ruby/prefer-in-over-include-for-readable-conditions/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/34b72006-910e-48d2-a2f8-4f527585fe92/image.png?t=1770642892"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://andycroll.com/ruby/prefer-in-over-include-for-readable-conditions/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Prefer in? Over include? for Readable Conditions</a></p></span></div></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(34, 34, 34);font-family:Helvetica, Arial, sans-serif;font-size:18px;">👉 J</span>ack Rothrock published a new article about <a class="link" href="https://www.scoutapm.com/blog/instrumenting-code-using-prism-and-the-ruby-abstract-syntax-tree?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Instrumenting Code Using Prism and the Ruby Abstract Syntax Tree</a></p><div class="image"><a class="image__link" href="https://www.scoutapm.com/blog/instrumenting-code-using-prism-and-the-ruby-abstract-syntax-tree?ref=shortruby.com&utm_source=shortruby" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/784a9684-75c5-4fcd-97cf-67149cdbeaff/image.png?t=1770643005"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.scoutapm.com/blog/instrumenting-code-using-prism-and-the-ruby-abstract-syntax-tree?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Instrumenting Code Using Prism and the Ruby Abstract Syntax Tree</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Paweł Pacana published a new article about <a class="link" href="https://mostlyobvio.us/2026/02/responsive-code-formatting/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Responsive code formatting on web</a></p><div class="image"><a class="image__link" href="https://mostlyobvio.us/2026/02/responsive-code-formatting/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e90337f1-1b76-46b7-a537-bc4b3630e124/image.png?t=1770643065"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://mostlyobvio.us/2026/02/responsive-code-formatting/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Responsive code formatting on web</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;">️️💻 <a class="link" href="https://predkelis.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Elvinas Predkelis</a> shared a Stimulus controller code sample</p><div class="image"><a class="image__link" href="https://x.com/predkelis/status/2018777758717923663?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4559cf62-7cd0-4ccc-8a60-fd59f15277b3/image.png?t=1770475498"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/predkelis/status/2018777758717923663?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@predkelis</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://x.com/_m27e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Zeke Gabrielse</a> shared a code sample with the usage of dual_writes gem</p><div class="image"><a class="image__link" href="https://x.com/_m27e/status/2019252461199061332?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/905a9cab-b8df-4ff8-8251-437a1a955550/image.png?t=1770475689"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_m27e/status/2019252461199061332?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@_m27e</a></p></span></div></div><p class="paragraph" style="text-align:left;">️️💻 <a class="link" href="https://twitter.com/kukicola?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Karol Bąk</a> shared a code sample about the usage of Comparable</p><div class="image"><a class="image__link" href="https://x.com/kukicola/status/2020084119955534242?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9a1264a7-0ae7-43ba-b880-d1cd12148ceb/image.png?t=1770476171"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kukicola/status/2020084119955534242?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@kukicola</a></p></span></div></div><p class="paragraph" style="text-align:left;">And about StringScanner: </p><div class="image"><a class="image__link" href="https://x.com/kukicola/status/2020421866129953087?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/444e8ed5-e6dd-4b46-986d-3b2376ae9a40/image.png?t=1770573720"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kukicola/status/2020421866129953087?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@kukicola</a></p></span></div></div><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://twitter.com/szymonfiedler?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Szymon Fiedler</a> advised us NOT to use Time.now to get DST offset for historical dates</p><div class="image"><a class="image__link" href="https://x.com/szymonfiedler/status/2019713259771998547?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/499d85dc-4c27-4374-97f5-e6b996ab0994/image.png?t=1770475942"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/szymonfiedler/status/2019713259771998547?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@szymonfiedler</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/kukicola?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Karol Bąk</a> shared a code sample about Ruby 3.2 Data</p><div class="image"><a class="image__link" href="https://x.com/kukicola/status/2019752902575710639?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7e1f7b9c-3b09-461a-8af0-52d8f2d3f85d/image.png?t=1770476054"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kukicola/status/2019752902575710639?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@kukicola</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="free-private-email-that-puts-your-p">Free, private email that puts your privacy first</h3><div class="image"><a class="image__link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub2=Concept1_Static2&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Secondary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_term=&utm_ads=Concept1_Static2&_bhiiv=opp_720154df-6e4e-4c64-98d8-88db6b1e2747_598ab766&bhcl_id=6651a24b-53ee-4aec-93c2-6f684c769315_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/00107b63-a717-48e3-9c63-7a4af8b63828/01_2.png?t=1768321524"/></a></div><p class="paragraph" style="text-align:left;">Proton Mail’s free plan keeps your inbox private and secure—no ads, no data mining. Built by privacy experts, it gives you real protection with no strings attached.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub2=Concept1_Static2&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Secondary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_term=&utm_ads=Concept1_Static2&_bhiiv=opp_720154df-6e4e-4c64-98d8-88db6b1e2747_598ab766&bhcl_id=6651a24b-53ee-4aec-93c2-6f684c769315_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Get free private email</a></p><hr class="content_break"><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> shared an important tip</p><div class="image"><a class="image__link" href="https://x.com/dhh/status/2018993446837465358?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/38477a2c-abbc-43c3-957f-f0ea3bedf2b8/image.png?t=1770473089"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/2018993446837465358?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">📐 <a class="link" href="https://twitter.com/donnfelker?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Donn Felker</a> shared when to use React instead of Hotwire</p><div class="image"><a class="image__link" href="https://x.com/donnfelker/status/2019005529691926789?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9b8338a9-302e-4625-9572-30b5d4b6b367/image.png?t=1770473204"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/donnfelker/status/2019005529691926789?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@donnfelker</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/andrewculver?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Andrew Culver</a> asked if Inertia Rails is the real future of the frontend on Rails</p><div class="image"><a class="image__link" href="https://x.com/andrewculver/status/2017703937550545224?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/63dfa18c-fcf0-4c60-abcc-57337ace62c6/image.png?t=1770474434"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/andrewculver/status/2017703937550545224?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@andrewculver</a></p></span></div></div><p class="paragraph" style="text-align:left;">He got some replies:</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/2017764471616508017?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/aaf67875-b9af-4af3-9115-bc6f8f649bc2/image.png?t=1770474520"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/2017764471616508017?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/florentmsl/status/2018007861184401470?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0d5e09cf-a8fc-468b-8761-2b1d613e9cd4/image.png?t=1770474646"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/florentmsl/status/2018007861184401470?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@florentmsl</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/pascallaliberte/status/2018020340035686566?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/25b0be68-c0c5-4fc0-abbd-e14ac1fadc80/image.png?t=1770474676"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/pascallaliberte/status/2018020340035686566?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@pascallaliberte</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/skryukov_dev/status/2018048796114993176?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7352d6cf-2dd0-40c6-9d09-00ede809bfc5/image.png?t=1770474704"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/skryukov_dev/status/2018048796114993176?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@skryukov_dev</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/WickNarwick/status/2018076761888583753?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ae63abe0-09d2-49e9-b436-ac82976706e4/image.png?t=1770474750"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/WickNarwick/status/2018076761888583753?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@WickNarwick</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/camertron/status/2018498917902716948?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d888fb3c-7324-4eff-83d8-930dd16c09e3/image.png?t=1770475285"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/camertron/status/2018498917902716948?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@camertron</a></p></span></div></div><p class="paragraph" style="text-align:left;">📐 <a class="link" href="https://boringrails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Matt Swanson</a> made a list with things you can build in Rails</p><div class="image"><a class="image__link" href="https://x.com/_swanson/status/2018345407630205424?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4193d673-041d-47b8-971c-4c2d71923474/image.png?t=1770474804"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_swanson/status/2018345407630205424?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@_swanson</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://github.com/gobijan?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Bijan Rahnema</a> shared a minitest tip</p><div class="image"><a class="image__link" href="https://x.com/BijanRahnema/status/2018365982301892693?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/167eba74-f7dc-43ac-92ce-1537d8c61eb7/image.png?t=1770474995"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/BijanRahnema/status/2018365982301892693?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@BijanRahnema</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> shared some optimization results</p><div class="image"><a class="image__link" href="https://x.com/dhh/status/2018989659481571424?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4e839b8a-3b63-4933-b83a-1bfeac8bcbb2/image.png?t=1770475569"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/2018989659481571424?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">️<a class="link" href="https://www.mikecoutermarsh.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Mike Coutermarsh</a> replied with:</p><div class="image"><a class="image__link" href="https://x.com/mscccc/status/2019789553725321376?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/65b7ecbe-1c3d-4b5c-b302-087076bcaad5/image.png?t=1770476124"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mscccc/status/2019789553725321376?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@mscccc</a></p></span></div></div><p class="paragraph" style="text-align:left;">📐Steve Clarke published an experiement about <a class="link" href="https://x.com/SevenviewSteve/article/2019601506429730976?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Your AI Doesn&#39;t Write Every Framework Equally Well</a></p><div class="image"><a class="image__link" href="https://x.com/SevenviewSteve/article/2019601506429730976?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fce94a5a-1691-49d4-b07f-887618bcf68c/image.png?t=1770624686"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/SevenviewSteve/article/2019601506429730976?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">https://x.com/SevenviewSteve/article/2019601506429730976</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://bsky.app/profile/mike.contribsys.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Mike Perham</a> announced the winners of 2026 Gem Fellowship</p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7fbd442c-d217-4874-89f7-a72325aceeeb/image.png?t=1770470732"/><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/mike.contribsys.com/post/3mdvl76tu7s22?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://mike.contribsys.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">mike.contribsys.com</a></p></span></div></div><p class="paragraph" style="text-align:left;"></p><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://twitter.com/inazarova?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Irina Nazarova</a> shared how you can achieve more with less in Ruby</p><div class="image"><a class="image__link" href="https://x.com/inazarova/status/2017889933869117927?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/686c7e36-03f7-4139-bfaf-46ce99b6a032/image.png?t=1770474556"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/inazarova/status/2017889933869117927?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@inazarova</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://x.com/garrytan?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Garry Tan</a> shared how amazing the combination of Rails with Claude Code can be</p><div class="image"><a class="image__link" href="https://x.com/garrytan/status/2018368128108167344?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/65f27943-54ef-47c5-9030-0f8b714eac21/image.png?t=1770475062"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/garrytan/status/2018368128108167344?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@garrytan</a></p></span></div></div><p class="paragraph" style="text-align:left;">He got some replies:</p><div class="image"><a class="image__link" href="https://x.com/bradgessler/status/2018435393059012972?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/574eb7b8-39c9-46bd-a117-0c7404cb8fce/image.png?t=1770475143"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/bradgessler/status/2018435393059012972?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@bradgessler</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/mhmazur/status/2018503229294755967?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1059ac92-dfab-488f-b504-286d1406fa54/image.png?t=1770475333"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mhmazur/status/2018503229294755967?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@mhmazur</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/rameerez/status/2018579251012718896?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/74202c2f-a77e-4789-834b-de2892ab0e63/image.png?t=1770475362"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rameerez/status/2018579251012718896?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@rameerez</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/marckohlbrugge/status/2018584856687501728?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1f9f13e7-64c4-4885-ab16-7e24402e3cdf/image.png?t=1770475394"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/marckohlbrugge/status/2018584856687501728?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@marckohlbrugge</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/_svs_/status/2018619848306397218?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4b369f99-64a4-429c-b1a2-ce37b66e12dc/image.png?t=1770475422"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_svs_/status/2018619848306397218?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@svs</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/APIguy/status/2019066879109705830?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/30ee8f95-0431-49c3-bdb5-93a3f1dde120/image.png?t=1770475648"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/APIguy/status/2019066879109705830?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@APIguy</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://blog.schwad.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Nick Schwaderer</a> shared how the best practices of Rails and Claude combined can develop an amazing product</p><div class="image"><a class="image__link" href="https://x.com/schwad_rb/status/2018487114359329036?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c8271bab-5c4e-4140-ba65-538395b4e7b9/image.png?t=1770475189"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/schwad_rb/status/2018487114359329036?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@schwad_rb</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://twitter.com/evilmartians?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Evil Martians</a> shared about the advantages of using Ruby: </p><div class="image"><a class="image__link" href="https://x.com/evilmartians/status/2019793876836393447?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f750cc14-b488-4306-942d-bc6fd2bcbc2d/image.png?t=1770566702"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/evilmartians/status/2019793876836393447?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@evilmartians</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="jobs">💼 Jobs</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Falgrano.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Algrano</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Upload your resume to autofill the application form or fill in details about yourself, your experience, your engineering background, and how you think about problems. No cover letter needed.</p></li><li><p class="paragraph" style="text-align:left;">🆕 Full-Stack Engineer (Not specified) - EU Remote or Algrano HQ Zürich - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.deel.com%2Fjob-boards%2Falgrano%2Fjob-details%2F143be364-4243-4671-b1ad-1b302bebfdb7%2Foverview&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fapple.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apple</a></p><ul><li><p class="paragraph" style="text-align:left;">Sr. Ruby on Rails Engineer, ASE ($181,100 - $318,400) - San Francisco, CA - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fen-us%2Fdetails%2F200636173-3577%2Fsr-ruby-on-rails-engineer-ase%3Fteam%3DSFTWR&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Better Stack</a></p><ul><li><p class="paragraph" style="text-align:left;">/^Full-?stack Engineer$/i ($60K - $300K/year + equity) - Remote (NAMER) or On-site (Prague, Czech Republic) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com%2Fcareers&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbuildkite.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">BuildKite</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p></li><li><p class="paragraph" style="text-align:left;"><b>Backend</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Engineer (Pipelines) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5031519008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Engineer (Test Engine) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5021558008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><b>DevOps</b></p><ul><li><p class="paragraph" style="text-align:left;">DevOps Support Engineer ($95,000-$125,000) - United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5097330008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Foncactus.com%2F&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Cactus</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Submit your resume at <a class="link" href="https://workoncactus.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">workoncactus.com</a> Call with Maya, our AI assistant - (415) 360-3350 Write us why you are interested at <a class="link" href="mailto:join@oncactus.com" target="_blank" rel="noopener noreferrer nofollow">join@oncactus.com</a>. Resumes are great but we’d love to see that you know how to write and can communicate effectively. Don&#39;t go overboard, under 500 words is more than enough. Call with CTO founder - assess background and technical alignment Onsite Interview to meet the team, including our CEO Ajith - (you get to know the company and we get to know you) Two-week paid work trial Offer</p><ul><li><p class="paragraph" style="text-align:left;">Senior Ruby on Rails + AI Engineer ($120K - $150K) - San Mateo, CA, US - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=workoncactus.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Circle</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p></li><li><p class="paragraph" style="text-align:left;"><b>Infrastructure</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Back-End Software Engineer, Infra ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F4961366008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Applied AI ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5066690008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, CRM ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5076959008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Live ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5077650008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, CMS ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5096679008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">🆕 Senior Full-Stack Software Engineer, Growth ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5112587008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">🆕 Senior Full-Stack Software Engineer, Payments ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5096777008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><b>Platform</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Quality Platform Engineer ($120K - $130K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5058408008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">AI Platform Engineer, Applied AI ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5102925008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcompanycam.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">CompanyCam</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Upload your resume, a cover letter, and answer a couple of questions about the role and your experience.</p><ul><li><p class="paragraph" style="text-align:left;">🆕 Senior Software Engineer (Ruby on Rails) ($175k - $200k) - U.S. Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcompanycam.com%2Fjob%3Fgh_jid%3D7579950003&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">🆕 Senior Software Engineer (Ruby on Rails/React) ($175k - $200k) - U.S. Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcompanycam.com%2Fjob%3Fgh_jid%3D7617931003&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fevilmartians.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Evil Martians</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Don’t send us a standard CV. Send us an email to <a class="link" href="mailto:obey-backend@evilmartians.com" target="_blank" rel="noopener noreferrer nofollow">obey-backend@evilmartians.com</a> with your full name as the email subject. The email must be in Russian. In your email: Your story. Tell us about your experience, interests, your previous projects, and your role (what did you do or achieve). Code showcase. As a starting point, we need to see some sample code. You can send us links to your GitHub projects or Pull Requests. You can also create (secret) GitHub Gists to send us code samples from your closed source projects: something that solves a non-obvious, advanced task, or examples of beautiful code. Ideally, you would also describe what the code does, include tests, and a general description of the feature or the problem relevant to the code. Location & relocation. Mention your current location and if you’re open to relocation. We do not hire in Russia.</p><ul><li><p class="paragraph" style="text-align:left;">Ruby Backend Engineer ($65K – $110K gross annual salary) - Remote (minimum of 3 hours daily overlap with the Pacific Timezone; relocation to Portugal possible) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=mailto%3Aobey-backend%40evilmartians.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li></ul></li></ul><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://mensfeld.pl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Maciej Mensfeld</a> announced a new gem → <a class="link" href="https://github.com/mensfeld/pocketrb?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">pocketrb</a> - “Pocket-sized Ruby AI agent framework / LLM assistant with multi-LLM support“</p><div class="image"><a class="image__link" href="https://github.com/mensfeld/pocketrb?1=1&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1b7be853-d8b9-410a-a32b-b369ac7cef36/image.png?t=1770473930"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/mensfeld/pocketrb?1=1&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">https://github.com/mensfeld/pocketrb?1=1</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://aviflombaum.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Avi Flombaum</a> announced a new project <a class="link" href="https://github.com/aviflombaum/your-project-dashboard?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">aviflombaum/your-project-dashboard</a></p><div class="image"><a class="image__link" href="https://x.com/aviflombaum/status/2020231612785701099?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d979bd3c-fdf1-4255-9f27-ba2fecf12652/image.png?t=1770573468"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/aviflombaum/status/2020231612785701099?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@aviflombaum</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/alec-c4?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Alexey Poimtsev</a> published a new gem <a class="link" href="https://github.com/alec-c4/role_fu?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">role_fu</a> - &quot;RoleFu provides explicit role management with Role and RoleAssignment models, avoiding hidden HABTM tables. Supports scopes, resource-specific roles, and cleaner architecture.&quot; </p><div class="image"><a class="image__link" href="https://github.com/alec-c4/role_fu?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/70fde73e-da04-400a-aa09-337ae4b16b1f/image.png?t=1770612156"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/alec-c4/role_fu?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">https://github.com/alec-c4/role_fu</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/ya-luotao?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">luotao</a> created <a class="link" href="https://github.com/ya-luotao/claude-agent-sdk-ruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">claude-agent-sdk-ruby</a> - “Unofficial Ruby SDK for Claude Agent“</p><div class="image"><a class="image__link" href="https://github.com/ya-luotao/claude-agent-sdk-ruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/925a36e2-a598-4ca9-9644-f1dd9725457b/image.png?t=1770474104"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/ya-luotao/claude-agent-sdk-ruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">https://github.com/ya-luotao/claude-agent-sdk-ruby</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://x.com/bradgessler?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Brad Gessler</a> announced a new gem <a class="link" href="https://github.com/rubymonolith/fixturebot?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">rubymonolith/fixturebot: The speed of fixtures with the syntactic sugar of factories</a></p><div class="image"><a class="image__link" href="https://github.com/rubymonolith/fixturebot?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4138c176-d778-4c43-9b56-fb3db82ab3a2/image.png?t=1770573359"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/rubymonolith/fixturebot?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://github.com/rubymonolith/fixturebot</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/alec-c4?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Alexey Poimtsev</a> published a new gem <a class="link" href="https://github.com/alec-c4/e2e?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">e2e</a> - &quot;A flexible E2E testing library allowing pluggable drivers (starting with Playwright) with a clean, unified API.&quot;</p><div class="image"><a class="image__link" href="https://github.com/alec-c4/e2e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/be0b5e0e-9773-4a28-b91c-1e95618bd97a/image.png?t=1770623583"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/alec-c4/e2e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">https://github.com/alec-c4/e2e</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Lucian Ghinda published three gems to wort with Agent Skills files: </p><p class="paragraph" style="text-align:left;"><a class="link" href="https://github.com/lucianghinda/agent_skills_configurations?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">agent_skills_configurations</a> - &quot;A Ruby library that provides a unified interface for discovering and accessing skill configuration paths for 49+ AI coding agents including Cursor, Claude Code, Codex, Windsurf, and more. Handles platform-specific path resolution, environment variable support, and automatic detection of installed agents.&quot;</p><div class="image"><a class="image__link" href="https://bsky.app/profile/lucianghinda.com/post/3mdzrkwd2uc2l?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6b64f915-3702-4838-9377-a74bb4eb224d/image.png?t=1770642459"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/lucianghinda.com/post/3mdzrkwd2uc2l?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://lucianghinda.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">lucianghinda.com</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://github.com/lucianghinda/agent_skill_parser?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">agent_skill_parser</a> - &quot;A Ruby gem for parsing skill files that use YAML frontmatter and markdown body content. Provides document splitting, YAML parsing, schema validation, and returns immutable Skill objects. Designed for agent/AI systems where skills are defined as structured markdown documents with metadata.&quot;</p><div class="image"><a class="image__link" href="https://bsky.app/profile/lucianghinda.com/post/3mdzrkz2u4g2i?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a6908608-cd8f-4764-82fe-ec5a40a194e2/image.png?t=1770642569"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/lucianghinda.com/post/3mdzrkz2u4g2i?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://lucianghinda.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">lucianghinda.com</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://github.com/lucianghinda/agents_skill_vault?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">agents_skill_vault</a> - &quot;AgentsSkillVault provides a simple interface to clone, sync, and manage AI agent skills stored in GitHub repositories, supporting full repos, folders, and individual files.&quot;</p><div class="image"><a class="image__link" href="https://bsky.app/profile/lucianghinda.com/post/3mdzrl277gi2k?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/99c357d5-ac36-4bd9-8fde-cd06e9734834/image.png?t=1770642610"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/lucianghinda.com/post/3mdzrl277gi2k?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://lucianghinda.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">lucianghinda.com</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 Avo released <a class="link" href="https://github.com/avo-hq/avo/releases/tag/v3.29.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">version 3.29.0 </a></p><div class="image"><a class="image__link" href="https://github.com/avo-hq/avo/releases/tag/v3.29.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a7b411c6-38aa-4cad-918a-3ddf2186f82b/image.png?t=1770642692"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/avo-hq/avo/releases/tag/v3.29.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">https://github.com/avo-hq/avo/releases/tag/v3.29.0</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 RubyGems released <a class="link" href="https://github.com/ruby/rubygems/releases/tag/bundler-v4.0.6?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">version 4.0.6</a></p><div class="image"><a class="image__link" href="https://github.com/ruby/rubygems/releases/tag/bundler-v4.0.6?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/356e7e21-56e0-40ba-b690-b13160a31f3f/image.png?t=1770642744"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/ruby/rubygems/releases/tag/bundler-v4.0.6?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">https://github.com/ruby/rubygems/releases/tag/bundler-v4.0.6</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="http://catb.org/~esr?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Eric S. Raymond</a> shared about software engineering: </p><div class="image"><a class="image__link" href="https://x.com/esrtweet/status/2019779602617376788?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/04a78e1a-576a-4676-a1d2-2c9e16e82bf8/image.png?t=1770566407"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/esrtweet/status/2019779602617376788?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@esrtweet</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://www.anthropic.com/careers?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Mike Krieger</a> shared about the new addition on <a class="link" href="https://www.anthropic.com/news/apple-xcode-claude-agent-sdk?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Xcode 26.2 → Claude Agent SDK</a></p><div class="image"><a class="image__link" href="https://x.com/mikeyk/status/2018762375386837043?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7de50269-ebec-47a6-9528-3d76e6fc3d0f/image.png?t=1770471803"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mikeyk/status/2018762375386837043?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@mikeyk</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="http://claude.ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Claude</a> introduced <a class="link" href="https://code.claude.com/docs/en/agent-teams?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">agent teams in Claude Code</a></p><div class="image"><a class="image__link" href="https://x.com/claudeai/status/2019467383191011698?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/36074517-7cdb-40a5-8544-c0ef91344580/image.png?t=1770471889"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/claudeai/status/2019467383191011698?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@claudeai</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://openai.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Open Ai</a> announced that <a class="link" href="https://openai.com/index/introducing-gpt-5-3-codex/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">GPT-5.3-Codex is now available in Codex</a>: </p><div class="image"><a class="image__link" href="https://x.com/OpenAI/status/2019474152743223477?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/19e90efa-baf9-4477-a56a-d1e0fec0616e/image.png?t=1770471939"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/OpenAI/status/2019474152743223477?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@OpenAI</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://mensfeld.pl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Maciej Mensfeld</a> made a post on prompt injection </p><div class="image"><a class="image__link" href="https://x.com/maciejmensfeld/status/2019523446066278768?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bd47a559-0e45-45aa-b2ef-c2762976bdc4/image.png?t=1770471995"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/maciejmensfeld/status/2019523446066278768?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@maciejmensfeld</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://x.com/markdalgleish?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Mark Dalgleish</a> made a post about unit testing using AI</p><div class="image"><a class="image__link" href="https://x.com/markdalgleish/status/2019573000333586509?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4fc7b3bd-6cc7-4d89-8107-7b6863ca47a7/image.png?t=1770472057"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/markdalgleish/status/2019573000333586509?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@markdalgleish</a></p></span></div></div><p class="paragraph" style="text-align:left;">He replied with</p><div class="image"><a class="image__link" href="https://x.com/Sc_Meerkat/status/2019712704244801649?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6c1bcc47-1117-47ca-b87b-5b7a80fb20c6/image.png?t=1770472115"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/Sc_Meerkat/status/2019712704244801649?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@Sc_Meerkat</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/josevalim/status/2020042489399325152?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/30e95f47-238f-482c-bbd3-b8d03fbaa71b/image.png?t=1770472513"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/josevalim/status/2020042489399325152?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@josevalim</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://experimentalworks.net/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">David Soria Parra</a> shared that <a class="link" href="https://github.com/antonpk1/excalidraw-mcp-app?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Excalidraw MCP</a> is now available in Claude</p><div class="image"><a class="image__link" href="https://x.com/dsp_/status/2019746251034562917?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/64d1ce0b-c6af-486e-b5fe-f9f8d341f2c6/image.png?t=1770472198"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dsp_/status/2019746251034562917?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@dsp_</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://www.zolkos.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Rob Zolkos</a> shared a performance tip for running tests locally</p><div class="image"><a class="image__link" href="https://x.com/robzolkos/status/2019781859643662714?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cf3bbe47-2662-4c59-bcc2-3fc125b826e7/image.png?t=1770472314"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/robzolkos/status/2019781859643662714?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@robzolkos</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/heroku?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Heroku</a> shared some updates on their business model</p><div class="image"><a class="image__link" href="https://x.com/heroku/status/2019788655095853479?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/55343e26-54ee-4aa9-9680-a01171220a46/image.png?t=1770472435"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/heroku/status/2019788655095853479?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@heroku</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://youtube.com/garrytan?sub_confirmation=1&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Garry Tan</a> shared an interesting Claude prompt approach</p><div class="image"><a class="image__link" href="https://x.com/garrytan/status/2020072098635665909?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/80bd40ff-a5fd-4136-9b71-cd3288d2ea72/image.png?t=1770472600"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/garrytan/status/2020072098635665909?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">@garrytan</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/samsaffron?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Sam Saffron</a> shared about setting CLAUDE_CODE_EFFORT_LEVEL=max see <a class="link" href="https://gist.github.com/SamSaffron/d053d2d6917baf08a0fae0ac4af16943?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">gist:d053d2d6917baf08a0fae0ac4af16943</a></p><div class="image"><a class="image__link" href="https://gist.github.com/SamSaffron/d053d2d6917baf08a0fae0ac4af16943?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c560bf04-28e5-4da6-8157-6c2ba9545a24/image.png?t=1770573653"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://gist.github.com/SamSaffron/d053d2d6917baf08a0fae0ac4af16943?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">https://gist.github.com/SamSaffron/d053d2d6917baf08a0fae0ac4af16943</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 Ruby On Rails published a new edition → <a class="link" href="https://rubyonrails.org/2026/2/6/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">This Week in Rails: February 6, 2026</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new edition → <a class="link" href="https://rubyweekly.com/issues/786?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">14 minutes to 4 seconds: An RSpec to Minitest migration story</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 Errol Schmidt published a new podcast episode → <a class="link" href="https://open.spotify.com/episode/3sJCOzP6CkognkSkhUhirI?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Mikel Lindsaar - Rails Vet, Mail Gem - Technology For Humans</a> and another one about <a class="link" href="https://open.spotify.com/episode/2nbt4xFXcuNlRwakPMBIRt?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Tech Roundup: Heroku’s demise, the AI Coding wars, Events </a></p><p class="paragraph" style="text-align:left;">🎧 The Bike Shed published a new podcast episode → <a class="link" href="https://bikeshed.thoughtbot.com/492?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">492: Defining value within your team</a></p><p class="paragraph" style="text-align:left;">🎧 Rails Business published a new podcast episode → <a class="link" href="https://www.buzzsprout.com/2435951/episodes/18622085-reflecting-on-our-first-year-of-the-podcast?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Reflecting on Our First Year of the Podcast</a></p><p class="paragraph" style="text-align:left;">🎧 Remote Ruby published a new podcast episode → <a class="link" href="https://www.buzzsprout.com/2260490/episodes/18619103-kevin-newton-on-ruby-python-prism-psych-pure-and-exreg?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Kevin Newton on Ruby & Python, Prism, Psych-Pure, and Exreg</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Matt Diebolt published some new videos:</p><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://x.com/mdiebolt/status/2018456393909772438?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Today I cover how the CSS files are structured in Fizzy</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://x.com/mdiebolt/status/2018837653983048151?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Learn about how Fizzy uses seeds for both developer productivity and new user onboarding</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://x.com/mdiebolt/status/2019542881342505095?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Today I found some uncommon routing techniques Fizzy uses to make the code a joy to work with</a></p></li></ul><p class="paragraph" style="text-align:left;">🎥 Damian Galarza published a new video → <a class="link" href="https://www.youtube.com/live/EBmv8h_AbbY?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Building a SaaS from Scratch with Claude Code</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Andrea Fomera published a new article about <a class="link" href="https://afomera.dev/posts/2026-02-03-using-conductor-with-ruby-on-rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Using Conductor.build with Ruby on Rails</a></p><p class="paragraph" style="text-align:left;">🆕 Andy Croll published a new article about <a class="link" href="https://andycroll.com/ruby/prefer-in-over-include-for-readable-conditions/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Prefer in? Over include? for Readable Conditions</a></p><p class="paragraph" style="text-align:left;">🆕 Will Larry published a new article about <a class="link" href="https://thoughtbot.com/blog/a-javascript-developer-s-guide-to-rails-activerecord-fundamentals?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">A JavaScript developer&#39;s guide to Rails: ActiveRecord Fundamentals</a></p><p class="paragraph" style="text-align:left;">🆕 Daniela Baron published a new article about <a class="link" href="https://danielabaron.me/blog/speed-up-pg-fts-with-persistent-ts-vectors/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Speeding Up PostgreSQL Full-Text Search with Persistent TSVectors</a></p><p class="paragraph" style="text-align:left;">🆕 Szymon Fiedler published a new article about <a class="link" href="https://blog.arkency.com/the-timezone-bug-that-hid-in-plain-sight-for-months/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">The timezone bug that hid in plain sight for months</a></p><p class="paragraph" style="text-align:left;">🆕 Matheus Richard published a new article about <a class="link" href="https://thoughtbot.com/blog/teach-your-models-to-act-not-just-be?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">Teach your models to act, not just be</a></p><p class="paragraph" style="text-align:left;">🆕 Ryan R. Hughes published a new article about <a class="link" href="https://x.com/ryanrhughes/status/2019258699001294911?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">14 Minutes → 4 Seconds: A Tale of Switching from RSpec to Minitest</a></p><p class="paragraph" style="text-align:left;">🆕 Jack Rothrock published a new article about <a class="link" href="https://www.scoutapm.com/blog/instrumenting-code-using-prism-and-the-ruby-abstract-syntax-tree?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Instrumenting Code Using Prism and the Ruby Abstract Syntax Tree</a></p><p class="paragraph" style="text-align:left;">🆕 Ed Ruder published a new article about <a class="link" href="https://blog.edruder.com/2026/01/31/turbo-actioncable-trap.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">When Your Real-Time Rails Feature Fights Itself</a></p><p class="paragraph" style="text-align:left;">🆕 Marcin Ostrowski published a new article about <a class="link" href="https://rubyonai.com/how-do-you-know-the-software-is-working/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Enforcing rules and managing expectations for AI agents with CI and code review</a></p><p class="paragraph" style="text-align:left;">🆕 Brad Gessler published a new article about <a class="link" href="https://beautifulruby.com/code/superfeature-plan?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby Plan objects for SaaS websites</a></p><p class="paragraph" style="text-align:left;">🆕 Julik Tarkhanov published a new article about <a class="link" href="https://blog.julik.nl/2026/02/on-the-way-to-step-functions-part-4?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">On the way to step functions: geneva_drive</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">📝 Mike Dalton published a new article about <a class="link" href="https://mikedalton.co/2026/01/26/hotwire-native-oauth-bridge-component/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Implementing OAuth in Hotwire Native apps with Bridge Components</a></p><p class="paragraph" style="text-align:left;">📝 Paweł Pacana published a new article about <a class="link" href="https://mostlyobvio.us/2026/02/responsive-code-formatting/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Responsive code formatting on web</a></p><p class="paragraph" style="text-align:left;">📝 Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/saas/impersonation-for-rails-8/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Adding user impersonation to Rails 8 authentication</a> and about <a class="link" href="https://railsdesigner.com/turboless-confirm/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Replace Turbo confirm with native dialog</a></p><p class="paragraph" style="text-align:left;"></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">✍️ Jankees published a new article about <a class="link" href="https://jankeesvw.com/blog/2026/afk-mode-for-claude-code/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">AFK Mode for Claude Code</a></p><p class="paragraph" style="text-align:left;">✍️ Ivan Eltsov published a new article about <a class="link" href="https://x.com/evilmartians/status/2018773670085403006?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-167" target="_blank" rel="noopener noreferrer nofollow">So, your developers use AI now—here&#39;s what to know</a></p><p class="paragraph" style="text-align:left;">✍️ Tom Mango published a new article about <a class="link" href="https://sleepingpotato.com/quick-shell-access-from-claude-code/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Quick Shell Access from Claude Code</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=f12edcf0-a064-41a6-a811-bf14220a6d3b&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 166</title>
  <description>The one where RubyConf launched The Ruby Runaway - startsup pitching, where tiny ruby conf announced their event and where Joel talks about Phlex::TUI</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4bccccde-fcbf-4da0-8ee7-ae634a71dcf0/cover-page-edition-166.png" length="364830" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-166</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-166</guid>
  <pubDate>Mon, 02 Feb 2026 11:18:56 +0000</pubDate>
  <atom:published>2026-02-02T11:18:56Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ol start="1"><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#jobs" rel="noopener noreferrer nofollow">💼 Jobs</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ol><div class="section" style="background-color:#fff6e7;border-radius:10px;margin:5.0px 5.0px 5.0px 5.0px;padding:10.0px 10.0px 10.0px 10.0px;"><p class="paragraph" style="text-align:left;"><i>A note from Lucian Ghinda, the newsletter curator: </i></p><p class="paragraph" style="text-align:left;">I just added a new section in the newsletter called <b><a class="link" href="#jobs" rel="noopener noreferrer nofollow">Jobs</a></b> curated by Raul Popadineți from <a class="link" href="https://calmcompanies.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">CalmCompanies</a>. It does not include all Ruby/Rails jobs available but just a selection of them. <a class="link" href="#jobs" rel="noopener noreferrer nofollow">Check it out </a>and let us know (with reply to this email) if you like it and/or what would you like to see there. </p></div><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="the-tech-newsletter-for-engineers-w">The Tech newsletter for Engineers who want to stay ahead</h3><div class="image"><a class="image__link" href="https://magic.beehiiv.com/v1/5f7ce6e3-9a71-416b-99a7-606c5f7e2447?email={{email}}&redirect_to=https%3A%2F%2Fcodenewsletter.ai%2Fforms%2F14166360-de71-46c4-8722-878d417fab5c&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_0f856121-ae6b-4abe-9281-4be0b189be5c_94e90c2e&bhcl_id=a127f822-1d4a-493d-b803-9463de2975ff_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/67300775-7738-44d1-a246-dd3e5c0d1713/The_Morning_Paper_for_AI___ML_Engineers_V2__1_.jpg?t=1759254145"/></a></div><p class="paragraph" style="text-align:left;">Tech moves fast, but you&#39;re still playing catch-up?</p><p class="paragraph" style="text-align:left;">That&#39;s exactly why 100K+ engineers working at Google, Meta, and Apple read <a class="link" href="https://magic.beehiiv.com/v1/5f7ce6e3-9a71-416b-99a7-606c5f7e2447?email={{email}}&redirect_to=https%3A%2F%2Fcodenewsletter.ai%2Fforms%2F14166360-de71-46c4-8722-878d417fab5c&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_0f856121-ae6b-4abe-9281-4be0b189be5c_94e90c2e&bhcl_id=a127f822-1d4a-493d-b803-9463de2975ff_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">The Code</a> twice a week.</p><p class="paragraph" style="text-align:left;">Here&#39;s what you get:</p><ul><li><p class="paragraph" style="text-align:left;">Curated tech news that shapes your career - Filtered from thousands of sources so you know what&#39;s coming 6 months early.</p></li><li><p class="paragraph" style="text-align:left;">Practical resources you can use immediately - Real tutorials and tools that solve actual engineering problems.</p></li><li><p class="paragraph" style="text-align:left;">Research papers and insights decoded - We break down complex tech so you understand what matters.</p></li></ul><p class="paragraph" style="text-align:left;">All delivered twice a week in just 2 short emails.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://magic.beehiiv.com/v1/5f7ce6e3-9a71-416b-99a7-606c5f7e2447?email={{email}}&redirect_to=https%3A%2F%2Fcodenewsletter.ai%2Fforms%2F14166360-de71-46c4-8722-878d417fab5c&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_0f856121-ae6b-4abe-9281-4be0b189be5c_94e90c2e&bhcl_id=a127f822-1d4a-493d-b803-9463de2975ff_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Join 100K+ engineers</a></p><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://rubyconf.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">RubyConf</a> launched the <a class="link" href="https://rubycentral.teamtailor.com/jobs/6963879-rubyconf-pitch-competition-the-ruby-runway?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">The Ruby Runway - Pitch live, gain exposure, and compete for exclusive cash prizes at RubyConf</a>. Deadline is February 28, 2026 at 11:59PM ET</p><div class="image"><a class="image__link" href="https://rubycentral.teamtailor.com/jobs/6963879-rubyconf-pitch-competition-the-ruby-runway?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/466fbda5-4dd2-4ec3-9f37-2759ccfff2dd/image.png?t=1770020977"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubycentral.teamtailor.com/jobs/6963879-rubyconf-pitch-competition-the-ruby-runway?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">https://rubycentral.teamtailor.com/jobs/6963879-rubyconf-pitch-competition-the-ruby-runwa</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://github.com/solojavier?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Javier Cervantes</a> launched the <a class="link" href="http://RubyForum.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">RubyForum.org</a> - <i>“a new space for people who learn, use, and care about Ruby to ask questions, share resources, and have thoughtful discussions about the language and its ecosystem”</i></p><div class="image"><a class="image__link" href="https://www.rubyforum.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2c41e680-b095-4d91-ba0d-15e8b01dd20b/image.png?t=1770026601"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.rubyforum.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">https://www.rubyforum.org</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://helsinkiruby.fi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">helsinkiruby.fi</a> announced the date for this year event. For more details, check their site for more details → <a class="link" href="https://helsinkiruby.fi/tinyruby/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">TinyRuby.fi</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/helsinkiruby.fi/post/3mdk5uqbkpw2a?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d62c1dd4-127c-4d1f-be9a-97f73fa08ff2/image.png?t=1769864210"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/helsinkiruby.fi/post/3mdk5uqbkpw2a?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://helsinkiruby.fi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">helsinkiruby.fi</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://x.com/tropical_rb?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Tropical.Rb</a> announced an update about their lineup</p><div class="image"><a class="image__link" href="https://x.com/tropical_rb/status/2016579040770216440?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ca79d98f-4055-4e19-b27a-01ab6a204484/image.png?t=1769953832"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/tropical_rb/status/2016579040770216440?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@tropical_rb</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/tropical_rb/status/2016579040770216440?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c8cb955c-37b4-48c0-bc72-e3fef6e23f31/image.png?t=1769953858"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/tropical_rb/status/2016579040770216440?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@tropical_rb</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/andrzejkrzywda?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Andrzej Krzywda</a> shared a code sample from <a class="link" href="https://github.com/fractaledmind/chaotic_job/blob/main/lib/chaotic_job/glitch.rb?utm_source=shortruby&ref=shortruby.com#L39" target="_blank" rel="noopener noreferrer nofollow">Chaotic Job gem</a></p><div class="image"><a class="image__link" href="https://x.com/andrzejkrzywda/status/2017869242696405086?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f67b2e10-5d14-4dca-934b-b1c97977e370/image.png?t=1770022579"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/andrzejkrzywda/status/2017869242696405086?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@andrzejkrzywda</a></p></span></div></div><p class="paragraph" style="text-align:left;">️️💻 <a class="link" href="https://tend.cash?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">James Kerr</a> shared how safe_join allows a tag as a divider</p><div class="image"><a class="image__link" href="https://x.com/specialCaseDev/status/2016214900415361086?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b8810eb7-8f6f-4f38-a5b1-f7fa49b97acc/image.png?t=1769865170"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/specialCaseDev/status/2016214900415361086?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@specialCaseDev</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://bsky.app/profile/joel.drapper.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Joel Drapper</a> shared about a new feature in Phlex</p><div class="image"><a class="image__link" href="https://bsky.app/profile/joel.drapper.me/post/3mdeqdedkos27?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d5fb6165-6052-4713-8d4a-94ba47e577d2/image.png?t=1769861733"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/joel.drapper.me/post/3mdeqdedkos27?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://joel.drapper.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">joel.drapper.me</a></p></span></div></div><p class="paragraph" style="text-align:left;">️️💻 <a class="link" href="https://twitter.com/kukicola?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Karol Bąk</a> shared how to add custom metrics and observability to any code with ActiveSupport</p><div class="image"><a class="image__link" href="https://x.com/kukicola/status/2017636859774701912?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8f9efcf5-4b00-4132-8ae4-ba5e95287087/image.png?t=1769954533"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kukicola/status/2017636859774701912?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@kukicola</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/kukicola/status/2018005096941142041?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3096bf79-edd1-4799-9715-c74fcd20ab36/image.png?t=1770022686"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kukicola/status/2018005096941142041?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@kukicola</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><h3 class="heading" style="text-align:left;" id="privacyfirst-email-built-for-real-p">Privacy-first email. Built for real protection.</h3><div class="image"><a class="image__link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub2=Concept2_Static2&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Secondary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_term=&utm_ads=Concept2_Static2&_bhiiv=opp_74c553f8-bab9-4c14-a838-71a1d6f2743a_598ab766&bhcl_id=9692db09-0d7b-40b3-aeac-60f23fa0012f_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d88c0398-3695-4874-9bb4-2f57dc8756ec/02_2.png?t=1768321612"/></a></div><p class="paragraph" style="text-align:left;">End-to-end encrypted, ad-free, and open-source. Proton Mail protects your inbox with zero data tracking.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub2=Concept2_Static2&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Secondary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_term=&utm_ads=Concept2_Static2&_bhiiv=opp_74c553f8-bab9-4c14-a838-71a1d6f2743a_598ab766&bhcl_id=9692db09-0d7b-40b3-aeac-60f23fa0012f_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Explore Proton’s benefits</a></p><hr class="content_break"><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️️📐 <a class="link" href="https://bsky.app/profile/headius.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Charles Oliver Nutter</a> talked about Ruby’s keyboard arguments processing</p><div class="image"><a class="image__link" href="https://bsky.app/profile/headius.bsky.social/post/3mdjf4z5qbq2i?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c25fb079-7871-48ed-a61a-11f97cda90d3/image.png?t=1769863978"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/headius.bsky.social/post/3mdjf4z5qbq2i?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://headius.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">headius.bsky.social</a></p></span></div></div><div class="image"><a class="image__link" href="https://gist.github.com/headius/d01585d889a1b349db3829cbe414d6d4?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d902428f-e168-45af-ac2f-954529e0838c/image.png?t=1769864031"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://gist.github.com/headius/d01585d889a1b349db3829cbe414d6d4?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">https://gist.github.com/headius/d01585d889a1b349db3829cbe414d6d4</a></p></span></div></div><p class="paragraph" style="text-align:left;">️️📐 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> shared about the work they made on Basecamp 5</p><div class="image"><a class="image__link" href="https://x.com/dhh/status/2016449600257720742?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d39203ae-38a2-44d6-a1fd-e0a868aa8e7d/image.png?t=1769865712"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/2016449600257720742?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/dhh/status/2016449600257720742?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1dc5faf3-a460-47e5-b462-5403474badd7/image.png?t=1769865790"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/2016449600257720742?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">️Also shared how he made the test suite that fast for Basecamp 5</p><div class="image"><a class="image__link" href="https://x.com/dhh/status/2016453756808818911?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/33e4fac6-15d8-4f95-8605-dcfa89aa0735/image.png?t=1769865853"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/2016453756808818911?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">📐 <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared about the size of the Basecamp 3 and Hey codebases</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/2016386302254711042?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/26cf42a2-b0a4-49fc-b587-5816e2a4137f/image.png?t=1769865528"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/2016386302254711042?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared how LLMs write loops like in C instead of using Enumerable!</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/2016557900257538335?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3d32da40-e899-4130-ac1a-395570369b96/image.png?t=1769866128"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/2016557900257538335?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://boringrails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Matt Swanson</a> published his Cursor chat for building a new feature → <a class="link" href="https://gist.github.com/swanson/107f498f6960803083cc51c9358d6285?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166#llm-quickgenerate-model-specification" target="_blank" rel="noopener noreferrer nofollow">LLM QuickGenerate model specification</a></p><div class="image"><a class="image__link" href="https://x.com/_swanson/status/2016960308670034001?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/96270df1-669f-4d0b-b76a-f283f1586231/image.png?t=1769867586"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_swanson/status/2016960308670034001?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@_swanson</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://jankeesvw.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Jankees</a> shared about his learnings on AI coding agents. The skill mentioned in the post is available here → <a class="link" href="https://gist.github.com/jankeesvw/34e8d49aca0e25f022879b630deb652c?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Test in Browser Skill</a></p><div class="image"><a class="image__link" href="https://x.com/jankeesvw/status/2017117800670650485?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/29cc4e97-0f2d-4f8e-8bd2-cdb9bd50b3ed/image.png?t=1769868046"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jankeesvw/status/2017117800670650485?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@jankeesvw</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://bsky.app/profile/yarotheslav.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Yaroslav Shmarov</a> shared a script to use cloudflare tunnels for local developments: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/yarotheslav.bsky.social/post/3mde5ao6oms2m?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/08d8dfaf-2ec8-4741-a540-9e2e24b7d578/image.png?t=1770023266"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/yarotheslav.bsky.social/post/3mde5ao6oms2m?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://yarotheslav.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">yarotheslav.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/cooperx86?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Peter Cooper</a> shared about the migration of an old project to Rails 8.1 using Claude Code</p><div class="image"><a class="image__link" href="https://x.com/cooperx86/status/2016523155343278571?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1f508059-aaf4-424b-9df6-e72a8872f5f3/image.png?t=1769865979"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/cooperx86/status/2016523155343278571?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@cooperx86</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://prabinpoudel.com.np?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Prabin Poudel</a> is preparing a new learning resource for testing Rails applications using Minitest</p><div class="image"><a class="image__link" href="https://x.com/coolprobn/status/2017644035142254978?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/816bdda3-008d-4471-86bd-69cb82bae6ee/image.png?t=1769954852"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/coolprobn/status/2017644035142254978?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@coolprobn</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://www.linkedin.com/in/dmitrypogrebnoy/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Dmitry Pogrebnoy</a> shared aboput the discussions on the official Ruby on Rails forum: </p><div class="image"><a class="image__link" href="https://www.linkedin.com/posts/dmitrypogrebnoy_i-scraped-discussrubyonrailsorg-to-analyze-share-7420923720485191684-t-JV?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/11ee1e6d-8d5e-4a42-8f42-764505c30491/image.png?t=1770023442"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.linkedin.com/posts/dmitrypogrebnoy_i-scraped-discussrubyonrailsorg-to-analyze-share-7420923720485191684-t-JV?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Linkedin</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/jnunemaker?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">John Nunemaker</a> wrote about his problem with tests using the same database</p><div class="image"><a class="image__link" href="https://x.com/jnunemaker/status/2016887456667209921?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4bf3b135-cd34-40a2-98ce-9c7467ad3127/image.png?t=1769866983"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jnunemaker/status/2016887456667209921?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@jnunemaker</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/jnunemaker/status/2016887456667209921?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/99b5f938-e2bf-45c0-adc5-c665fc9d0eb3/image.png?t=1769867080"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jnunemaker/status/2016887456667209921?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@jnunemaker</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://twitter.com/jeremysmithco?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Jeremy Smith</a> also shared their <a class="link" href="https://gist.github.com/jeremysmithco/1aa202287fc64333a24f8ad059d64d1b?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Conductor Setup for Rails App 2026-01-31</a></p><div class="image"><a class="image__link" href="https://x.com/jeremysmithco/status/2017782227728318887?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d43147f7-5b5b-4924-beee-21c96f2e3ba5/image.png?t=1770023098"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jeremysmithco/status/2017782227728318887?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@jeremysmithco</a></p></span></div></div><div class="image"><a class="image__link" href="https://gist.github.com/jeremysmithco/1aa202287fc64333a24f8ad059d64d1b?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/14ef73da-61e4-4a9a-b863-432877828d05/image.png?t=1770023138"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://gist.github.com/jeremysmithco/1aa202287fc64333a24f8ad059d64d1b?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">https://gist.github.com/jeremysmithco/1aa202287fc64333a24f8ad059d64d1b</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://www.zainfathoni.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Zain Fathoni</a> shared he migrated his side project app from React Router V7 to Rails</p><div class="image"><a class="image__link" href="https://x.com/zainfathoni/status/2016903872405799187?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/23859d7f-5736-44c4-9d93-4cd13a591996/image.png?t=1769867237"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/zainfathoni/status/2016903872405799187?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@zainfathoni</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="jobs">💼 Jobs</h2><p class="paragraph" style="text-align:left;">This is a new section curated by Raul from <a class="link" href="https://CalmCompanies.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">CalmCompanies.club</a> </p><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fapple.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apple</a></p><ul><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">Sr. Ruby on Rails Engineer, ASE ($181,100 - $318,400) - San Francisco, CA - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fen-us%2Fdetails%2F200636173-3577%2Fsr-ruby-on-rails-engineer-ase%3Fteam%3DSFTWR&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Better Stack</a></p><ul><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">/^Full-?stack Engineer$/i ($60K - $300K/year + equity) - Remote (NAMER) or On-site (Prague, Czech Republic) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com%2Fcareers&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbuildkite.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">BuildKite</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p></li><li><p class="paragraph" style="text-align:left;"><b>Backend</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Engineer (Pipelines) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5031519008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Engineer (Test Engine) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5021558008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><b>DevOps</b></p><ul><li><p class="paragraph" style="text-align:left;">🆕 DevOps Support Engineer ($95,000-$125,000) - United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5097330008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Foncactus.com%2F&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Cactus</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Submit your resume at <a class="link" href="https://workoncactus.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">workoncactus.com</a> Call with Maya, our AI assistant - (415) 360-3350 Write us why you are interested at <a class="link" href="mailto:join@oncactus.com" target="_blank" rel="noopener noreferrer nofollow">join@oncactus.com</a>. Resumes are great but we’d love to see that you know how to write and can communicate effectively. Don&#39;t go overboard, under 500 words is more than enough. Call with CTO founder - assess background and technical alignment Onsite Interview to meet the team, including our CEO Ajith - (you get to know the company and we get to know you) Two-week paid work trial Offer</p></li><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Ruby on Rails + AI Engineer ($120K - $150K) - San Mateo, CA, US - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=workoncactus.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Circle</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p></li><li><p class="paragraph" style="text-align:left;"><b>Infrastructure</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Back-End Software Engineer, Infra ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F4961366008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><b>Full Stack</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Applied AI ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5066690008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, CRM ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5076959008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Full-Stack Software Engineer, Live ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5077650008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">🆕 Senior Full-Stack Software Engineer, CMS ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5096679008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><b>Platform</b></p><ul><li><p class="paragraph" style="text-align:left;">Senior Quality Platform Engineer ($120K - $130K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5058408008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">🆕 AI Platform Engineer, Applied AI ($130,000 - $140,000 USD per year) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so%2Fcareers%2Fgreenhouse--5102925008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fevilmartians.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Evil Martians</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Don’t send us a standard CV. Send us an email to <a class="link" href="mailto:obey-backend@evilmartians.com" target="_blank" rel="noopener noreferrer nofollow">obey-backend@evilmartians.com</a> with your full name as the email subject. The email must be in Russian. In your email: Your story. Tell us about your experience, interests, your previous projects, and your role (what did you do or achieve). Code showcase. As a starting point, we need to see some sample code. You can send us links to your GitHub projects or Pull Requests. You can also create (secret) GitHub Gists to send us code samples from your closed source projects: something that solves a non-obvious, advanced task, or examples of beautiful code. Ideally, you would also describe what the code does, include tests, and a general description of the feature or the problem relevant to the code. Location & relocation. Mention your current location and if you’re open to relocation. We do not hire in Russia.</p></li><li><p class="paragraph" style="text-align:left;"><b>Backend</b></p><ul><li><p class="paragraph" style="text-align:left;">Ruby Backend Engineer ($65K – $110K gross annual salary) - Remote (minimum of 3 hours daily overlap with the Pacific Timezone; relocation to Portugal possible) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=mailto%3Aobey-backend%40evilmartians.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li></ul><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://twitter.com/joelmoss?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Joel Moss</a> announced a new gem → <a class="link" href="https://github.com/joelmoss/insertion?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">insertion</a> - “PORO test fixtures for Rails“</p><div class="image"><a class="image__link" href="https://github.com/joelmoss/insertion?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9f8955c9-0310-4d87-b0e8-97bdc7e2752a/image.png?t=1769864373"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/joelmoss/insertion?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">https://github.com/joelmoss/insertion</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/povilasjurcys?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Povilas Jurčys</a> announced a new gem <a class="link" href="https://github.com/povilasjurcys/rubocop-rspec_parity?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">rubocop-rspec_parity</a> - &quot;A RuboCop plugin that provides custom cops to ensure RSpec test coverage parity and enforce RSpec best practices in your Ruby projects.&quot;</p><div class="image"><a class="image__link" href="https://github.com/povilasjurcys/rubocop-rspec_parity?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2b1f9cfd-63de-4563-b513-939c038b61b5/image.png?t=1770022169"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/povilasjurcys/rubocop-rspec_parity?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">https://github.com/povilasjurcys/rubocop-rspec_parity</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://blog.codenamev.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Valentino Stoll</a> announced a new gem <a class="link" href="https://github.com/codenamev/chaos_to_the_rescue?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">chaos_to_the_rescue</a> - “Safe-by-default LLM-powered method generation and Rails error rescue suggestions.“</p><div class="image"><a class="image__link" href="https://github.com/codenamev/chaos_to_the_rescue?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3b442fb6-6fb8-46eb-9248-1a5e89d8d5ac/image.png?t=1769866410"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/codenamev/chaos_to_the_rescue?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">https://github.com/codenamev/chaos_to_the_rescue</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/alec-c4?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Alexey Poimtsev</a> announced a new gem <a class="link" href="https://github.com/alec-c4/ffmpeg_core?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">ffmpeg_core</a> - &quot;A clean, well-tested FFmpeg wrapper with modern Ruby conventions, proper error handling, and zero dependencies.&quot;</p><div class="image"><a class="image__link" href="https://github.com/alec-c4/ffmpeg_core/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3ddf269d-8f33-4bc6-a9ab-37aa45e64ab1/image.png?t=1770022873"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/alec-c4/ffmpeg_core/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">https://github.com/alec-c4/ffmpeg_core</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/alec-c4?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Alexey Poimtsev</a> announced a new gem <a class="link" href="https://github.com/alec-c4/inertia_i18n?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">inertia_i18n</a> - &quot;Convert Rails YAML locales to i18next JSON, scan frontend code for translation usage, detect missing/unused keys, and check locale synchronization. Supports Svelte, React, and Vue frontends.&quot;</p><div class="image"><a class="image__link" href="https://github.com/alec-c4/inertia_i18n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a5ed7c7c-c4fd-4e25-9764-542c47df8036/image.png?t=1770022953"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/alec-c4/inertia_i18n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">https://github.com/alec-c4/inertia_i18n</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://bsky.app/profile/hsbt.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Hiroshi Shibata</a> announced an update about <a class="link" href="https://blog.rubygems.org/2026/01/29/4.0.5-released.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">RubyGems/Bundler</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/hsbt.org/post/3mdjjongqak2e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7c7d4155-a7c2-4517-9450-f712eeabff3b/image.png?t=1769864136"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/hsbt.org/post/3mdjjongqak2e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://hsbt.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">hsbt.org</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="http://dashapi.ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Stéphane Paquet</a> announced an update for <a class="link" href="https://github.com/spaquet/action-cable-online-status?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">action-cable-online-status</a> - “Rails 8 online status using Solid Cable and Hotwire Turbo Stream“</p><div class="image"><a class="image__link" href="https://x.com/stpaquet/status/2015212307123732648?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5f113ce6-8bd9-4576-a657-aef69b32f839/image.png?t=1769864516"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/stpaquet/status/2015212307123732648?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@stpaquet</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://metaredux.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Bozhidar Batsov</a> announced a new version of <a class="link" href="https://github.com/rubocop/rubocop?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">rubocop</a> - “A Ruby static code analyzer and formatter, based on the community Ruby style guide.“</p><div class="image"><a class="image__link" href="https://x.com/bbatsov/status/2016088826167390577?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/dfb7de82-31a4-4bd0-a2dd-6227eea4a21c/image.png?t=1769864953"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/bbatsov/status/2016088826167390577?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@bbatsov</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://anycable.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Any Cable</a> announced a new release → <a class="link" href="https://github.com/anycable/anycable/releases/tag/v1.6.9?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">1.6.9</a></p><div class="image"><a class="image__link" href="https://github.com/anycable/anycable/releases/tag/v1.6.9?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9c59c5b8-c6f4-4731-afa8-810c8ab01a7c/image.png?t=1769865331"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/anycable/anycable/releases/tag/v1.6.9?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">https://github.com/anycable/anycable/releases/tag/v1.6.9</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/YuriSidorov?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Yuri Sidorov</a> announced an update on his <a class="link" href="https://github.com/newstler/template?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">template</a> - “Lightweight Rails 8 template with all required SaaS features“. For more details check the blog post → <a class="link" href="https://blog.yurisidorov.com/how-i-think-about-building-rails-apps-in-2026?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">How I Think About Building Rails Apps in 2026</a></p><div class="image"><a class="image__link" href="https://x.com/YuriSidorov/status/2016691606225617158?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a0f5bf76-5166-45aa-a238-8dc8b3dd196c/image.png?t=1769866770"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/YuriSidorov/status/2016691606225617158?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@YuriSidorov</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://luislavena.info/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Luis Lavena</a> shared that now Ruby-4.0 is available in the Microsoft Store</p><div class="image"><a class="image__link" href="https://rubyinstaller.org/2026/01/27/ruby-4.0-available-in-microsoft-store.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2718158d-4b61-4f20-b6f1-57a9c68798c6/image.png?t=1769868170"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubyinstaller.org/2026/01/27/ruby-4.0-available-in-microsoft-store.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">https://rubyinstaller.org/2026/01/27/ruby-4.0-available-in-microsoft-store.html</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://karpathy.ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Andrej Karpathy</a> shared some thoughts on his experience coding with Claude. Here is just a part, <a class="link" href="https://x.com/karpathy/status/2015883857489522876?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">check the full post on X</a></p><div class="image"><a class="image__link" href="https://x.com/karpathy/status/2015883857489522876?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6297d4be-a294-4702-a5a1-13e0d6d00671/image.png?t=1769864701"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/karpathy/status/2015883857489522876?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@karpathy</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://borischerny.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Boris Cherny</a> replied with</p><div class="image"><a class="image__link" href="https://x.com/bcherny/status/2015979257038831967?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5fedfddc-e512-447b-8732-b0ea0a25ada3/image.png?t=1769864863"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/bcherny/status/2015979257038831967?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@bcherny</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/robbyrussell?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Robby Russell</a> shared a nice rule to integrate to mostly all LLMs</p><div class="image"><a class="image__link" href="https://x.com/robbyrussell/status/2016602908209664020?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/acf6a3e3-d09a-4109-8ef6-cfdceafa8bff/image.png?t=1769866302"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/robbyrussell/status/2016602908209664020?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@robbyrussell</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared some thoughts on code refactoring by LLMs</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/2016918529661075702?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5e598c8e-b8cb-43ae-b1ed-ede8cddeeea4/image.png?t=1769867437"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/2016918529661075702?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/jeremysmithco?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Jeremy Smith</a> shared how to use a gitignored <a class="link" href="http://CLAUDE.local.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">CLAUDE.local.md</a> in a project while still keeping it under version control</p><div class="image"><a class="image__link" href="https://x.com/jeremysmithco/status/2017031793233346669?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c6e9522a-cdba-47e2-975e-89e4bd9536ea/image.png?t=1769867882"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jeremysmithco/status/2017031793233346669?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">@jeremysmithco</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="slides">📚 Slides</h3><p class="paragraph" style="text-align:left;">📚 <a class="link" href="https://twitter.com/andrzejkrzywda?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Andrzej Krzywda</a> published his slides from RubyConf Thailand → <a class="link" href="https://speakerdeck.com/andrzejkrzywda/15-years-with-rails-and-ddd-ai-edition?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">15 years with Rails and DDD (AI Edition)</a></p><p class="paragraph" style="text-align:left;">📚 <a class="link" href="https://x.com/okuramasafumi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">大倉雅史（Okura Masafumi）</a>published his slides from RubyConf Thailand → <a class="link" href="https://speakerdeck.com/okuramasafumi/metaprogramming-isnt-real-it-cant-hurt-you?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Metaprogramming isn&#39;t real, it can&#39;t hurt you</a></p><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 This Week in Rails published a new edition → <a class="link" href="https://rubyonrails.org/2026/1/30/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Disabled query cache in console and bugfixes</a></p><p class="paragraph" style="text-align:left;">🗞 Matt Solt published a new edition → <a class="link" href="https://rubyai.beehiiv.com/p/ruby-ai-news-january-27th-2026?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby AI News - January 27th, 2026</a></p><p class="paragraph" style="text-align:left;">🗞 Hotwire Weekly published a new edition → <a class="link" href="https://www.hotwireweekly.com/archive/week-04-optimistic-uis-hotwire-native-in-app-purchases/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Week 04 - Optimistic UIs, Hotwire Native in-app purchases, and more!</a></p><p class="paragraph" style="text-align:left;">🗞 Matt Solt published a new edition → <a class="link" href="https://rubyai.beehiiv.com/p/ruby-ai-news-january-27th-2026?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby AI News - January 27th, 2026</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new edition → <a class="link" href="https://rubyweekly.com/issues/785?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RubyConf’s &#39;Shark Tank&#39; moment with The Ruby Runway</a></p><p class="paragraph" style="text-align:left;">🗞 Women On Rails Newsletter published a new article about <a class="link" href="https://womenonrailsinternational.substack.com/p/newsletter-wor-69-ai-wont-solve-all?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Newsletter WoR #69: AI won&#39;t solve all your problems, being human to avoid human error, and some games</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Central published a new article about <a class="link" href="https://rubycentral.org/news/the-ruby-central-readme-january-2026/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Ruby Central README: January 2026</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 Joe Masilotti published a new podcast episode → <a class="link" href="https://www.youtube.com/watch?v=smetfVNJ-X4&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Welcome to Permission Not Required</a></p><p class="paragraph" style="text-align:left;">🎧 The Bike Shed published a new podcast episode → <a class="link" href="https://feed.thoughtbot.com/link/24077/17264523/the-bike-shed-ep-491-influences-that-shaped-our-thinking?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Bike Shed Ep 491: Influences that shaped our thinking</a></p><p class="paragraph" style="text-align:left;">🎧 The Ruby AI Podcast published a new episode → <a class="link" href="https://www.buzzsprout.com/2388930/episodes/18571537-new-year-new-ruby-agents-wishes-and-a-calm-ruby-4?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">New Year, New Ruby: Agents, Wishes, and a Calm Ruby 4</a></p><p class="paragraph" style="text-align:left;">🎧 Remote Ruby published a new episode → <a class="link" href="https://www.buzzsprout.com/2260490/episodes/18584287-blue-ridge-ruby-2026-with-jeremy-smith-and-joe-peck?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Blue Ridge Ruby 2026 with Jeremy Smith and Joe Peck</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Jeremy Smith published a new video → <a class="link" href="https://www.youtube.com/watch?v=ZeUD4de884s&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Blue Ridge Behind the Scenes - Ruby Passports</a></p><p class="paragraph" style="text-align:left;">🎥 Matt Diebolt published a new video → <a class="link" href="https://x.com/mdiebolt/status/2016991484621299902?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Today I dive into how user avatars work in Fizzy</a></p><p class="paragraph" style="text-align:left;">🎥 Deanin published a new video → <a class="link" href="https://www.youtube.com/watch?v=tGi3YGGhIGg&utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Absolute Beginners Guide to Deploying Rails 8 to Production (Kamal Tutorial)</a></p><p class="paragraph" style="text-align:left;">🎥 Dave Kimura published a new video → <a class="link" href="https://www.driftingruby.com/episodes/claude-code?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Claude Code</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Mario Alberto Chávez published a new article about <a class="link" href="https://mariochavez.io/desarrollo/2026/01/26/how-i-actually-use-ai-to-write-ruby-on-rails-code/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">How I actually use AI to write Ruby on Rails code</a></p><p class="paragraph" style="text-align:left;">🆕 Sam Ruby published a new article about <a class="link" href="https://intertwingly.net/blog/2026/01/28/Twilight-Zone.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Submitted for Your Approval</a></p><p class="paragraph" style="text-align:left;">🆕 John Nunemaker published a new article about <a class="link" href="https://www.johnnunemaker.com/conducting-rails/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-166" target="_blank" rel="noopener noreferrer nofollow">Conducting Rails</a></p><p class="paragraph" style="text-align:left;">🆕 Jankees published a new article about <a class="link" href="https://jankeesvw.com/blog/2026/let-agents-test-their-own-work/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Let Agents Test Their Own Work</a></p><p class="paragraph" style="text-align:left;">🆕 David Backeus published a new article about <a class="link" href="https://lovingruby.com/reasons/31-string-capitalize?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">#31 String#capitalize - 365 Reasons to Love Ruby</a></p><p class="paragraph" style="text-align:left;">🆕 Svyatoslav Kryukov published a new article about <a class="link" href="https://evilmartians.com/chronicles/optimistic-ui-in-rails-with-optimism-and-inertia?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Optimistic UI in Rails with optimism... and Inertia</a></p><p class="paragraph" style="text-align:left;">🆕 Mohit Sindhwani published a new article about <a class="link" href="https://notepad.onghu.com/2026/ruby-tips-015-dont-let-utc-trip-you/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby Tips 15 - Don&#39;t let UTC trip you up</a></p><p class="paragraph" style="text-align:left;">🆕 Roman Samoilov published a new article about <a class="link" href="https://dev.to/roman_samoilov_152a8ec4ca/if-rails-was-designed-today-the-operational-monolith-44lh?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">If Rails Was Designed Today: The Operational Monolith</a></p><p class="paragraph" style="text-align:left;">🆕 Mike Mc Quaid published a new article about <a class="link" href="https://mikemcquaid.com/talks/what-happened-to-rubygems-and-what-can-we-learn/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">What happened to RubyGems and what can we learn?</a></p><p class="paragraph" style="text-align:left;">🆕 Brad Gessler published a new article about <a class="link" href="https://beautifulruby.com/code/superfeature-price?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby Price objects for SaaS websites</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">Andy Croll published a new article about <a class="link" href="https://andycroll.com/ruby/simple-tailwind-css-4-setup-for-jekyll/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Simple Tailwind CSS 4 Setup for Jekyll</a></p><p class="paragraph" style="text-align:left;">Brooke Kuhlmann published a new article about <a class="link" href="https://alchemists.io/articles/hanami_with_rodauth?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Hanami with Rodauth</a></p><p class="paragraph" style="text-align:left;">Simon Chiu published a new article about <a class="link" href="https://codewithrails.com/blog/rails-csrf-notifications/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Monitor CSRF Attacks in Production with Rails Notifications</a></p><p class="paragraph" style="text-align:left;">Joshua Wood published a new article about <a class="link" href="https://www.honeybadger.io/blog/copilot-custom-agents/?utm_source=shortruby&utm_medium=social&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to build a Copilot agent that fixes Rails errors</a></p><p class="paragraph" style="text-align:left;">Marcin Ostrowski published a new article about <a class="link" href="https://rubyonai.com/the-single-most-important-thing-that-made-me-believe-ai-coding-could-work/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The single most important thing that made me believe AI coding could work</a></p><p class="paragraph" style="text-align:left;">Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/link-icon-custom-elements/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Creating a link-icon custom element</a></p><p class="paragraph" style="text-align:left;">Giménez Silva Germán Alberto published a new article about <a class="link" href="https://rubystacknews.com/2026/01/29/making-maps-with-ruby/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Making Maps with Ruby</a></p><p class="paragraph" style="text-align:left;">Mike Dalton published an article about <a class="link" href="https://mikedalton.co/2026/01/26/hotwire-native-oauth-bridge-component/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Implementing OAuth in Hotwire Native apps with Bridge Components</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">Scott Werner published a new article about <a class="link" href="https://worksonmymachine.ai/p/the-different-shapes-of-think-before?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Different Shapes of &quot;Think Before You Build&quot; Prompting</a></p><p class="paragraph" style="text-align:left;">Reni Mercier published a new article about <a class="link" href="https://remimercier.com/reflecting-on-2025/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Reflecting on 2025</a></p><p class="paragraph" style="text-align:left;">Sean Goedecke published a new article about <a class="link" href="https://seangoedecke.com/how-does-ai-impact-skill-formation/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How does AI impact skill formation?</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=a2dec985-52ec-4c79-b363-27ee5ae257c5&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 165</title>
  <description>The one where Roadmap launched a Roadmap for learning Ruby, where Rails 8.1.2 is officially released, Devise reaches the 5.0 mark and where Intercom shares data about how they ship to production.</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f77db435-0454-4be8-a9b2-a9102040b90d/cover-page-edition-165.png" length="381753" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-165</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-165</guid>
  <pubDate>Mon, 26 Jan 2026 12:05:30 +0000</pubDate>
  <atom:published>2026-01-26T12:05:30Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad) <a class="link" href="https://www.europdf.eu/shortruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">EuroPDF</a> - try it for free</p><div class="image"><a class="image__link" href="https://www.europdf.eu/shortruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d6fe5b47-27d8-48dc-a04f-f2e1ccbced20/image.png?t=1765772589"/></a><div class="image__source"><span class="image__source_text"><p>Visit <a class="link" href="https://www.europdf.eu/shortruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://www.europdf.eu/shortruby</a> to try EuroPDF for free</p></span></div></div><p class="paragraph" style="text-align:left;">“We need this as a PDF.” – “Okay, that&#39;s fun and easy to implement” (said no developer ever).</p><p class="paragraph" style="text-align:left;">What if you could create PDFs using powerful tools you already know, like modern HTML and CSS?</p><p class="paragraph" style="text-align:left;">That&#39;s exactly why we built EuroPDF. Our clients demanded PDFs, and we wanted to reuse designs we had already implemented for the web. Now you can too!</p><p class="paragraph" style="text-align:left;">Powered by the industry-leading PrinceXML rendering engine, simply use specialized CSS features to create beautiful documents for print – complete with page numbers, running headers, exact page sizes, and more. Make dealing with PDFs fun again!</p><p class="paragraph" style="text-align:left;">Use code SHORTRUBY on signup to get 20% off any paid plan for the first year. </p><div class="button" style="text-align:center;"><a target="_blank" rel="noopener nofollow noreferrer" class="button__link" style="" href="https://www.europdf.eu/shortruby/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165"><span class="button__text" style=""> Try EuroPDF for free! </span></a></div><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://x.com/naumanthanvi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Nauman Tariq</a> and <a class="link" href="https://x.com/ahmednadar?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Ahmed Nadar</a> launched <a class="link" href="http://Builtonrails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Builtonrails.com</a> - real data from real apps</p><div class="image"><a class="image__link" href="https://builtonrails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6e87c1a9-8a06-4796-960a-de7074ddf9e5/image.png?t=1769357941"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://builtonrails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://builtonrails.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 Andy Leverenz launched <a class="link" href="https://railsui.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">RailsUI</a></p><div class="image"><a class="image__link" href="https://railsui.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0083a488-5253-47b2-9d06-aed2bfadf953/image.png?t=1769200595"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://railsui.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://railsui.com/</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://aviflombaum.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Avi Flombaum</a> launched <a class="link" href="https://vcmatch.ai/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">vcmatch.ai - Find Your Perfect Investor</a></p><div class="image"><a class="image__link" href="https://x.com/aviflombaum/status/2014567214980948242?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8914ff5f-3b83-4efa-be2f-5a3332681130/image.png?t=1769355299"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/aviflombaum/status/2014567214980948242?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@aviflombaum</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 Kerrick Long launched <a class="link" href="https://www.ratatui-ruby.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">RatatuiRuby - Ruby wrapper around Rust Ratatui</a></p><div class="image"><a class="image__link" href="https://www.ratatui-ruby.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/90e6a12e-efc5-4fb0-8c66-9a240ef0c3b2/image.png?t=1769418002"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.ratatui-ruby.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://www.ratatui-ruby.dev</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://x.com/ruby_african?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">African Ruby Community</a> announced the call for participation. If you’re interested, check it right here → <a class="link" href="https://www.papercall.io/ruby-conf-africa-2026?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Ruby Conf Africa 2026</a></p><div class="image"><a class="image__link" href="https://www.papercall.io/ruby-conf-africa-2026?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fb04abff-9fd4-4802-9be0-72a764549a20/image.png?t=1769202076"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.papercall.io/ruby-conf-africa-2026?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://www.papercall.io/ruby-conf-africa-2026</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://Roadmap.Sh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Roadmap.Sh</a> created a new roadmap for <a class="link" href="https://roadmap.sh/ruby?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby</a></p><div class="image"><a class="image__link" href="https://x.com/roadmapsh/status/2013845013608780274?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/58072be2-609b-4346-b873-8d7f50f96f3d/image.png?t=1769204687"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/roadmapsh/status/2013845013608780274?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@roadmapsh</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> announced a new version release → <a class="link" href="https://rubyonrails.org/2026/1/22/rails-version-8-1-2-has-been-released?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Rails Version 8.1.2</a></p><div class="image"><a class="image__link" href="https://rubyonrails.org/2026/1/22/rails-version-8-1-2-has-been-released?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/59b05987-c454-4516-96aa-a07090a9aee0/image.png?t=1769207541"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubyonrails.org/2026/1/22/rails-version-8-1-2-has-been-released?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://rubyonrails.org/2026/1/22/rails-version-8-1-2-has-been-released</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;">️️💻 <a class="link" href="https://predkelis.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Elvinas Predkelis</a> wrote an useful metadata concern</p><div class="image"><a class="image__link" href="https://x.com/predkelis/status/2013524228457234833?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1b0abb2f-b878-4133-a805-758d4fe62d6a/image.png?t=1769202330"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/predkelis/status/2013524228457234833?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@predkelis</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/predkelis/status/2013524228457234833?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/15396ff1-0975-42fc-a0b2-57025c473e3e/image.png?t=1769202374"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/predkelis/status/2013524228457234833?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@predkelis</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://bsky.app/profile/sikac.hu?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Prem Sichanugrist</a> was wondering about why this is not a syntax error</p><div class="image"><a class="image__link" href="https://bsky.app/profile/sikac.hu/post/3mcyw343w3s2v?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a2f91ebc-d5da-4678-b579-30c2b1f3f250/image.png?t=1769201047"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/sikac.hu/post/3mcyw343w3s2v?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://sikac.hu?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">sikac.hu</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://bsky.app/profile/fnordfish.ruby.social.ap.brid.gy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Robert</a> shared about his recent learning: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/fnordfish.ruby.social.ap.brid.gy/post/3md3nrghaskg2?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b296ae8c-5ac8-4638-990b-146234b59a05/image.png?t=1769201503"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fnordfish.ruby.social.ap.brid.gy/post/3md3nrghaskg2?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fnordfish.ruby.social.ap.brid.gy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">fnordfish.ruby.social.ap.brid.gy</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/jnunemaker?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">John Nunemaker</a> shared how to configure Conductor app for Ruby on Rails → <a class="link" href="https://gist.github.com/jnunemaker/7e4b909bce0bb8796d342bed06bd4c3e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">bin_conductor-setup</a></p><div class="image"><a class="image__link" href="https://x.com/jnunemaker/status/2014413619572732070?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3e683501-8f0c-4772-9560-7c321c817393/image.png?t=1769207276"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jnunemaker/status/2014413619572732070?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@jnunemaker</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://x.com/spencerldixon?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Spencer</a> shared a tip for Rails background jobs</p><div class="image"><a class="image__link" href="https://x.com/spencerldixon/status/2014646844505129255?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c0a5f58b-523f-4a78-b9e5-d42e6f841b30/image.png?t=1769207757"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/spencerldixon/status/2014646844505129255?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@spencerldixon</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><h3 class="heading" style="text-align:left;" id="a-inative-crm">AI-native CRM</h3><div class="image"><a class="image__link" href="https://attio.com?utm_source=beehiiv&utm_medium=newsletter_sponsorship&utm_campaign=beehiiv-Q4Y25&utm_content={{publication_alphanumeric_id}}&_bhiiv=opp_182a3bb4-9d0a-475a-a5ba-96ad857cd6bf_f1be5357&bhcl_id=31ef376b-81c1-48b5-89c8-d045bbf447b2_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c6328168-b6fe-42b2-aadf-a510597502b1/beehiiv_2.png?t=1750705265"/></a></div><p class="paragraph" style="text-align:left;"><i>“When I first opened </i><i><a class="link" href="https://attio.com?utm_source=beehiiv&utm_medium=newsletter_sponsorship&utm_campaign=beehiiv-Q4Y25&utm_content={{publication_alphanumeric_id}}&_bhiiv=opp_182a3bb4-9d0a-475a-a5ba-96ad857cd6bf_f1be5357&bhcl_id=31ef376b-81c1-48b5-89c8-d045bbf447b2_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Attio</a></i><i>, I instantly got the feeling this was the next generation of CRM.”</i><br>— Margaret Shen, Head of GTM at Modal</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://attio.com?utm_source=beehiiv&utm_medium=newsletter_sponsorship&utm_campaign=beehiiv-Q4Y25&utm_content={{publication_alphanumeric_id}}&_bhiiv=opp_182a3bb4-9d0a-475a-a5ba-96ad857cd6bf_f1be5357&bhcl_id=31ef376b-81c1-48b5-89c8-d045bbf447b2_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Attio</a> is the AI-native CRM for modern teams. With automatic enrichment, call intelligence, AI agents, flexible workflows and more, Attio works for any business and only takes minutes to set up.</p><p class="paragraph" style="text-align:left;">Join industry leaders like Granola, Taskrabbit, Flatfile and more.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://attio.com?utm_source=beehiiv&utm_medium=newsletter_sponsorship&utm_campaign=beehiiv-Q4Y25&utm_content={{publication_alphanumeric_id}}&_bhiiv=opp_182a3bb4-9d0a-475a-a5ba-96ad857cd6bf_f1be5357&bhcl_id=31ef376b-81c1-48b5-89c8-d045bbf447b2_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">👉 Start for free today</a></p><hr class="content_break"><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐️ <a class="link" href="https://bsky.app/profile/robbyonrails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Robby Russell</a> shared an unpopular opinion about Rails</p><div class="image"><a class="image__link" href="https://bsky.app/profile/robbyonrails.com/post/3mcv6i6sulc2t?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a8d0bffc-e43e-4470-8ca8-3d50fe972595/image.png?t=1769198354"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/robbyonrails.com/post/3mcv6i6sulc2t?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://robbyonrails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">robbyonrails.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://www.damiangalarza.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Damian Galarza</a> shared how Opus 4.5 is a great choice for Ruby coding</p><div class="image"><a class="image__link" href="https://x.com/dgalarza/status/2014032265265795511?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c0ed9f9a-41c2-487a-b6b9-173a17510b47/image.png?t=1769205064"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dgalarza/status/2014032265265795511?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@dgalarza</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared how AI Agents improved his ability to respond to OSS issues.</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/2014497197891715265?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cb10cb8e-a31a-45ae-a9f6-c4d5fc71b6b6/image.png?t=1769207646"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/2014497197891715265?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://ryansherlock.blogspot.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Ryan Sherlock</a> shared about Intercom deployment data: </p><div class="image"><a class="image__link" href="https://x.com/ryan_sherlock/status/2013272876741226594?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9ea5c138-5e26-4870-ac1e-78cbd8415fd2/image.png?t=1769201932"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/ryan_sherlock/status/2013272876741226594?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@ryan_sherlock</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/ryan_sherlock/status/2013272878800638368?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/14fc0e30-50c3-43be-aac7-26eba9c3b5f0/image.png?t=1769356916"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/ryan_sherlock/status/2013272878800638368?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@ryan_sherlock</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://www.linkedin.com/in/dmitrypogrebnoy/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Dmitry Pogrebnoy</a> posted an analysis about number of issues in Ruby tracker: </p><div class="image"><a class="image__link" href="https://www.linkedin.com/posts/dmitrypogrebnoy_the-number-of-new-ruby-issues-is-going-down-share-7418737593468616704-FEI3?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/aeec03ea-f386-4387-819c-3f9f9e07a6fe/image.png?t=1769425173"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.linkedin.com/posts/dmitrypogrebnoy_the-number-of-new-ruby-issues-is-going-down-share-7418737593468616704-FEI3?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://www.linkedin.com/posts/dmitrypogrebnoy_the-number-of-new-ruby-issues-is-going-down-share-7418737593468616704-FEI3</a></p></span></div></div><div class="image"><a class="image__link" href="https://www.linkedin.com/posts/dmitrypogrebnoy_the-number-of-new-ruby-issues-is-going-down-share-7418737593468616704-FEI3?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/65572bde-55db-4ba5-b4d2-b84501d17e72/image.png?t=1769425180"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.linkedin.com/posts/dmitrypogrebnoy_the-number-of-new-ruby-issues-is-going-down-share-7418737593468616704-FEI3?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://www.linkedin.com/posts/dmitrypogrebnoy_the-number-of-new-ruby-issues-is-going-down-share-7418737593468616704-FEI3</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://twitter.com/markahesketh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Mark Hesketh</a> shared his current tech stack</p><div class="image"><a class="image__link" href="https://x.com/markahesketh/status/2013591349719704004?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3e9cae4d-83c3-410c-bf34-6f5338fbd393/image.png?t=1769202893"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/markahesketh/status/2013591349719704004?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@markahesketh</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> talked about the beauty of Ruby in the AI era</p><div class="image"><a class="image__link" href="https://x.com/dhh/status/2013611188651794611?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bebcc7f3-6774-44e7-a98b-e67745e7ea9b/image.png?t=1769203360"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/2013611188651794611?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">He got some replies:</p><div class="image"><a class="image__link" href="https://x.com/rstankov/status/2013612887294574749?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4d9f5393-ad23-452f-8aaa-723946589c54/image.png?t=1769203508"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rstankov/status/2013612887294574749?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@rstankov</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/zverianskii/status/2013613373682794739?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/64597ca1-33f5-407d-b9b0-9d2e30b927f6/image.png?t=1769203664"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/zverianskii/status/2013613373682794739?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@zverianskii</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/ChadMoran/status/2013690576588378201?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b9de1e13-fc28-40df-ad96-a6f37a0b227c/image.png?t=1769204387"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/ChadMoran/status/2013690576588378201?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@ChadMoran</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="http://alifadel.me/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">علي فاضل | Ali Fadel </a>shared about Ruby on Rails activity: </p><div class="image"><a class="image__link" href="https://x.com/alihfadel/status/2014921867971199312?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/23c25f2d-f40c-455c-9641-377743e456ed/image.png?t=1769355663"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/alihfadel/status/2014921867971199312?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@alihfadel</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="jobs">💼 Jobs</h2><p class="paragraph" style="text-align:left;">This is a new section curated by Raul from <a class="link" href="https://calmcompanies.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">CalmCompanies.club</a> </p><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fapple.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Apple</a><br>Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Sr. Ruby on Rails Engineer - ASE ($139,500 - $258,100) - Seattle, Washington, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fen-us%2Fdetails%2F200636171-3337%2Fsr-ruby-on-rails-engineer-ase%3Fteam%3DSFTWR&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Sr. Ruby on Rails Engineer, ASE ($181,100 - $318,400) - San Francisco, CA - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fen-us%2Fdetails%2F200636173-3577%2Fsr-ruby-on-rails-engineer-ase%3Fteam%3DSFTWR&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Better Stack</a></p><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;"> /^Full-?stack Engineer$/i ($60K - $300K/year + equity) - Remote (NAMER) or On-site (Prague, Czech Republic) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com%2Fcareers&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbuildkite.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">BuildKite</a><br>‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.<br>Backend</p><ul><li><p class="paragraph" style="text-align:left;">Senior Engineer (Pipelines) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5031519008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Engineer (Test Engine) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5021558008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Foncactus.com%2F&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Cactus</a><br>‼️ Application instructions: Submit your resume at <a class="link" href="https://workoncactus.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">workoncactus.com</a> Call with Maya, our AI assistant - (415) 360-3350 Write us why you are interested at <a class="link" href="mailto:join@oncactus.com" target="_blank" rel="noopener noreferrer nofollow">join@oncactus.com</a>. Resumes are great but we’d love to see that you know how to write and can communicate effectively. Don&#39;t go overboard, under 500 words is more than enough. Call with CTO founder - assess background and technical alignment Onsite Interview to meet the team, including our CEO Ajith - (you get to know the company and we get to know you) Two-week paid work trial Offer<br>Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Senior Ruby on Rails + AI Engineer ($120K - $150K) - San Mateo, CA, US - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=workoncactus.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fcircle.so&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Circle</a><br>‼️ Application instructions: Fill out the application form with your name, email, resume, and cover letter.</p><ul><li><p class="paragraph" style="text-align:left;">Infrastructure</p><ul><li><p class="paragraph" style="text-align:left;">🆕 Senior Back-End Software Engineer, Infra ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F4961366008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">🆕 Senior Full-Stack Software Engineer, Applied AI ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5066690008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">🆕 Senior Full-Stack Software Engineer, CRM ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5076959008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">🆕 Senior Full-Stack Software Engineer, Live ($130K - $140K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5077650008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li><li><p class="paragraph" style="text-align:left;">Platform</p><ul><li><p class="paragraph" style="text-align:left;">🆕 Senior Quality Platform Engineer ($120K - $130K) - Remote - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fcircleso%2Fjobs%2F5058408008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li></ul><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://twitter.com/_st0012?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Stan Lo</a> announced a collection of skills for Ruby. Read the article at <a class="link" href="https://st0012.dev/2026/01/24/ruby-skills-teaching-claude-code-about-ruby-tooling-and-ecosystem/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby Skills: Teaching Claude Code About Ruby&#39;s Tooling And Ecosystem</a> and download the skills from the Github repo at <a class="link" href="https://github.com/st0012/ruby-skills?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">ruby-skills</a></p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cec317f5-07b7-40b9-b4be-b28d310d6a2a/image.png?t=1769356285"/><div class="image__source"><span class="image__source_text"><p> </p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://bsky.app/profile/andrewnez.mastodon.social.ap.brid.gy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Andrew Nesbitt</a> created <a class="link" href="https://github.com/octobox/tui?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">tui</a> - “A terminal interface to your octobox inbox“</p><div class="image"><a class="image__link" href="https://github.com/octobox/tui?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/22d36a09-f680-4af1-96ba-b2405fa01031/image.png?t=1769199830"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/octobox/tui?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://github.com/octobox/tui</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/fs0414?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Fujitani Sora</a> published a new gem → <a class="link" href="https://github.com/fs0414/rfmt?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">rfmt</a> - “A fast Ruby code formatter build in Rust“</p><div class="image"><a class="image__link" href="https://github.com/fs0414/rfmt?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8e9e28bb-d941-4ced-a468-aa83abeff96e/image.png?t=1769202764"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/fs0414/rfmt?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://github.com/fs0414/rfmt</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://aviflombaum.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Avi Flombaum</a> created a new plug-in for Claude Code → <a class="link" href="https://github.com/aviflombaum/rspec-rails-plugin?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">rspec-rails-plugin</a></p><p class="paragraph" style="text-align:left;"><a class="link" href="https://threadreaderapp.com/thread/2014356920555933788.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Check the whole thread to learn more about them</a></p><div class="image"><a class="image__link" href="https://github.com/aviflombaum/rspec-rails-plugin?tab=readme-ov-file&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5da06f6c-e736-425a-a167-2876658ab4e1/image.png?t=1769205594"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/aviflombaum/rspec-rails-plugin?tab=readme-ov-file&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://github.com/aviflombaum/rspec-rails-plugin?tab=readme-ov-file</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://docspring.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Nathan Broadbent</a> announced a new gem → <a class="link" href="https://github.com/DocSpring/logstruct?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">logstruct</a> - “Zero-config, type-safe JSON logging for Ruby on Rails apps“</p><div class="image"><a class="image__link" href="https://logstruct.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/db63510b-fbfb-466d-9c4e-bc7da80a0522/image.png?t=1769205996"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://logstruct.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://logstruct.com/</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Ted launched a new project <a class="link" href="https://github.com/tednguyendev/debugger_replay?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">debugger_replay</a> - &quot;Replay HTTP requests, ActiveJob jobs, ActionMailer deliveries, and Rake tasks with hot-reloaded code at debugger breakpoints.&quot;</p><div class="image"><a class="image__link" href="https://github.com/tednguyendev/debugger_replay?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7ae87540-8301-4f21-b10d-928acb05fc2a/image.png?t=1769235102"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/tednguyendev/debugger_replay?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://github.com/tednguyendev/debugger_replay</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/koppen?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Jakob Skjerning</a> published a new project <a class="link" href="https://github.com/substancelab/styr?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">styr - Remote control your application without having to remember IP addresses or SSH commands</a></p><div class="image"><a class="image__link" href="https://mentalized.net/journal/2026/01/24/styr?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/073f4b42-4f83-45f4-9a2c-0abab7bdb6ba/image.png?t=1769357193"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://mentalized.net/journal/2026/01/24/styr?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://mentalized.net/journal/2026/01/24/styr</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/scottwater?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Scott Watermasysk</a> published a new gem <a class="link" href="https://github.com/scottwater/local_ci_plus?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">local_ci_plus</a> - &quot;Adds parallel execution, fail-fast, resume, and plain output to Rails&#39; local CI runner.&quot;</p><div class="image"><a class="image__link" href="https://github.com/scottwater/local_ci_plus?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/684c5511-2c94-4a14-8785-38d59d7aefc1/image.png?t=1769402424"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/scottwater/local_ci_plus?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://github.com/scottwater/local_ci_plus</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://bsky.app/profile/truffleruby.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">TruffleRuby</a> announced a new release for <a class="link" href="https://github.com/truffleruby/truffleruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">truffleruby</a></p><div class="image"><a class="image__link" href="https://github.com/truffleruby/truffleruby/releases/tag/graal-33.0.1?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4aa1d115-26a6-493a-9c63-bc114e27a1a4/image.png?t=1769199606"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/truffleruby/truffleruby/releases/tag/graal-33.0.1?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://github.com/truffleruby/truffleruby/releases/tag/graal-33.0.1</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://github.com/carlosantoniodasilva?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Carlos Antonio da Silva</a> announced <a class="link" href="https://github.com/heartcombo/devise/blob/main/CHANGELOG.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Devise v.5.0</a> which releases the RC from December: </p><div class="image"><a class="image__link" href="https://github.com/heartcombo/devise/blob/main/CHANGELOG.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165#500rc---2025-12-31" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/77741607-c01a-448f-96d1-7eecd194f1d5/image.png?t=1769356796"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/heartcombo/devise/blob/main/CHANGELOG.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165#500rc---2025-12-31" target="_blank" rel="noopener noreferrer nofollow">https://github.com/heartcombo/devise/blob/main/CHANGELOG.md#500rc---2025-12-31</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://bsky.app/profile/headius.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Charles Oliver Nutter</a> announced an update about <a class="link" href="https://github.com/jruby/jruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">jruby</a></p><div class="image"><a class="image__link" href="https://github.com/jruby/jruby/pull/9184?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/480c0ed5-f467-4375-a3ea-d52375da0541/image.png?t=1769201459"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/jruby/jruby/pull/9184?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://github.com/jruby/jruby/pull/9184</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://mensfeld.pl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Maciej Mensfeld</a> announced a new release of <a class="link" href="https://github.com/ruby-shoryuken/shoryuken?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">shoryuken</a></p><div class="image"><a class="image__link" href="https://github.com/ruby-shoryuken/shoryuken/releases/tag/v7.0.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/724cc580-600f-4e23-b618-e61bbbbab4dc/image.png?t=1769202230"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/ruby-shoryuken/shoryuken/releases/tag/v7.0.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://github.com/ruby-shoryuken/shoryuken/releases/tag/v7.0.0</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> announced a new release of <a class="link" href="https://github.com/puma/puma?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">puma</a> - “A Ruby/Rack web server built for parallelism“</p><div class="image"><a class="image__link" href="https://github.com/puma/puma/releases/tag/v7.2.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/17866228-14ff-4644-a4f3-d6bebe31fb58/image.png?t=1769204770"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/puma/puma/releases/tag/v7.2.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">https://github.com/puma/puma/releases/tag/v7.2.0</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/simonw?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Simon Willison</a> shared how to use Claude Code on IPhone with GitHub Pages</p><div class="image"><a class="image__link" href="https://x.com/simonw/status/2014395196256223663?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/acff3c1a-d2ce-465e-958f-c69b3ddc3b66/image.png?t=1769207126"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/simonw/status/2014395196256223663?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@simonw</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://x.com/kieranklaassen?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Kieran Klaassen</a> shared <a class="link" href="https://gist.github.com/kieranklaassen/d2b35569be2c7f1412c64861a219d51f?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Claude Code Multi-Agent Orchestration System</a></p><div class="image"><a class="image__link" href="https://x.com/kieranklaassen/status/2014830266515382693?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5ec7dafc-8925-4e31-b15c-a310ca0ee339/image.png?t=1769355625"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kieranklaassen/status/2014830266515382693?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">@kieranklaassen</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new edition → <a class="link" href="https://rubyweekly.com/issues/784?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">784 - Rust&#39;s Ratatui comes to Ruby for building great TUIs</a></p><p class="paragraph" style="text-align:left;">🗞 This Week in Rails published a new edition → <a class="link" href="https://rubyonrails.org/2026/1/23/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Squish as fast as you can</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 Kieran Klaassen published a new podcast episode → <a class="link" href="https://x.com/i/broadcasts/1ZkKzZbVjkWKv?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">AI talk with Avi, Nate and Kieran</a></p><p class="paragraph" style="text-align:left;">🎧️ Coder Radio published a new podcast episode → <a class="link" href="https://coder.show/639?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">RubyLLM with Carmine Paolino</a></p><p class="paragraph" style="text-align:left;">🎧 Indie Rails published a new podcast episode → <a class="link" href="https://www.indierails.com/72?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">John Athayde - Guiding Design in Software</a></p><p class="paragraph" style="text-align:left;">🎧️ reinteractive published a new podcast episode → <a class="link" href="https://www.youtube.com/watch?v=ZgoCBC---iU&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Kinsey Durham Grace: Talking to a GitHub Copilot Developer</a></p><p class="paragraph" style="text-align:left;">🎧️ The Bike Shed published a new podcast episode → <a class="link" href="https://feed.thoughtbot.com/link/24077/17258551/the-bike-shed-ep-490-large-language-misadventure?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Bike Shed Ep 490: Large Language Misadventure</a></p><p class="paragraph" style="text-align:left;">🎧️ Rails Business published a new podcast episode → <a class="link" href="https://www.buzzsprout.com/2435951/episodes/18547312-striving-for-ideal-code?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Striving for Ideal Code</a></p><p class="paragraph" style="text-align:left;">🎧️ Remote Ruby published a new podcast episode → <a class="link" href="https://www.buzzsprout.com/2260490/episodes/18533221-tool-standardization?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Tool Standardization</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Deanin published a new video about <a class="link" href="https://www.youtube.com/watch?v=VRd8belO1zE&utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Absolute Beginners Guide to Ruby on Rails 8.1</a></p><p class="paragraph" style="text-align:left;">🎥 Evil Martians published a series of workshop videos → <a class="link" href="https://www.youtube.com/playlist?list=PLAgBW0XUpyOXnC3Y37y-MMTUHLIwudnhd&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">San Francisco Ruby Conference 2025</a></p><p class="paragraph" style="text-align:left;">🎥 Rhiannon Payne published a new video → <a class="link" href="https://www.youtube.com/live/ftPuag4Ei9w?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Vibe coding a Rails travel app: Modeling travel preferences & frequency</a></p><p class="paragraph" style="text-align:left;">🎥 Dean De Hart published a new video → <a class="link" href="https://www.youtube.com/watch?v=VRd8belO1zE&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Absolute Beginners Guide to Ruby on Rails 8.1</a></p><p class="paragraph" style="text-align:left;">🎥 Mike Mc Quaid published a new video → <a class="link" href="https://www.freecodecamp.org/news/the-most-important-skills-going-forward-with-cto-homebrew-maintainer-mike-mcquaid-podcast-204/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Most Important Skills Going Forward with CTO + Homebrew Maintainer Mike McQuaid [Podcast #204]</a></p><p class="paragraph" style="text-align:left;">🎥 <a class="link" href="https://twitter.com/evilmartians?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Evil Martians</a> published the talks from SF Ruby 2025: </p><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.youtube.com/playlist?list=PLAgBW0XUpyOUOs3E0QnDrJRIqCJCueq5F&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">San Francisco Ruby Conference 2025 - Main Stage</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.youtube.com/playlist?list=PLAgBW0XUpyOUg-uWfRM71wHVCp4J8UNYV&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">San Francisco Ruby Conference 2025 - Black Box Theatre stage</a></p></li></ul><p class="paragraph" style="text-align:left;">🎥 GoRails published a new article about <a class="link" href="https://gorails.com/episodes/valid-with-context?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">valid with Context</a></p><p class="paragraph" style="text-align:left;">🎥 Matt Diebolt published a new video about <a class="link" href="https://threadreaderapp.com/thread/2014785141034410437.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Short code walk through some of the account controllers from Fizzy</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Amol Joshi published a new article about <a class="link" href="https://blog.saeloun.com/2026/01/22/from-idea-to-launch-why-rails-remains-the-ultimate-mvp-framework-in-2026/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">From Idea to Launch: Why Rails Remains the Ultimate MVP Framework in 2026</a></p><p class="paragraph" style="text-align:left;">🆕 Jared Norman published a new article about <a class="link" href="https://ryanbigg.com/2026/01/beware-grpc-gem-and-ruby-40?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Beware grpc gem and Ruby 4.0</a></p><p class="paragraph" style="text-align:left;">🆕 Josef Šimánek published an article about <a class="link" href="https://rubyelders.com/writings/2026-01-ruby-box-reload.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby::Box: Rethinking Code Reloading with Isolated Namespaces</a></p><p class="paragraph" style="text-align:left;">🆕 Mary Lee published a new article about <a class="link" href="https://hashrocket.com/blog/posts/crafting-code-building-a-ruby-pattern-generator-for-a-crochet-circle?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Crafting Code: Building a Ruby Pattern Generator for a Crochet Circle</a></p><p class="paragraph" style="text-align:left;">🆕 Nemwel Boniface published a new article about <a class="link" href="https://dev.to/nemwelboniface/what-happens-when-a-user-deletes-their-account-a-guide-to-rails-activerecord-dependent-strategies-1279?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">What Happens When a User Deletes Their Account? A Guide to Rails ActiveRecord dependent: Strategies</a></p><p class="paragraph" style="text-align:left;">🆕 Joe Masilotti published a new article about <a class="link" href="https://newsletter.masilotti.com/p/hotwire-native-deep-dive-in-app-purchases?triedRedirect=true&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Hotwire Native deep dive: In-app purchases on iOS</a></p><p class="paragraph" style="text-align:left;">🆕 Ryan Bigg published a new article about <a class="link" href="https://ryanbigg.com/2026/01/beware-grpc-gem-and-ruby-40?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Beware grpc gem and Ruby 4.0</a></p><p class="paragraph" style="text-align:left;">🆕 Jose Blanco published a new article about <a class="link" href="https://feed.thoughtbot.com/link/24077/17258142/audit-using-thoughtbot-best-practices-with-claude-skills?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Code Audits in the Days of AI</a></p><p class="paragraph" style="text-align:left;">🆕 Patricio Mac Adden published a new article about <a class="link" href="https://sinaptia.dev/posts/ruby-llm-instrumentation-the-foundation-for-rubyllm-monitoring?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RubyLLM::Instrumentation: The foundation for RubyLLM monitoring</a></p><p class="paragraph" style="text-align:left;">🆕 Robert Hopman published a new article about <a class="link" href="https://roberthopman.com/how-to-upgrade-a-ruby-on-rails-application/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to upgrade a ruby on rails application</a></p><p class="paragraph" style="text-align:left;">🆕 Lyubomyr (Lou) Revechuk published a new article about <a class="link" href="https://echoglobal.tech/technologies/ruby/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Top 27 Ruby Developers and ROR Experts</a></p><p class="paragraph" style="text-align:left;">🆕 Dennis Martinez published a new article about <a class="link" href="https://dev-tester.com/leaving-heroku-which-provider-should-you-choose/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Leaving Heroku: Which Provider Should You Choose?</a></p><p class="paragraph" style="text-align:left;">🆕 Matheus Sales published a new article about <a class="link" href="https://feed.thoughtbot.com/link/24077/17261468/what-shoulda-matchers-is-actually-doing-for-you?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">What Shoulda Matchers Is Actually Doing For You</a></p><p class="paragraph" style="text-align:left;">🆕 Thomas von Deyen published a new article about <a class="link" href="https://blish.cloud/en/blog/in-rails-8-1-sqlite-column-order-differs-between-platforms?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">In Rails 8.1 SQLite column order differs between platforms</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">📝 Damien White published a new article about <a class="link" href="https://blogs.visoftinc.com/2018/03/19/riding-rails-part-03/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Riding Rails - Building a Web App (Part 03)</a></p><p class="paragraph" style="text-align:left;">📝 Mary Lee published a new article about <a class="link" href="https://hashrocket.com/blog/posts/crafting-code-building-a-ruby-pattern-generator-for-a-crochet-circle?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Crafting Code: Building a Ruby Pattern Generator for a Crochet Circle</a></p><p class="paragraph" style="text-align:left;">📝 Julio Lucero published a new article about <a class="link" href="https://www.fastruby.io/blog/getting-started-with-vite-on-rails.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-165" target="_blank" rel="noopener noreferrer nofollow">Getting Started with Vite on Rails</a></p><p class="paragraph" style="text-align:left;">📝 Will Larry published a new article about <a class="link" href="https://thoughtbot.com/blog/a-javascript-developer-s-guide-to-rails-where-does-everything-come-from?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">A JavaScript developer&#39;s guide to Rails: Where Does Everything Come From?</a></p><p class="paragraph" style="text-align:left;">📝 Simon Chiu published a new article about <a class="link" href="https://codewithrails.com/blog/rails-smart-retry-strategies/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Building Smart Retry Strategies in Rails with Error-Aware Delays</a></p><p class="paragraph" style="text-align:left;">📝 Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/turbo-powered-optimistic-ui/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Building optimistic UI in Rails powered by Turbo</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">Sean Goedecke published a new article about <a class="link" href="https://seangoedecke.com/how-i-estimate-work/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How I estimate work as a staff software engineer</a></p><p class="paragraph" style="text-align:left;">Julik Tarkhanov published a new article about <a class="link" href="https://blog.julik.nl/2026/01/go-fast-and-go-alone?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">We have to re-learn to walk alone</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=d2a12a1a-3587-4393-a3da-b8e41a7ec914&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 164</title>
  <description>The one where Ruby 4.0.1 is released, TruffleRuby 33 is released, Programming Ruby 4 enters beta, Google Summer of Code invites for Ruby projecs and where we found Ruby is token efficient</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c0ffa354-85b6-4afb-9a17-b9d32ab94007/cover-page-edition-164.png" length="370905" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-164</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-164</guid>
  <pubDate>Mon, 19 Jan 2026 11:04:46 +0000</pubDate>
  <atom:published>2026-01-19T11:04:46Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#jobs" rel="noopener noreferrer nofollow">💼 Jobs</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad) </p><h3 class="heading" style="text-align:left;" id="vibe-code-with-your-voice">Vibe code with your voice</h3><div class="image"><a class="image__link" href="https://ref.wisprflow.ai/beehiiv-dev/?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&utm_term=dev_primary1&_bhiiv=opp_df30fb56-d49b-4aff-af74-5139645168cb_6e77d35f&bhcl_id=31844629-8434-4f91-a3e6-209803cd1a47_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ec544231-dfb6-48e2-a3bf-5f064ad0eb32/Newsletters_Image_1920x1080__8_.png?t=1767983375"/></a></div><p class="paragraph" style="text-align:left;">Vibe code by voice. <a class="link" href="https://ref.wisprflow.ai/beehiiv-dev/?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&utm_term=dev_primary1&_bhiiv=opp_df30fb56-d49b-4aff-af74-5139645168cb_6e77d35f&bhcl_id=31844629-8434-4f91-a3e6-209803cd1a47_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Wispr Flow</a> lets you dictate prompts, PRDs, bug reproductions, and code review notes directly in Cursor, Warp, or your editor of choice. Speak instructions and Flow will auto-tag file names, preserve variable names and inline identifiers, and format lists and steps for immediate pasting into GitHub, Jira, or Docs. That means less retyping, fewer copy and paste errors, and faster triage. Use voice to dictate prompts and directions inside Cursor or Warp and get developer-ready text with file name recognition and variable recognition built in. For deeper context and examples, see our Vibe Coding article on <a class="link" href="https://ref.wisprflow.ai/beehiiv-dev/?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&utm_term=dev_primary1&_bhiiv=opp_df30fb56-d49b-4aff-af74-5139645168cb_6e77d35f&bhcl_id=31844629-8434-4f91-a3e6-209803cd1a47_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">wisprflow.ai</a>. Try Wispr Flow for engineers.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://ref.wisprflow.ai/beehiiv-dev/?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&utm_term=dev_primary1&_bhiiv=opp_df30fb56-d49b-4aff-af74-5139645168cb_6e77d35f&bhcl_id=31844629-8434-4f91-a3e6-209803cd1a47_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Try Wispr Flow</a></p><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/TruffleRuby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Truffle Ruby</a> launched their new website with a new release → <a class="link" href="https://truffleruby.dev/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">truffleruby.dev</a></p><div class="image"><a class="image__link" href="https://truffleruby.dev/blog/truffleruby-33-is-released?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b78c7d5d-555c-4922-97a6-4d518a6f786f/image.png?t=1768659017"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://truffleruby.dev/blog/truffleruby-33-is-released?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">https://truffleruby.dev/blog/truffleruby-33-is-released</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 Noel Rappin and Dave Thomas announced the beta version of <a class="link" href="https://pragprog.com/titles/ruby6/programming-ruby-4-6th-edition/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Programming Ruby 4 (6th edition)</a></p><div class="image"><a class="image__link" href="https://pragprog.com/titles/ruby6/programming-ruby-4-6th-edition/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/49d1e96a-b5d8-433a-b87e-f97a0a24c3d1/image.png?t=1768765081"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://pragprog.com/titles/ruby6/programming-ruby-4-6th-edition/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">https://pragprog.com/titles/ruby6/programming-ruby-4-6th-edition/</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/zoraslapen?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Saroj Zoras</a> invited the Ruby community to <a class="link" href="https://github.com/rubygsoc/rubygsoc/wiki/Ideas-List-(2026)?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ideas List (2026) · rubygsoc/rubygsoc</a></p><div class="image"><a class="image__link" href="https://x.com/zoraslapen/status/2012919552045158415?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/56d7da1c-e64c-42ef-aa30-536906f8af35/image.png?t=1768809837"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/zoraslapen/status/2012919552045158415?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@zoraslapen</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://x.com/BalkanRuby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Balkan Ruby</a> announced CFP for <a class="link" href="https://balkanruby.com/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Balkan Ruby 2026 – May 15-16, 2026 in Sofia, Bulgaria</a></p><div class="image"><a class="image__link" href="https://x.com/BalkanRuby/status/2011777999595610297?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1347837b-9c9b-403b-b4c0-e4fa13dfe438/image.png?t=1768809223"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/BalkanRuby/status/2011777999595610297?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@BalkanRuby</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/visualitypl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Visuality</a> announced Ruby Community Conference 2026. Grab your ticket <a class="link" href="https://luma.com/RubyCommunityConference2026?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">from here</a></p><div class="image"><a class="image__link" href="https://x.com/visualitypl/status/2011391723914637585?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f08dc95c-b5f4-4495-a4b6-05c03888a72f/image.png?t=1768659315"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/visualitypl/status/2011391723914637585?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@visualitypl</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/rubyconf?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Ruby Conf</a> is looking for volunteers. If you’re interested, apply here → <a class="link" href="https://docs.google.com/forms/d/e/1FAIpQLSeNzOxWPT9a_le_DXwVBqn8Xg4IeMMAP4nHjuwfgFWIwsWrdg/viewform?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Volunteer Opportunity: Get involved with the Pitch Competition</a></p><div class="image"><a class="image__link" href="https://x.com/rubyconf/status/2011559050316558495?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5c693252-5453-4b0d-8367-332ba5d44d39/image.png?t=1768659438"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rubyconf/status/2011559050316558495?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@rubyconf</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/pragdave?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Dave Thomas</a> will attend a live stream podcast, on February 3rd → <a class="link" href="https://www.youtube.com/live/_t8PRgIYPgk?si=uwba_MBUK2ohjoFb&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">YouTube link for the event</a></p><div class="image"><a class="image__link" href="https://x.com/pragdave/status/2011965541951414757?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fcf42bb3-a02e-4b19-9905-51755281e75e/image.png?t=1768659644"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/pragdave/status/2011965541951414757?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@pragdave</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://bsky.app/profile/k0kubun.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Takashi Kokubun</a> announced a new release of Ruby → <a class="link" href="https://www.ruby-lang.org/en/news/2026/01/13/ruby-4-0-1-released/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">4.0.1</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/k0kubun.com/post/3mcbqbdexwc2n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2aed831a-5007-4ad6-9e29-ebe59cf69eb1/image.png?t=1768654092"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/k0kubun.com/post/3mcbqbdexwc2n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://k0kubun.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">k0kubun.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉️ <a class="link" href="https://twitter.com/hsbt?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Hiroshi Shibata</a> announced a new Ruby version → <a class="link" href="https://www.ruby-lang.org/en/news/2026/01/14/ruby-3-2-10-released/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Ruby 3.2.10</a></p><div class="image"><a class="image__link" href="https://x.com/hsbt/status/2011260710161149976?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d6748567-cd84-4dde-af59-e26c568b132b/image.png?t=1768656006"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/hsbt/status/2011260710161149976?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@hsbt</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉️ <a class="link" href="https://bsky.app/profile/truffleruby.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">TruffleRuby</a> announced <a class="link" href="https://truffleruby.dev/blog/truffleruby-33-is-released?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">TruffleRuby 33 is Released</a> </p><div class="image"><a class="image__link" href="https://bsky.app/profile/truffleruby.dev/post/3mcdfxcenl22j?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/242bad71-f5bd-4e23-99c2-3af5cfac29ec/image.png?t=1768755687"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/truffleruby.dev/post/3mcdfxcenl22j?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://truffleruby.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">truffleruby.dev</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://twitter.com/nirvdrum?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Kevin Menard</a> added</p><div class="image"><a class="image__link" href="https://x.com/nirvdrum/status/2011179289551794274?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d786c072-8e37-45a4-a315-6301e34bf8d1/image.png?t=1768655804"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nirvdrum/status/2011179289551794274?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@nirvdrum</a></p></span></div></div><p class="paragraph" style="text-align:left;">If you are interested in Truffle Ruby see more about it <a class="link" href="https://github.com/truffleruby/truffleruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164#current-status" target="_blank" rel="noopener noreferrer nofollow">here</a> and you can follow the Ruby 3.4 support effort at <a class="link" href="https://github.com/truffleruby/truffleruby/issues/3883?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Ruby 3.4 Support issue</a>:</p><div class="image"><a class="image__link" href="https://github.com/truffleruby/truffleruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164#current-status" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bbdd076d-73d6-4c03-98be-72776ba96d21/image.png?t=1768755894"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/truffleruby/truffleruby?tab=readme-ov-file&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164#current-status" target="_blank" rel="noopener noreferrer nofollow">https://github.com/truffleruby/truffleruby#current-status</a></p></span></div></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(34, 34, 34);font-family:Helvetica, Arial, sans-serif;font-size:18px;">👉 Ben Sheldon </span>published a new article about <a class="link" href="https://island94.org/2026/01/goodjob-solid-queue-sidekiq-active-job-in-2026?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">GoodJob, Solid Queue, Sidekiq, Active Job, in 2026</a></p><div class="image"><a class="image__link" href="https://island94.org/2026/01/goodjob-solid-queue-sidekiq-active-job-in-2026?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ee64c454-24f8-4b75-bcf6-c0b68dac99ea/image.png?t=1768814334"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://island94.org/2026/01/goodjob-solid-queue-sidekiq-active-job-in-2026?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">GoodJob, Solid Queue, Sidekiq, Active Job, in 2026</a></p></span></div></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(34, 34, 34);font-family:Helvetica, Arial, sans-serif;font-size:18px;">👉 </span>Jacek Galanciak published a new article about <a class="link" href="https://razorjack.net/implementing-dsl-in-ruby-rspec/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">An RSpec-like test DSL in Ruby, from scratch</a></p><div class="image"><a class="image__link" href="https://razorjack.net/implementing-dsl-in-ruby-rspec/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ae874e5d-385c-4758-b879-c3495539ad3b/image.png?t=1768814481"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://razorjack.net/implementing-dsl-in-ruby-rspec/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">An RSpec-like test DSL in Ruby, from scratch</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="a-inative-crm">AI-native CRM</h3><div class="image"><a class="image__link" href="https://attio.com?utm_source=beehiiv&utm_medium=newsletter_sponsorship&utm_campaign=beehiiv-Q4Y25&utm_content={{publication_alphanumeric_id}}&_bhiiv=opp_3911df14-1b55-4427-b27d-ea18c2d85b65_f1be5357&bhcl_id=fb4fb693-3f56-4cb4-aad3-95a6fa57e4f7_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c6328168-b6fe-42b2-aadf-a510597502b1/beehiiv_2.png?t=1750705265"/></a></div><p class="paragraph" style="text-align:left;"><i>“When I first opened </i><i><a class="link" href="https://attio.com?utm_source=beehiiv&utm_medium=newsletter_sponsorship&utm_campaign=beehiiv-Q4Y25&utm_content={{publication_alphanumeric_id}}&_bhiiv=opp_3911df14-1b55-4427-b27d-ea18c2d85b65_f1be5357&bhcl_id=fb4fb693-3f56-4cb4-aad3-95a6fa57e4f7_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Attio</a></i><i>, I instantly got the feeling this was the next generation of CRM.”</i><br>— Margaret Shen, Head of GTM at Modal</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://attio.com?utm_source=beehiiv&utm_medium=newsletter_sponsorship&utm_campaign=beehiiv-Q4Y25&utm_content={{publication_alphanumeric_id}}&_bhiiv=opp_3911df14-1b55-4427-b27d-ea18c2d85b65_f1be5357&bhcl_id=fb4fb693-3f56-4cb4-aad3-95a6fa57e4f7_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Attio</a> is the AI-native CRM for modern teams. With automatic enrichment, call intelligence, AI agents, flexible workflows and more, Attio works for any business and only takes minutes to set up.</p><p class="paragraph" style="text-align:left;">Join industry leaders like Granola, Taskrabbit, Flatfile and more.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://attio.com?utm_source=beehiiv&utm_medium=newsletter_sponsorship&utm_campaign=beehiiv-Q4Y25&utm_content={{publication_alphanumeric_id}}&_bhiiv=opp_3911df14-1b55-4427-b27d-ea18c2d85b65_f1be5357&bhcl_id=fb4fb693-3f56-4cb4-aad3-95a6fa57e4f7_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">👉 Start for free today</a></p><hr class="content_break"><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/coorasse?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Alessandro Rodi</a> shared about a fix to server markdown to Claude: </p><div class="image"><a class="image__link" href="https://x.com/coorasse/status/2012464090778579304?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4f9b251b-06f5-4abc-861d-163fbcba820f/image.png?t=1768809799"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/coorasse/status/2012464090778579304?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@coorasse</a></p></span></div></div><p class="paragraph" style="text-align:left;">️️💻 <a class="link" href="https://tend.cash?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">James Kerr</a> shared what he learned about “<a class="link" href="https://api.rubyonrails.org/classes/ActionController/Redirecting.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164#method-i-redirect_back" target="_blank" rel="noopener noreferrer nofollow">redirect_back</a>“ (there is also redirect_back_or_to(fallback_location… )</p><div class="image"><a class="image__link" href="https://x.com/specialCaseDev/status/2011203820953756109?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9f5f72f4-8b92-4c5b-bc0d-74a23d70f5b8/image.png?t=1768655861"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/specialCaseDev/status/2011203820953756109?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@specialCaseDev</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/andrzejkrzywda?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Andrzej Krzywda</a> shared how you can use Time instead of DateTime</p><div class="image"><a class="image__link" href="https://x.com/andrzejkrzywda/status/2011801361608765488?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bfdf04bd-52dd-44ad-92f2-9c7d20cf6c43/image.png?t=1768656630"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/andrzejkrzywda/status/2011801361608765488?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@andrzejkrzywda</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/joemasilotti?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Joe Masilotti</a> shared how he handles plan tiers in PurchaseKit</p><div class="image"><a class="image__link" href="https://x.com/joemasilotti/status/2011881882989056168?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c8614ab3-b8da-4dec-b43b-785770bbac68/image.png?t=1768656718"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/joemasilotti/status/2011881882989056168?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@joemasilotti</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://boringrails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Matt Swanson</a> replied with</p><div class="image"><a class="image__link" href="https://x.com/_swanson/status/2011912496517435527?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/56970d3e-c43c-4ed6-b2cd-36f1d85528d8/image.png?t=1768656824"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_swanson/status/2011912496517435527?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@_swanson</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/jkostolansky?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Juraj Kostolanský</a> shared how to use the “protocol-url” gem</p><div class="image"><a class="image__link" href="https://x.com/jkostolansky/status/2012112881962414169?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e31fd5ef-3135-4926-b02f-582a4993bf09/image.png?t=1768657031"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jkostolansky/status/2012112881962414169?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@jkostolansky</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/joemasilotti?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Joe Masilotti</a> shared his approach to rolling custom Stripe-style IDs in Rails.</p><div class="image"><a class="image__link" href="https://x.com/joemasilotti/status/2012245721009828275?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2e9d6c13-0a2a-4b48-9548-e7613dd84eb9/image.png?t=1768657292"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/joemasilotti/status/2012245721009828275?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@joemasilotti</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/joemasilotti/status/2012245721009828275?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/aa4c7e5b-9d58-447b-ae82-3df4f28761e8/image.png?t=1768657305"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/joemasilotti/status/2012245721009828275?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@joemasilotti</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://bsky.app/profile/mackuba.eu?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Kuba Suder </a>🇵🇱🇺🇦 shared a Ruby method that looks like C</p><div class="image"><a class="image__link" href="https://bsky.app/profile/mackuba.eu/post/3mco54pzgdk2e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fd0d2c25-6893-4325-9158-3ac6dcbd96c3/image.png?t=1768752182"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/mackuba.eu/post/3mco54pzgdk2e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://mackuba.eu?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">mackuba.eu</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐️ <a class="link" href="https://twitter.com/jeremysmithco?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Jeremy Smith</a> shared about query caching is now enabled by default in Rails edge</p><div class="image"><a class="image__link" href="https://x.com/jeremysmithco/status/2011123683784376637?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/995432c3-8654-486a-8a0e-cd46ac200fe8/image.png?t=1768655504"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jeremysmithco/status/2011123683784376637?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@jeremysmithco</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://x.com/x_mezbah?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Mezbah Alam</a> shared a tip about debugging P95 spikes in Puma</p><div class="image"><a class="image__link" href="https://x.com/x_mezbah/status/2012047235459281367?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1b964177-a05a-4b8e-9419-688138fe44ed/image.png?t=1768656884"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/x_mezbah/status/2012047235459281367?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@x_mezbah</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://bsky.app/profile/mackuba.eu?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Kuba Suder </a>🇵🇱🇺🇦 shared about an alternative for Time.parse</p><div class="image"><a class="image__link" href="https://bsky.app/profile/mackuba.eu/post/3mclecvu3ps2j?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0a2c0c67-9a87-4d9b-9705-85d61de52545/image.png?t=1768752110"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/mackuba.eu/post/3mclecvu3ps2j?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://mackuba.eu?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">mackuba.eu</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/robbyrussell?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Robby Russell</a> shared about creating simple Ruby scripts: </p><div class="image"><a class="image__link" href="https://x.com/robbyrussell/status/2010788795210481893?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/848bba38-f1a4-416f-8a8d-8c58aef4e83e/image.png?t=1768808498"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/robbyrussell/status/2010788795210481893?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@robbyrussell</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/inazarova?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Irina Nazarova</a> started some interviews with founders who chose Ruby for their tech stack</p><div class="image"><a class="image__link" href="https://x.com/inazarova/status/2011310128444948634?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7427f07e-1f7a-4325-b69f-2fea5abbc570/image.png?t=1768656106"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/inazarova/status/2011310128444948634?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@inazarova</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://bsky.app/profile/nateberkopec.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared his take on the claims about the decline of Ruby</p><div class="image"><a class="image__link" href="https://bsky.app/profile/nateberkopec.bsky.social/post/3mcdjcllhwc2d?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ba2506cf-c536-4d71-8092-0ffc331970c9/image.png?t=1768654191"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/nateberkopec.bsky.social/post/3mcdjcllhwc2d?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://nateberkopec.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">nateberkopec.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">️❤️ <a class="link" href="https://allaboutcoding.ghinda.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Lucian Ghinda</a> shared <a class="link" href="https://martinalderson.com/posts/which-programming-languages-are-most-token-efficient/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Which programming languages are most token-efficient?</a></p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/25742340-7b2b-4c18-8737-bd64c61c6ece/image.png?t=1768809111"/></div><h2 class="heading" style="text-align:left;" id="jobs">💼 Jobs</h2><p class="paragraph" style="text-align:left;">This is a new section curated by Raul from <a class="link" href="https://calmcompanies.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">CalmCompanies.club</a> </p><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fapple.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Apple</a> </p><ul><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Sr. Ruby on Rails Engineer - ASE ($139,500 - $258,100) - Seattle, Washington, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fen-us%2Fdetails%2F200636171-3337%2Fsr-ruby-on-rails-engineer-ase%3Fteam%3DSFTWR&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Sr. Ruby on Rails Engineer, ASE ($181,100 - $318,400) - San Francisco, California, United States - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjobs.apple.com%2Fen-us%2Fdetails%2F200636173-3577%2Fsr-ruby-on-rails-engineer-ase%3Fteam%3DSFTWR&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Better Stack</a></p><ul><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">/^Full-?stack Engineer$/i ($60K - $300K/year + equity) - Remote (NAMER) or On-site (Prague, Czech Republic) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbetterstack.com%2Fcareers&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fbuildkite.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">BuildKite</a></p><ul><li><p class="paragraph" style="text-align:left;">Backend</p><ul><li><p class="paragraph" style="text-align:left;">Senior Engineer (Pipelines) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5031519008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li><li><p class="paragraph" style="text-align:left;">Senior Engineer (Test Engine) (Salary not specified) - Australia, New Zealand - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fjob-boards.greenhouse.io%2Fbuildkite%2Fjobs%2F5021558008&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Foncactus.com%2F&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Cactus</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Call with Maya, our AI assistant - (415) 360-3350. Write us why you are interested at <a class="link" href="mailto:join@oncactus.com" target="_blank" rel="noopener noreferrer nofollow">join@oncactus.com</a>. Resumes are great but we’d love to see that you know how to write and can communicate effectively. Don&#39;t go overboard, under 500 words is more than enough. Call with CTO founder - assess background and technical alignment. Onsite Interview to meet the team, including our CEO Ajith - (you get to know the company and we get to know you). Two-week paid work trial.</p></li><li><p class="paragraph" style="text-align:left;">Full Stack</p><ul><li><p class="paragraph" style="text-align:left;">Senior Ruby on Rails + AI Engineer ($120K - $150K) - San Mateo, CA, US - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=workoncactus.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=https%3A%2F%2Fevilmartians.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Evil Martians</a></p><ul><li><p class="paragraph" style="text-align:left;">‼️ Application instructions: Don’t send us a standard CV. Send us an email to <a class="link" href="mailto:obey-backend@evilmartians.com" target="_blank" rel="noopener noreferrer nofollow">obey-backend@evilmartians.com</a> with your full name as the email subject. The email must be in Russian. In your email: Your story. Tell us about your experience, interests, your previous projects, and your role (what did you do or achieve). Code showcase. As a starting point, we need to see some sample code. You can send us links to your GitHub projects or Pull Requests. You can also create (secret) GitHub Gists to send us code samples from your closed source projects: something that solves a non-obvious, advanced task, or examples of beautiful code. Ideally, you would also describe what the code does, include tests, and a general description of the feature or the problem relevant to the code. Location & relocation. Mention your current location and if you’re open to relocation. We do not hire in Russia.</p></li><li><p class="paragraph" style="text-align:left;">Backend</p><ul><li><p class="paragraph" style="text-align:left;">Ruby Backend Engineer ($65K – $110K gross annual salary) - Remote (minimum of 3 hours daily overlap with the Pacific Timezone; relocation to Portugal possible) - <a class="link" href="https://rubyjobs.sunergos.ro/redirect?to=mailto%3Aobey-backend%40evilmartians.com&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Apply</a></p></li></ul></li></ul></li></ul><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://x.com/Inoue_0852?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Hiroshi Inoue</a> announced a new gem → <a class="link" href="https://github.com/inoue-0852/RubyPyMill-OSS?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">RubyPyMill-OSS</a> - “Running Notebooks the Ruby Way — RubyPyMill and the Art of PoC Automation for OSS“</p><div class="image"><a class="image__link" href="https://github.com/inoue-0852/RubyPyMill-OSS?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2a2f87b8-b615-4d68-9102-a472ccbb4e5f/image.png?t=1768657676"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/inoue-0852/RubyPyMill-OSS?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">https://github.com/inoue-0852/RubyPyMill-OSS</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Patricio Mac Adden announced a new gem → <a class="link" href="https://github.com/sinaptia/ruby_llm-monitoring?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">ruby_llm-monitoring</a> - “Monitor your LLM usage within your Rails application.“. Read also <a class="link" href="https://sinaptia.dev/posts/monitoring-llm-usage-in-rails-with-rubyllm-monitoring?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">the article about it</a> </p><div class="image"><a class="image__link" href="https://github.com/sinaptia/ruby_llm-monitoring?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/23ce884e-133d-4f66-a324-745319a6df52/image.png?t=1768658561"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/sinaptia/ruby_llm-monitoring?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">https://github.com/sinaptia/ruby_llm-monitoring</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://x.com/stokry_45?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Stokry</a> made a new tool → <a class="link" href="https://github.com/stokry/vectra?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">vectra</a> - “Vectra is a unified Ruby client for vector databases. Write once, switch providers seamlessly.“</p><div class="image"><a class="image__link" href="https://github.com/stokry/vectra?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/eaecd703-801a-42e7-9b1e-9720ae00fa18/image.png?t=1768658836"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/stokry/vectra?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">https://github.com/stokry/vectra</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://twitter.com/_st0012?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Stan Lo</a> announced <a class="link" href="https://github.com/st0012/ruby-skills?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">ruby-skills</a> - “Claude Code plugins for Ruby development.“</p><div class="image"><a class="image__link" href="https://x.com/_st0012/status/2012557803282370770?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9a3f0fde-2dbf-46b4-b75f-666153c608a5/image.png?t=1768752031"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_st0012/status/2012557803282370770?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@_st0012</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://bsky.app/profile/galtzo.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Peter Boling</a> announced a new utility → <a class="link" href="https://github.com/appraisal-rb/setup-ruby-flash?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">setup-ruby-flash</a> - “GHA: ⚡️Fast Setup of Ruby & Gems via rv & ore (alternative to setup-ruby)”</p><div class="image"><a class="image__link" href="https://github.com/appraisal-rb/setup-ruby-flash?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/feef759b-12ac-469b-adc0-8dbc0c97681b/image.png?t=1768753086"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/appraisal-rb/setup-ruby-flash?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">https://github.com/appraisal-rb/setup-ruby-flash</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Maciej Mensfeld published a new project <a class="link" href="https://mensfeld.pl/2026/01/claude-on-incus-all-the-autonomy-securely/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Claude on Incus – All the autonomy, securely</a></p><div class="image"><a class="image__link" href="https://mensfeld.pl/2026/01/claude-on-incus-all-the-autonomy-securely/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4de5c2e0-52cc-4cd6-9b2a-229ecfeb96e2/image.png?t=1768764255"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://mensfeld.pl/2026/01/claude-on-incus-all-the-autonomy-securely/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://mensfeld.pl/2026/01/claude-on-incus-all-the-autonomy-securely</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/julik?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Julik Tarkhanov</a> published a new gem <a class="link" href="https://github.com/julik/geneva_drive?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">geneva_drive</a> - &quot;GenevaDrive provides a clean DSL for defining multi-step workflows that execute asynchronously, with strong guarantees around idempotency, concurrency control, and state management.&quot;</p><div class="image"><a class="image__link" href="https://github.com/julik/geneva_drive?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0ed27231-2e3f-421d-b5cd-1885935d9a6a/image.png?t=1768766069"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/julik/geneva_drive?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">https://github.com/julik/geneva_drive</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Adham EL-Deeb published a new project <a class="link" href="https://github.com/adham90/ruby_llm-agents?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">ruby_llm-agents: A Rails agent framework for RubyLLM — define AI agents with prompts, schemas, caching, logging, cost tracking, and a built-in dashboard for monitoring LLM usage in production.</a></p><div class="image"><a class="image__link" href="https://github.com/adham90/ruby_llm-agents?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8f7f8b1f-d560-4e7a-8c31-ad7ae5c68f82/image.png?t=1768810748"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/adham90/ruby_llm-agents?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">https://github.com/adham90/ruby_llm-agents</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 Ruby Gems published a new version of. RubyGems <a class="link" href="https://blog.rubygems.org/2026/01/15/4.0.4-released.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">4.0.4 Released</a></p><div class="image"><a class="image__link" href="https://blog.rubygems.org/2026/01/15/4.0.4-released.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d89f88c8-edbc-4b81-b5de-6321fe42c306/image.png?t=1768764405"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://blog.rubygems.org/2026/01/15/4.0.4-released.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">https://blog.rubygems.org/2026/01/15/4.0.4-released.html</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://bsky.app/profile/vitallium.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Vitaly Slobodin</a> announced an update for <a class="link" href="https://github.com/zed-extensions?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">zed-extensions</a>/<a class="link" href="https://github.com/zed-extensions/ruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">ruby</a></p><div class="image"><a class="image__link" href="https://github.com/zed-extensions/ruby/releases/tag/v0.16.4?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2aa339f2-4e34-40de-acf9-35edb9724862/image.png?t=1768654407"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/zed-extensions/ruby/releases/tag/v0.16.4?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">https://github.com/zed-extensions/ruby/releases/tag/v0.16.4</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/jeremyevans0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Jeremy Evans</a> announced a new version of <a class="link" href="https://github.com/jeremyevans/roda?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">roda</a> - “Routing Tree Web Toolkit“</p><div class="image"><a class="image__link" href="https://x.com/jeremyevans0/status/2010775122987397286?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/27e45de5-fad9-4797-a070-f33c63da8a00/image.png?t=1768657726"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jeremyevans0/status/2010775122987397286?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@jeremyevans0</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://paolino.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Carmine Paolino</a> announced a new version of <a class="link" href="https://github.com/crmne/ruby_llm?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">ruby_llm</a> - “One beautiful Ruby API for OpenAI, Anthropic, Gemini, Bedrock, OpenRouter, DeepSeek, Ollama, VertexAI, Perplexity, Mistral, xAI, GPUStack & OpenAI compatible APIs. Chat, Vision, Audio, PDF, Images, Embeddings, Tools, Streaming & Rails integration.“</p><div class="image"><a class="image__link" href="https://github.com/crmne/ruby_llm/releases/tag/1.10.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1f0441be-308b-476d-b8a2-b0226b1e6209/image.png?t=1768657881"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/crmne/ruby_llm/releases/tag/1.10.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">https://github.com/crmne/ruby_llm/releases/tag/1.10.0</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/palkan_tula?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Vladimir Dementyev</a> announced a new version of <a class="link" href="https://github.com/ruby-next/ruby-next?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">ruby-next</a> - “Ruby Next makes modern Ruby code run in older versions and alternative implementations“</p><div class="image"><a class="image__link" href="https://github.com/ruby-next/ruby-next/releases/tag/v1.2.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ec670965-f0b5-43d4-92f1-29f60a2f9e01/image.png?t=1768658085"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/ruby-next/ruby-next/releases/tag/v1.2.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">https://github.com/ruby-next/ruby-next/releases/tag/v1.2.0</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://jpcamara.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Jp Camara</a> brought a new improvement to Rails. Check his PR for more details → <a class="link" href="https://github.com/rails/rails/pull/56601?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Allow retry_on wait procs to accept error as a second argument</a></p><div class="image"><a class="image__link" href="https://x.com/jpcamara/status/2011197486174781848?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4588344a-b085-44c7-8c24-40336f961a4c/image.png?t=1768658274"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jpcamara/status/2011197486174781848?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@jpcamara</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://bsky.app/profile/jakob.codefrwd.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Jakob</a> made a post about developer anxiety</p><div class="image"><a class="image__link" href="https://bsky.app/profile/jakob.codefrwd.com/post/3mc7oqqq6q225?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fe4b4b9d-4963-41ea-b18f-a8a304aa96e5/image.png?t=1768655132"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/jakob.codefrwd.com/post/3mc7oqqq6q225?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://jakob.codefrwd.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">jakob.codefrwd.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://thadeu.org/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Thadeu</a> shared a tip about Webkit from Evil Martian’s article <a class="link" href="https://evilmartians.com/chronicles/how-to-detect-safari-and-ios-versions-with-ease?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to detect Safari and iOS versions with ease in 2026—Martian Chronicles, Evil Martians’ team blog</a></p><div class="image"><a class="image__link" href="https://x.com/iamthadeu/status/2012221023173718152?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f12311cb-2940-4fe1-898f-f444ddff7ce0/image.png?t=1768809559"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/iamthadeu/status/2012221023173718152?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@iamthadeu</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Stephen Margheim</a> shared about how to write CSS classes integrated with Tailwind v4. This is a thread, <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3mcb2iuiuvi22?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">you can read it fully on Bluesky</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3mcb2iuiuvi22?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/df5cc635-b1b4-4a67-8218-6350849d9cab/image.png?t=1768655229"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3mcb2iuiuvi22?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">fractaledmind.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared a new takeaway of open-source software</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/2011324122119487910?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/374b36b1-5121-4cfa-8263-f5921eb8f1da/image.png?t=1768660222"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/2011324122119487910?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://mensfeld.pl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Maciej Mensfeld</a> created <a class="link" href="https://github.com/mensfeld/claude-on-incus?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">claude-on-incus</a> - “Run coding agents in isolated Incus containers with session persistence, workspace isolation, and multi-slot support.“</p><div class="image"><a class="image__link" href="https://x.com/maciejmensfeld/status/2011492495440412900?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f4811cf2-cf30-44fd-92cf-2b89470fba95/image.png?t=1768660497"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/maciejmensfeld/status/2011492495440412900?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@maciejmensfeld</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://melvynx.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Melvyn • Builder</a> shared a Claude Code tip</p><div class="image"><a class="image__link" href="https://x.com/melvynxdev/status/2011803318709076000?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fe307c4b-7977-4902-8329-87c330b0e60b/image.png?t=1768660623"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/melvynxdev/status/2011803318709076000?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@melvynxdev</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/evilmartians?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Evil Martians</a> highlighted why developers are still essential in the vibe coding and code gen era</p><div class="image"><a class="image__link" href="https://x.com/evilmartians/status/2012200736608686548?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ddcbdab0-6f46-41f8-9f6b-c6eccadbfdfa/image.png?t=1768660679"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/evilmartians/status/2012200736608686548?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@evilmartians</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/rockatanescu?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Andrei Maxim</a> shared how he uses LLMs for exploratory &quot;spikes&quot;</p><div class="image"><a class="image__link" href="https://x.com/rockatanescu/status/2012432523830210628?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1f468f7b-de51-4e8a-a28b-7dd76f3832a9/image.png?t=1768660905"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rockatanescu/status/2012432523830210628?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">@rockatanescu</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 Ruby on Rails published a new edition → <a class="link" href="http://rubyonrails.org/2026/1/16/this-week-in-rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Error-aware retry_on, PostgreSQL type mappings, and more!</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new edition → <a class="link" href="https://rubyweekly.com/issues/783?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">TruffleRuby 33, Ruby 4.0.1, and Ruby 3.2.10</a></p><p class="paragraph" style="text-align:left;">🗞 Hotwire Weekly published a new edition → <a class="link" href="https://www.hotwireweekly.com/archive/hotwire-weekly-happy-2026/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Hotwire Weekly - Happy 2026</a></p><p class="paragraph" style="text-align:left;">🗞 Static Ruby Monthly published a new edition → <a class="link" href="https://newsletters.eremin.eu/posts/static-ruby-monthly-issue-12-january-2026?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Static Ruby Monthly | Issue 12, January 2026</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 Code And The Coding Coders Who Code It published a new podcast episode → <a class="link" href="https://podcast.drbragg.dev/episodes/episode-60-jeremy-smith/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Episode 60 - Jeremy Smith</a></p><p class="paragraph" style="text-align:left;">🎧 Amp published a new podcast episode → <a class="link" href="https://www.youtube.com/watch?v=uWqno4HM4xA&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">DHH: Why AI Isn&#39;t Writing My Code (Yet)</a></p><p class="paragraph" style="text-align:left;">🎧 The Bike Shed published a new podcast episode → <a class="link" href="https://bikeshed.thoughtbot.com/489?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">489: What makes a codebase welcoming</a></p><p class="paragraph" style="text-align:left;">🎧 Remote Ruby published a new podcast episode → <a class="link" href="https://www.buzzsprout.com/2260490/episodes/18488780-tech-resolutions-and-tailwind-troubles?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Tech Resolutions and Tailwind Troubles</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Andrzej Krzywda published a new video → <a class="link" href="https://www.youtube.com/watch?v=-L6fjY3HlBI&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Arkency reviews Fizzy, part 1</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Ben Sheldon published a new article about <a class="link" href="https://island94.org/2026/01/goodjob-solid-queue-sidekiq-active-job-in-2026?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">GoodJob, Solid Queue, Sidekiq, Active Job, in 2026</a></p><p class="paragraph" style="text-align:left;">🆕 Victor Shepelev published a new article about <a class="link" href="https://zverok.space/blog/2026-01-18-upd.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">It is 2026; where were we?</a></p><p class="paragraph" style="text-align:left;">🆕 Andy Croll published a new article about <a class="link" href="https://andycroll.com/ruby/find-the-last-matching-element-with-rfind/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Find the Last Matching Element with rfind</a></p><p class="paragraph" style="text-align:left;">🆕 Will Larry published a new article about <a class="link" href="https://thoughtbot.com/blog/a-javascript-developer-s-guide-to-rails-series-introduction?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">A JavaScript Developer&#39;s Guide to Rails - Series Introduction</a></p><p class="paragraph" style="text-align:left;">🆕 Prasanth Chaduvula and Amol Joshi published a new article about <a class="link" href="https://blog.saeloun.com/2026/01/13/rails-add-except-on-option-for-validation-and-its-callbacks/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Rails 8.1 introduced except_on option for validations and callbacks</a></p><p class="paragraph" style="text-align:left;">🆕 Charlie Savage published an article about <a class="link" href="https://cfis.savagexi.com/2026/01/04/a-journey-from-pybind11-envy-to-wrapping-opencv/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">A Journey from Pybind11 Envy to Wrapping OpenCV</a></p><p class="paragraph" style="text-align:left;">🆕 Akshay Khot published a new article about <a class="link" href="https://www.writesoftwarewell.com/transform-images-with-activestorage-variants-rails/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-164" target="_blank" rel="noopener noreferrer nofollow">Understanding How Active Storage Variants Transform Images</a></p><p class="paragraph" style="text-align:left;">🆕 Jeffery Morhous published a new article about <a class="link" href="https://www.honeybadger.io/blog/ruby-4/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The ultimate guide to upgrading to Ruby 4.0</a></p><p class="paragraph" style="text-align:left;">🆕 Szymon Fiedler published a new article about <a class="link" href="https://blog.arkency.com/stop-using-datetime-in-2026-unless-you-work-for-unesco/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Stop using DateTime in 2026 (unless you work for UNESCO)</a></p><p class="paragraph" style="text-align:left;">🆕 Jacek Galanciak published a new article about <a class="link" href="https://razorjack.net/implementing-dsl-in-ruby-rspec/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">An RSpec-like test DSL in Ruby, from scratch</a></p><p class="paragraph" style="text-align:left;">🆕 Glauco Custódio published a new article about <a class="link" href="https://glaucocustodio.github.io/2026/01/15/a-neat-trick-for-splitting-strings/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">A Neat Trick for Splitting Strings</a></p><p class="paragraph" style="text-align:left;">🆕 Evgeny Zhdanov published a new article about <a class="link" href="https://zhisme.com/articles/ruby-io-buffering?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby IO buffering</a></p><p class="paragraph" style="text-align:left;">🆕 Matt Kelly published a new article about <b><a class="link" href="https://www.simplethread.com/redis-solidqueue/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">I Love You, Redis, But I’m Leaving You for SolidQueue</a></b></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">Josh Frankel published a new article about <a class="link" href="http://joshfrankel.me/blog/find-or-create-records-with-preset-attributes-using-create-with/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Find or Create Records with Preset Attributes using create_with</a></p><p class="paragraph" style="text-align:left;">Simon Chiu published a new article about <a class="link" href="https://codewithrails.com/blog/activestorage-deduplication/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Build a File Deduplication System with ActiveStorage</a></p><p class="paragraph" style="text-align:left;">Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/nested-forms-without-accepts-nested-attributes/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Nested forms without </a>accepts_nested_attributes_for<a class="link" href="https://railsdesigner.com/nested-forms-without-accepts-nested-attributes/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow"> in Rails</a></p><p class="paragraph" style="text-align:left;">ashish published a new article about <a class="link" href="https://www.railscarma.com/blog/rails-generate-model-beginners-guide-to-database-models/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">A Guide to The Rails G Model</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">Mohit Sindhwani published a new article about <a class="link" href="https://notepad.onghu.com/2026/opinion-the-upcoming-ai-coding-syndrome/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Opinion: The Upcoming AI Coding Syndrome</a></p><p class="paragraph" style="text-align:left;">Kevin Murphy published a new article about <a class="link" href="https://kevinjmurphy.com/posts/how-i-read-a-pr/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How I Read A Pull Request</a></p><p class="paragraph" style="text-align:left;">Daniela Baron published a new article about <a class="link" href="https://danielabaron.me/blog/what-ai-assisted-coding-feels-like-in-early-2026/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">What AI-Assisted Coding Feels Like in Early 2026</a></p><p class="paragraph" style="text-align:left;">Daniel Doubrovkine published an article about <a class="link" href="https://code.dblock.org/2026/01/15/serving-markdown-for-ai-agents.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Serving Markdown for AI Agents in Jekyll</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=4c410852-acb9-479c-9407-0fed27a5345d&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 163</title>
  <description>The first edition of 2026: Where we look at Ruby 4.0, mruby announced the major release this year v4.0, Rails launched 8.1.2 and two old (pre Ruby 1.0) and stable gems were updated</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/85382a53-369f-4ea1-8e32-ad96801e7d68/cover-page-edition-163.png" length="343242" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-163</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-163</guid>
  <pubDate>Mon, 12 Jan 2026 11:28:49 +0000</pubDate>
  <atom:published>2026-01-12T11:28:49Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;"><b>In partnership with</b></p><div class="image"><a class="image__link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3c6f9a95-fe23-449d-b20a-6ed4d03f6755/Asset_1_2x-8.png?t=1761973690"/></a><div class="image__source"><span class="image__source_text"><p>This edition is sponsored by <a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Undercover CI</a>, the Ruby coverage toolkit ready for the vibe coding era.</p></span></div></div><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad) <a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Unvercover CI</a> - Ruby Test Coverage ready for vibe coding era</p><div class="image"><a class="image__link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4100bc56-6204-4603-933b-e10661b4bba0/image.png?t=1768209309"/></a><div class="image__source"><span class="image__source_text"><p><a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">undercover-ci.com</a> - Ruby test coverage ready for the vibe coding era</p></span></div></div><p class="paragraph" style="text-align:left;"><b>Undercover CI for GitHub</b> finds untested code in your pull requests. Fill gaps that slip through percentage metrics. Ship confidently. Thrive in the vibe coding era.</p><p class="paragraph" style="text-align:left;"><b>Get started on </b><a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow"><b>undercover-ci.com</b></a> or check out the <b><a class="link" href="https://github.com/twitchy-tortoise/undercover-test/pull/57/checks?check_run_id=37501520147&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">demo pull request</a></b>. </p><div class="button" style="text-align:center;"><a target="_blank" rel="noopener nofollow noreferrer" class="button__link" style="" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163"><span class="button__text" style=""> Start with Undercover CI </span></a></div><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://marcoroth.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Marco Roth</a> launched <a class="link" href="https://charm-ruby.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">charm-ruby.dev</a> - elegant APIs and glamorous terminal experiences to Ruby developers</p><div class="image"><a class="image__link" href="https://charm-ruby.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1647e0ed-5e5d-4eee-baf9-a6da5cc30f01/image.png?t=1768191609"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://charm-ruby.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://charm-ruby.dev</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/palkan_tula?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Vladimir Dementyev</a> announced the second version of <a class="link" href="https://www.packtpub.com/en-us/product/layered-design-for-ruby-on-rails-applications-9781806114238?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Layered Design for Ruby on Rails Applications</a></p><div class="image"><a class="image__link" href="https://x.com/palkan_tula/status/2005883791290634580?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5c72d85a-d8bd-4269-96a5-db18ec4916ff/image.png?t=1768152242"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/palkan_tula/status/2005883791290634580?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@palkan_tula</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://aviflombaum.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Avi Flombaum</a> launched <a class="link" href="http://Railspress.org?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RailsPress - Blog Engine & Entity System for Rails 8</a></p><div class="image"><a class="image__link" href="https://x.com/aviflombaum/status/2007556663570784341?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2dff94e1-cf8e-4da7-8c1a-2656e561ecd6/image.png?t=1768050048"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/aviflombaum/status/2007556663570784341?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@aviflombaum</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/marckohlbrugge?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Marc Köhlbrugge</a> launched <a class="link" href="https://github.com/marckohlbrugge/rclown?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">rclown</a> - “Friendly web UI for backing up your object storage buckets“</p><div class="image"><a class="image__link" href="https://x.com/marckohlbrugge/status/2008220673420996976?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ebf38602-f4c9-4e05-8089-385d02dd3175/image.png?t=1768051074"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/marckohlbrugge/status/2008220673420996976?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@marckohlbrugge</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://github.com/geetfun?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Simon Chiu</a> launched <a class="link" href="https://checkend.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Checkend</a> - A clean dashboard for error tracking. Self-hosted, source available, forever free. License is O’Sassy at <a class="link" href="https://github.com/Checkend/checkend?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">checked</a></p><div class="image"><a class="image__link" href="https://checkend.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d8fe6757-93a2-4e68-94ae-b5c34fddac7e/image.png?t=1768129031"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://checkend.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://checkend.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/marckohlbrugge?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Marc Köhlbrugge</a> launched <a class="link" href="https://sessy.do/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Sessy - Email observability for AWS SES</a></p><div class="image"><a class="image__link" href="https://sessy.do?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6752caef-70e0-42b2-b8cc-71c01f0cb35e/image.png?t=1768147012"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://sessy.do?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://sessy.do</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://x.com/dbackeus?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">David Backeus</a> launched <a class="link" href="https://lovingruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">lovingruby.com</a> - 365 reasons to love Ruby: </p><div class="image"><a class="image__link" href="https://x.com/dbackeus/status/2006741193720573968?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8095f7d8-c87d-473d-a109-a643799be87f/image.png?t=1768205148"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dbackeus/status/2006741193720573968?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@dbackeus</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://bsky.app/profile/balticruby.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Baltic Ruby</a> extended its CFP for this year’s conference. If you’re interested, register right here → <a class="link" href="https://www.papercall.io/balticruby2026?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Baltic Ruby 2026</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/balticruby.bsky.social/post/3mbo7uh5n7w2p?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/319021f3-3194-4fc5-90f6-5d7ca66b6cb3/image.png?t=1768048204"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/balticruby.bsky.social/post/3mbo7uh5n7w2p?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://balticruby.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">balticruby.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://x.com/GregMolnar?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Greg Molnar</a> is organising a workshop about <a class="link" href="https://luma.com/jmlwepwq?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Security in the Age of AI</a>: </p><div class="image"><a class="image__link" href="https://luma.com/jmlwepwq?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/580a32b1-2e1c-4383-a402-a4b51fcdcecc/image.png?t=1768146616"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://luma.com/jmlwepwq?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://luma.com/jmlwepwq</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://bsky.app/profile/inazarova.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Irina Nazarova</a> announced the next SFRuby meetup</p><div class="image"><a class="image__link" href="https://bsky.app/profile/inazarova.bsky.social/post/3mbsjfxvp4k2q?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/754b32e2-b02a-4868-8a29-e7bf261a0f35/image.png?t=1768049530"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/inazarova.bsky.social/post/3mbsjfxvp4k2q?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://inazarova.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">inazarova.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://blog.schwad.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Nick Schwaderer</a> announced a new event → <a class="link" href="https://luma.com/yl6v0cy9?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Belfast RubyFest 2026</a></p><div class="image"><a class="image__link" href="https://x.com/schwad_rb/status/2008304019005956586?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/83a62330-e9c9-4d49-ab37-33c3839e45a5/image.png?t=1768053091"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/schwad_rb/status/2008304019005956586?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@schwad_rb</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/rubykaigi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Ruby Kaigi</a> announced one more week to send your CFP at <a class="link" href="https://cfp.rubykaigi.org/events/2026?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">CFPApp</a></p><div class="image"><a class="image__link" href="https://x.com/rubykaigi/status/2010289405807022369?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a21f3b49-6684-43e8-b8e8-3859e9a5fed2/image.png?t=1768145990"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rubykaigi/status/2010289405807022369?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@rubykaigi</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 Chetan Patil announced the <a class="link" href="http://Ruby Meetup January 2026" target="_blank" rel="noopener noreferrer nofollow">next Ruby Meetup in Munich</a> on 22nd January. BTW they are also looking for a second speaker: </p><div class="image"><a class="image__link" href="https://www.meetup.com/munich-rubyshift-ruby-user-group/events/312376792?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3767731a-d003-4039-b046-737388d709d5/image.png?t=1768146330"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.meetup.com/munich-rubyshift-ruby-user-group/events/312376792/?utm_medium=referral&utm_campaign=share-btn_savedevents_share_modal&utm_source=link&utm_version=v2" target="_blank" rel="noopener noreferrer nofollow">https://www.meetup.com/munich-rubyshift-ruby-user-group/events/312376792</a></p></span></div></div><p class="paragraph" style="text-align:left;">📆 <a class="link" href="https://www.linkedin.com/in/andycroll/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Andy Croll</a> announced the <a class="link" href="https://forms.reform.app/goodscary/brighton-ruby-2026-cfp/gci0d6?ga4_visitor_id=cae178ee-8a8e-4d7e-b8ab-cf1ab6619bf2&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">CFP for Brighton Ruby 2026</a> is open: </p><div class="image"><a class="image__link" href="https://www.linkedin.com/posts/andycroll_brighton-ruby-2026-activity-7416388495809847296-C6_z?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bbc3c396-e045-4a38-93c7-4b90d76a55d2/image.png?t=1768215923"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.linkedin.com/posts/andycroll_brighton-ruby-2026-activity-7416388495809847296-C6_z?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Andy Croll Linkedin</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><div class="section" style="background-color:#fff3de;margin:10.0px 10.0px 10.0px 10.0px;padding:10.0px 10.0px 10.0px 10.0px;"><p class="paragraph" style="text-align:left;">We were on a winter break when Ruby 4.0 was launched so there was no Short Ruby edition covering it. </p><p class="paragraph" style="text-align:left;">Still we gathered a series of resources about the 4.0 release at </p><div class="embed"><a class="embed__url" href="https://newsletter.shortruby.com/p/ruby-4-0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank"><div class="embed__content"><p class="embed__title"> Ruby 4.0 - curated list of resources </p><p class="embed__description"> Most important links to read about Ruby 4.0 changes </p><p class="embed__link"> newsletter.shortruby.com/p/ruby-4-0 </p></div><img class="embed__image embed__image--right" src="https://beehiiv-images-production.s3.amazonaws.com/uploads/asset/file/99a05b49-116c-446a-b03c-c3dff4c779b6/ruby40.png?t=1768151530"/></a></div></div><p class="paragraph" style="text-align:left;">👉️ <a class="link" href="https://twitter.com/yukihiro_matz?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Yukihiro Matz</a> announced that the next version of <a class="link" href="https://github.com/mruby/mruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">mruby - a lightweight implementation of the Ruby language </a>will be 4.0: </p><div class="image"><a class="image__link" href="https://x.com/yukihiro_matz/status/2009972683174490537?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b82e0ed5-cada-4e04-8f11-87addfca7443/image.png?t=1768146781"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/yukihiro_matz/status/2009972683174490537?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@yukihiro_matz</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉️ Rafael França announced a new version of <a class="link" href="https://github.com/rails/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Rails</a> version 8.1.2: </p><div class="image"><a class="image__link" href="https://github.com/rails/rails/releases/tag/v8.1.2?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/74f1d8ae-dfce-469e-86bd-60aff527864e/image.png?t=1768055095"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/rails/rails/releases/tag/v8.1.2?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://github.com/rails/rails/releases/tag/v8.1.2</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://bsky.app/profile/zverok.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Victor Shepelev </a> shared their amazing <a class="link" href="https://rubyreferences.github.io/rubychanges/4.0.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Ruby Reference about Ruby 4.0</a> </p><div class="image"><a class="image__link" href="https://bsky.app/profile/zverok.bsky.social/post/3mauwhirekc2c?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/75333067-e0d6-44dd-ac7a-740fc489b699/image.png?t=1768147109"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/zverok.bsky.social/post/3mauwhirekc2c?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://zverok.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">zverok.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Paweł Świątkowski published a new article about <a class="link" href="https://katafrakt.me/2026/01/04/mruby-cosmo-compilation/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Portable mruby binaries with Cosmopolitan</a></p><div class="image"><a class="image__link" href="https://katafrakt.me/2026/01/04/mruby-cosmo-compilation/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e06efe11-bf0f-49b4-b49f-c84eccea351f/image.png?t=1768214029"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://katafrakt.me/2026/01/04/mruby-cosmo-compilation/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Portable mruby binaries with Cosmopolitan</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Simon Chiu published a new article about <a class="link" href="https://sendbroadcast.net/blog/e2e-email-provider-testing?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Verifying e2e email sends in Rails using GitHub Actions & Cloudflare Workers</a></p><div class="image"><a class="image__link" href="https://sendbroadcast.net/blog/e2e-email-provider-testing?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9ba1977d-c0cd-4e9c-9595-69330de362e5/image.png?t=1768214157"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://sendbroadcast.net/blog/e2e-email-provider-testing?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Verifying e2e email sends in Rails using GitHub Actions & Cloudflare Workers</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Matheus Richard published a new article about <a class="link" href="https://blog.appsignal.com/2026/01/07/an-introduction-to-ruby-parsing-with-prism.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">An Introduction to Ruby Parsing with Prism</a></p><div class="image"><a class="image__link" href="https://blog.appsignal.com/2026/01/07/an-introduction-to-ruby-parsing-with-prism.html?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/33a6b108-acda-44ee-bea7-20a7fcb5d1da/image.png?t=1768214275"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://blog.appsignal.com/2026/01/07/an-introduction-to-ruby-parsing-with-prism.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">An Introduction to Ruby Parsing with Prism</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Jeff Morhous published a new article about <a class="link" href="https://www.honeybadger.io/blog/action-cable/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Exploring Rails Action Cable with Solid Cable</a></p><div class="image"><a class="image__link" href="https://www.honeybadger.io/blog/action-cable/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9977a2b0-5f68-416e-a32c-57a9016723e5/image.png?t=1768214349"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.honeybadger.io/blog/action-cable/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Exploring Rails Action Cable with Solid Cable</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><div class="section" style="background-color:transparent;border-color:#f70a56;border-radius:10px;border-style:dotted;border-width:1px;margin:20.0px 20.0px 20.0px 20.0px;padding:10.0px 10.0px 10.0px 10.0px;"><p class="paragraph" style="text-align:left;"><span style="background-color:#fff3de;"><i>(ad) </i></span></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);font-size:1.5rem;"><b><a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Undercover</a></b></span><span style="color:rgb(0, 0, 0);font-size:1.5rem;"> integrates with coding agents like Claude Code and your CI pipeline: shift left, wire up local test coverage checks for fast feedback, catch gaps directly in GitHub PRs to ensure consistency and ship confidently. </span><span style="color:rgb(0, 0, 0);font-size:1.5rem;"><b>Get </b></span><span style="color:rgb(0, 0, 0);font-size:1.5rem;"><b>started at </b></span><span style="font-size:1.5rem;"><span style="text-decoration:underline;"><a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow"><b>undercover-ci.com</b></a></span></span><span style="color:rgb(0, 0, 0);font-size:1.5rem;"><b>.</b></span></p></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">️</span>💻 ️<a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> shared a tip on how you can subscribe to transaction events for monitoring or instrumentation</p><div class="image"><a class="image__link" href="https://x.com/rails/status/2008202192084508880?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/469952f9-79b6-4397-b515-9583d9772d2d/image.png?t=1768050584"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rails/status/2008202192084508880?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@rails</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/Gathukumose?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Moses Gathuku</a> shared a tip about ActiveRecord::Migration#say_with_time</p><div class="image"><a class="image__link" href="https://x.com/Gathukumose/status/2009565815872303506?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4a137cc5-5181-4f9f-9305-8f0d8d6d09fb/image.png?t=1768054374"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/Gathukumose/status/2009565815872303506?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@Gathukumose</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://sarrietav.dev/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Sebastian Arrieta</a> shared <a class="link" href="https://github.com/sarrietav-dev/.dotfiles/blob/master/nvim/.config/nvim/lua/plugins/ruby.lua?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">their LazyVim configuration</a> for Ruby on Rails</p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c8a1de60-dc65-4904-ac3f-bd13aa832967/image.png?t=1768216845"/></div><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/mario_chavez?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Mario Alberto Chávez</a> shared <a class="link" href="https://github.com/maquina-app/rails-claude-code?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">maquina-app/rails-claude-code: Rails plugins: simplifier, upgrade-assistant, ui-standards</a></p><div class="image"><a class="image__link" href="https://x.com/mario_chavez/status/2010091666976452716?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e211e758-1196-4672-a2b2-e07abbe3f5c3/image.png?t=1768146409"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mario_chavez/status/2010091666976452716?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@mario_chavez</a></p></span></div></div><p class="paragraph" style="text-align:left;">️️📐 <a class="link" href="https://bsky.app/profile/nateberkopec.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> about the “automatic N+1 solving” libraries for Rails </p><div class="image"><a class="image__link" href="https://bsky.app/profile/nateberkopec.bsky.social/post/3mbovz7tzo226?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6b6a5be7-664c-4135-844d-f06446eb4c19/image.png?t=1768048407"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/nateberkopec.bsky.social/post/3mbovz7tzo226?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://nateberkopec.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">nateberkopec.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">The script can be accessed here → <a class="link" href="https://gist.github.com/nateberkopec/fa291e8c243f92c739f49081c55e3df1?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">n_plus_one_where.rb</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/nateberkopec.bsky.social/post/3mbovzaj24n2r?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bc462124-9f45-4d98-ba85-e7c46c5bab93/image.png?t=1768048498"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/nateberkopec.bsky.social/post/3mbovzaj24n2r?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://nateberkopec.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">nateberkopec.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://bsky.app/profile/tenderlove.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Aaron Patterson</a> shared profiler result for running “bundle install” against the Gemfile in <a class="link" href="http://RubyGems.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">RubyGems.org</a>. You can check it directly from here → <a class="link" href="https://share.firefox.dev/4qKtRfL?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Firefox Profiler</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/tenderlove.dev/post/3mbpqrfvzfc23?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/59d439ea-2467-4dd4-8abb-611485eb6301/image.png?t=1768048857"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/tenderlove.dev/post/3mbpqrfvzfc23?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://tenderlove.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">tenderlove.dev</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/marckohlbrugge?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Marc Köhlbrugge</a> shared about his journey on building <a class="link" href="https://github.com/marckohlbrugge/rclown?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">rclown</a> with AI tools</p><div class="image"><a class="image__link" href="https://x.com/marckohlbrugge/status/2008221776388780206?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/541d82d8-de62-410c-8611-6c4b9c2c8656/image.png?t=1768051689"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/marckohlbrugge/status/2008221776388780206?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@marckohlbrugge</a></p></span></div></div><p class="paragraph" style="text-align:left;">📐 <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared a code sample about using <a class="link" href="https://github.com/jdx/fnox?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">fnox</a> for secrets management: </p><div class="image"><a class="image__link" href="https://Source: [@nateberkopec](https://x.com/nateberkopec/status/2009873774909575440)" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/05a53603-cdaf-4c6c-b9ca-d55c74c60972/image.png?t=1768145502"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/2009873774909575440?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://www.linkedin.com/in/jasonswett/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Jason Swett</a> shared they are <a class="link" href="https://www.codewithjason.com/seeking-podcast-guests/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">looking for podcast guests</a></p><div class="image"><a class="image__link" href="https://www.linkedin.com/posts/jasonswett_im-seeking-guests-for-the-code-with-jason-activity-7414497656074493952-ekSw/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cf94e09e-96f5-4d1e-98f4-0420e5043b74/image.png?t=1768196196"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.linkedin.com/posts/jasonswett_im-seeking-guests-for-the-code-with-jason-activity-7414497656074493952-ekSw/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Jason Swett Linkedin</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://bsky.app/profile/st0012.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Stan Lo</a> started improving the support of Markdown in RDoc: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/st0012.dev/post/3mbmz3evubs24?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c6afc0c9-3c76-4137-a533-ae3371ae2680/image.png?t=1768048092"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/st0012.dev/post/3mbmz3evubs24?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://st0012.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">st0012.dev</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://x.com/AllanMk01?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Allancoder</a> reflected on how much there is still to learn in Rails, even after five years of daily development</p><div class="image"><a class="image__link" href="https://x.com/AllanMk01/status/2008279526908826059?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/48ce762d-9790-4571-b7c5-4a5f2dcc7478/image.png?t=1768052525"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/AllanMk01/status/2008279526908826059?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@AllanMk01</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> pointed out that Ruby now handles millions of requests per second</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/2008301593180197176?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/461bf1ff-743e-4a7f-af0b-c6eab054c3ce/image.png?t=1768052788"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/2008301593180197176?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://www.reddit.com/user/azilla14/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Azilla14</a> asked on r/ruby about Ruby: </p><div class="image"><a class="image__link" href="https://www.reddit.com/r/ruby/comments/1q5ug0o/why_is_ruby_your_favorite_programming_language/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a0b5933e-aa76-4cac-a955-343e6efd1b7f/image.png?t=1768203534"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.reddit.com/r/ruby/comments/1q5ug0o/why_is_ruby_your_favorite_programming_language/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://www.reddit.com/r/ruby/comments/1q5ug0o/why_is_ruby_your_favorite_programming_language/</a></p></span></div></div><p class="paragraph" style="text-align:left;">Here are some interesting replies: </p><div class="image"><a class="image__link" href="https://www.reddit.com/r/ruby/comments/1q5ug0o/comment/ny2t0sh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/258c4d31-47a6-4a63-b517-0232f1d36ae6/image.png?t=1768203585"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.reddit.com/r/ruby/comments/1q5ug0o/comment/ny2t0sh/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank" rel="noopener noreferrer nofollow">https://www.reddit.com/r/ruby/comments/1q5ug0o/comment/ny2t0sh</a></p></span></div></div><div class="image"><a class="image__link" href="https://www.reddit.com/r/ruby/comments/1q5ug0o/comment/ny2upgw?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f65e2c40-601a-4b6a-9a67-03ee8ecfd444/image.png?t=1768203619"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.reddit.com/r/ruby/comments/1q5ug0o/comment/ny2upgw/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank" rel="noopener noreferrer nofollow">https://www.reddit.com/r/ruby/comments/1q5ug0o/comment/ny2upgw</a></p></span></div></div><div class="image"><a class="image__link" href="https://www.reddit.com/r/ruby/comments/1q5ug0o/comment/ny34c87?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4e4cea3d-8be6-413d-8deb-f7830de509b0/image.png?t=1768203680"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.reddit.com/r/ruby/comments/1q5ug0o/comment/ny34c87/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button" target="_blank" rel="noopener noreferrer nofollow">https://www.reddit.com/r/ruby/comments/1q5ug0o/comment/ny34c87</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 Jorge Alvarez published a new project <a class="link" href="https://github.com/jorgegorka/minerva?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">minerva: An MCP server to infuse wisdom into your AI agent.</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/jorgegorka.bsky.social/post/3mbwcjv3tp226?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a4668125-15c2-4026-821c-6127dda86ceb/image.png?t=1768147202"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/jorgegorka.bsky.social/post/3mbwcjv3tp226?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://jorgegorka.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">jorgegorka.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Kevin Newton published a new gem <a class="link" href="https://github.com/kddnewton/exreg?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">exreg</a> - <a class="link" href="https://kddnewton.com/2026/01/06/exreg.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">A Ruby Regular Expression Engine</a></p><div class="image"><a class="image__link" href="https://github.com/kddnewton/exreg?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/815c2605-6e3c-457d-9f7d-fdda4b304cf8/image.png?t=1768130033"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/kddnewton/exreg?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://github.com/kddnewton/exreg</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Tyler Ewing published a new gem <a class="link" href="https://github.com/ductwork/ductwork?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">ductwork</a> - &quot;Ductwork lets you build complex pipelines quickly and easily using intuitive Ruby tooling and a natural DSL.&quot;</p><div class="image"><a class="image__link" href="https://blog.getductwork.io/beyond-job-queues-introducing-ductwork-for-ruby/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6df0bb7d-15a2-4a6a-b14a-4fcecfa3af28/image.png?t=1768130853"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://blog.getductwork.io/beyond-job-queues-introducing-ductwork-for-ruby/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://blog.getductwork.io/beyond-job-queues-introducing-ductwork-for-ruby/</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Giménez Silva Germán Alberto published a new gem <a class="link" href="https://github.com/ggerman/ruby-libgd?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">ruby-libgd</a> - &quot;High-performance native Ruby bindings to libgd for image generation, drawing, filters, alpha blending, and transformations.&quot;</p><div class="image"><a class="image__link" href="https://rubystacknews.com/2026/01/05/ruby-can-create-images-again/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/072d7280-437e-405c-8647-bd981fc5ec70/image.png?t=1768128760"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubystacknews.com/2026/01/05/ruby-can-create-images-again/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://rubystacknews.com/2026/01/05/ruby-can-create-images-again/</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://avohq.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Avo</a> announced a new release → <a class="link" href="https://github.com/avo-hq/avo/releases/tag/v3.28.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">v3.28.0</a></p><div class="image"><a class="image__link" href="https://github.com/avo-hq/avo/releases/tag/v3.28.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6544a97e-550a-42b8-a4ea-2eaf7089833b/image.png?t=1768053274"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/avo-hq/avo/releases/tag/v3.28.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://github.com/avo-hq/avo/releases/tag/v3.28.0</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://cloving.ai/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Lucas Carlson</a> updated two old and useful gems: </p><div class="image"><a class="image__link" href="https://x.com/cardmagic/status/2005740860554764765?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/dc1d14c3-3e54-4b3a-b423-8beaf6085773/image.png?t=1768207288"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/cardmagic/status/2005740860554764765?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@cardmagic</a></p></span></div></div><ol start="1"><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://github.com/cardmagic/classifier?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">classifier</a> - &quot;A Ruby library for text classification featuring Naive Bayes, LSI (Latent Semantic Indexing), Logistic Regression, and k-Nearest Neighbors classifiers. Includes TF-IDF vectorization, streaming/incremental training, pluggable persistence backends, thread safety, and a native C extension for fast LSI operations.&quot;</p></li></ol><div class="image"><a class="image__link" href="https://x.com/cardmagic/status/2005740884059644120?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8f24bbd1-045f-4b93-b8e0-1efb79b40c39/image.png?t=1768207365"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/cardmagic/status/2005740884059644120?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@cardmagic</a></p></span></div></div><ol start="2"><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://github.com/cardmagic/simple-rss?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">simple-rss</a> - &quot;A simple, flexible, extensible, and liberal RSS and Atom reader for Ruby. It is designed to be backwards compatible with the standard RSS parser, but will never do RSS generation.&quot;</p></li></ol><div class="image"><a class="image__link" href="https://x.com/cardmagic/status/2005740907551940998?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ce3bcf30-9b6e-493f-bca4-35d76192a98e/image.png?t=1768207445"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/cardmagic/status/2005740907551940998?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@cardmagic</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a> announced a new feature for <a class="link" href="https://github.com/basecamp/lexxy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Lexxy</a></p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/2008158321056878643?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/30eebefd-f706-49e5-883a-817019ec4851/image.png?t=1768050420"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/2008158321056878643?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><div class="image"><a class="image__link" href="https://github.com/basecamp/lexxy/releases?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8ed6fcf1-bb1e-43a4-b7e7-54e91a43d29f/image.png?t=1768050493"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/basecamp/lexxy/releases?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://github.com/basecamp/lexxy/releases</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 André Arko announced a new release for <a class="link" href="https://github.com/spinel-coop/rv?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">rv</a> - “💎💨 Extremely fast Ruby version and gem manager“. For more details, you can check the blog post for this release → <a class="link" href="https://andre.arko.net/2026/01/07/rv-clean-install/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Announcing rv clean-install</a></p><div class="image"><a class="image__link" href="https://github.com/spinel-coop/rv/releases/tag/v0.4.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7de80017-1900-4809-9dc9-6a51f14beb33/image.png?t=1768053471"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/spinel-coop/rv/releases/tag/v0.4.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://github.com/spinel-coop/rv/releases/tag/v0.4.0</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://paolino.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Carmine Paolino</a> announced a new version of <a class="link" href="https://github.com/crmne/ruby_llm?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">ruby_llm</a></p><div class="image"><a class="image__link" href="https://github.com/crmne/ruby_llm/releases/tag/1.9.2?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e24df47d-0c1c-4fbe-97df-7eb84db06c2b/image.png?t=1768054487"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/crmne/ruby_llm/releases/tag/1.9.2?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://github.com/crmne/ruby_llm/releases/tag/1.9.2</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/jeremyevans0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Jeremy Evans</a> announced a new version of <a class="link" href="https://github.com/jeremyevans/tilt?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">tilt</a> - “Generic interface to multiple Ruby template engines“</p><div class="image"><a class="image__link" href="https://github.com/jeremyevans/tilt/discussions/25?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bb893aad-2427-4576-a2d5-974a0a6e3157/image.png?t=1768054953"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/jeremyevans/tilt/discussions/25?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">https://github.com/jeremyevans/tilt/discussions/25</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://www.zolkos.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Rob Zolkos</a> shared about learning multiple AI models: </p><div class="image"><a class="image__link" href="https://x.com/robzolkos/status/2010051900922573253?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/06419a96-7287-4b09-91e4-5463921e0dfe/image.png?t=1768146837"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/robzolkos/status/2010051900922573253?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@robzolkos</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> made a post about static vs dynamic typing. Here is just a part of the post, <a class="link" href="https://x.com/dhh/status/2008079269017141750?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">you can read it entirely on X</a></p><div class="image"><a class="image__link" href="https://x.com/dhh/status/2008079269017141750?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c90edf3d-d4d5-4dc1-8eab-c85cbe326181/image.png?t=1768050271"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/2008079269017141750?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/yongfook?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Jon Yongfook</a> shared how marketing stays the real challenge, regardless of the tech stack</p><div class="image"><a class="image__link" href="https://x.com/yongfook/status/2009059910877938077?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1c1330a4-0dd4-4c93-a939-40e48da52416/image.png?t=1768053941"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/yongfook/status/2009059910877938077?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">@yongfook</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 Matt Solt published a new edition → <a class="link" href="https://rubyai.beehiiv.com/p/ruby-ai-news-january-7th-2025?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Ruby AI News - January 7th, 2026</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new article about <a class="link" href="https://rubyweekly.com/issues/782?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Examples of language changes in Ruby 4.0</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 Jason Swett published a huge list of episodes for <a class="link" href="https://www.codewithjason.com/podcast/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Code with Jason Podcast</a> → check episodes 288 to 300</p><p class="paragraph" style="text-align:left;">🎧 A Junior, A Senior and I published a new podcast episode → <a class="link" href="https://open.spotify.com/episode/0UaTHzRtNkiSfqWVigJNTq?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">27 - On Ruby (and Rails?) with Lucian and Stan</a></p><p class="paragraph" style="text-align:left;">🎧 The Bike Shed published a new podcast episode → <a class="link" href="https://bikeshed.thoughtbot.com/488?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Playful Portland Programming Paradigm</a></p><p class="paragraph" style="text-align:left;">🎧 The Ruby AI Podcast published a new episode → <a class="link" href="https://www.buzzsprout.com/2388930/episodes/18457774-real-vs-fake-ai-with-evan-phoenix?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Real vs. Fake AI with Evan Phoenix</a></p><p class="paragraph" style="text-align:left;">🎧 Rails Business published a new episode → <a class="link" href="https://www.buzzsprout.com/2435951/episodes/18469889-mateus-pereira?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Mateus Pereira</a></p><p class="paragraph" style="text-align:left;">🎧 Errol Schmidt published a new episode → <a class="link" href="https://dashbit.co/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Dashbit - Boosting the Elixir ecosystem</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Jeremy Daer, Fernando Olivares and Kimberly Rhodes published a new episode of RRECORDABLES about <a class="link" href="https://dev.37signals.com/moving-mountains-of-data-off-s3/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Moving Mountains of Data off S3</a></p><p class="paragraph" style="text-align:left;">🎥 Dave Kimura published a new episode about <a class="link" href="https://www.driftingruby.com/episodes/self-hosted-app?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Self Hosted App</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Paweł Świątkowski published a new article about <a class="link" href="https://katafrakt.me/2026/01/04/mruby-cosmo-compilation/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Portable mruby binaries with Cosmopolitan</a></p><p class="paragraph" style="text-align:left;">🆕 Kevin Newton published a new article about <a class="link" href="https://kddnewton.com/2026/01/06/exreg.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">A Ruby Regular Expression Engine</a></p><p class="paragraph" style="text-align:left;">🆕 Matheus Richard published a new article about <a class="link" href="https://blog.appsignal.com/2026/01/07/an-introduction-to-ruby-parsing-with-prism.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">An Introduction to Ruby Parsing with Prism</a></p><p class="paragraph" style="text-align:left;">🆕 Jeff Morhous published a new article about <a class="link" href="https://www.honeybadger.io/blog/action-cable/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Exploring Rails Action Cable with Solid Cable</a></p><p class="paragraph" style="text-align:left;">🆕 Rachael Wright-Munn published a new article about <a class="link" href="https://www.chael.codes/blog/2025/12/30/check-docker-ruby-version.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Check Docker&#39;s Ruby version with Github</a></p><p class="paragraph" style="text-align:left;">🆕 Mohit Sindhwani published a new article about <a class="link" href="https://notepad.onghu.com/2026/raise-ai-benefits-estimation/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RAISE: Evaluating if AI is helping me code</a></p><p class="paragraph" style="text-align:left;">🆕 Sam Ruby published a new article about <a class="link" href="https://intertwingly.net/blog/2026/01/06/Rails-Apps-on-V8-Isolates.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Rails Apps on V8 Isolates</a></p><p class="paragraph" style="text-align:left;">🆕 Simon Chiu published a new article about <a class="link" href="https://codewithrails.com/blog/rails-creds-unexpected-uses/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">5 Unexpected Ways to Use Rails.app.creds</a> and about <a class="link" href="https://codewithrails.com/blog/rails-multitenant-configuration/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Multi-tenant Configuration with </a><a class="link" href="https://Rails.app?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Rails.app</a><a class="link" href="https://codewithrails.com/blog/rails-multitenant-configuration/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">.creds</a> and about <a class="link" href="https://codewithrails.com/blog/rails-feature-flags-credentials/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Build a Feature Flag System in 50 Lines with </a><a class="link" href="https://Rails.app?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-163" target="_blank" rel="noopener noreferrer nofollow">Rails.app</a><a class="link" href="https://codewithrails.com/blog/rails-feature-flags-credentials/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">.creds</a></p><p class="paragraph" style="text-align:left;">🆕 Scott Watermasysk published a new article about <a class="link" href="https://scottw.com/easy-cloudflare-tunnels-with-rails/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Easy CloudFlare Tunnels With Rails</a></p><p class="paragraph" style="text-align:left;">🆕 DevelClan published a new article about <a class="link" href="https://develclan.com/dependency-inversion-principle/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Dependency Inversion Principle</a></p><p class="paragraph" style="text-align:left;">🆕 Joey Wang published a new article about <a class="link" href="https://joeywang.github.io//posts/rails-styles/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails Style Guide: Transactions, Touch, and Async Derived Data</a> and about <a class="link" href="https://joeywang.github.io//posts/transactions-touches-async/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Transactions, Touches, and Async Rollups in Ruby on Rails</a></p><p class="paragraph" style="text-align:left;">🆕 Simon Chiu published a new article about <a class="link" href="https://sendbroadcast.net/blog/e2e-email-provider-testing?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Verifying e2e email sends in Rails using GitHub Actions & Cloudflare Workers</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">📝 Rails designer published a new article about <a class="link" href="https://railsdesigner.com/dialog-turboframe/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Use native dialog with Turbo (and no extra JavaScript)</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">Stephen Margheim published a new article about <a class="link" href="https://fractaledmind.com/2025/12/01/ui-affordances/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Affordances: The Missing Layer in Frontend Architecture</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=e7d59f58-f9a6-41cc-bca4-8fe00783b3e0&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Ruby 4.0 - curated list of resources</title>
  <description>Most important links to read about Ruby 4.0 changes</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/99a05b49-116c-446a-b03c-c3dff4c779b6/ruby40.png" length="218009" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/ruby-4-0</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/ruby-4-0</guid>
  <pubDate>Mon, 12 Jan 2026 09:09:38 +0000</pubDate>
  <atom:published>2026-01-12T09:09:38Z</atom:published>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Article]]></category>
    <category><![CDATA[Five Ruby Links]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Ruby 4.0 came out on December 25th. If you want to learn about all the new features in Ruby 4.0, here are some resources you should check out.</p><h3 class="heading" style="text-align:left;" id="ruby-400-released"><b><a class="link" href="https://www.ruby-lang.org/en/news/2025/12/25/ruby-4-0-0-released/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby 4.0.0 Released</a></b></h3><p class="paragraph" style="text-align:left;">First, let’s start with the official announcement. I am putting here a screenshot </p><div class="image"><a class="image__link" href="https://www.ruby-lang.org/en/news/2025/12/25/ruby-4-0-0-released/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a7b3de13-1982-40df-9298-92605c13beb0/image.png?t=1768147878"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.ruby-lang.org/en/news/2025/12/25/ruby-4-0-0-released/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">https://www.ruby-lang.org/en/news/2025/12/25/ruby-4-0-0-released/</a></p></span></div></div><p class="paragraph" style="text-align:left;">You can read the entire list of commits between <a class="link" href="https://github.com/ruby/ruby/compare/v3_4_0...v4.0.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">Ruby 3.4 to Ruby 4.0 in Github</a>.</p><p class="paragraph" style="text-align:left;">PS: Yes, last year the Ruby official website got a new look. You can read about it here <span style="color:rgb(0, 0, 0);font-size:medium;"> </span><b><a class="link" href="https://www.ruby-lang.org/en/news/2025/12/23/new-look-for-ruby-documentation/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">A New Look for Ruby&#39;s Documentation</a></b></p><h3 class="heading" style="text-align:left;" id="victor-shepelevs-ruby-40-changelog"><a class="link" href="https://rubyreferences.github.io/rubychanges/4.0.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">Victor Shepelev’s Ruby 4.0 Changelog</a></h3><div class="image"><a class="image__link" href="https://rubyreferences.github.io/rubychanges/4.0.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/68630fa7-ab80-435e-a68c-f5ae5cfb23d2/image.png?t=1768147982"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubyreferences.github.io/rubychanges/4.0.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">https://rubyreferences.github.io/rubychanges/4.0.html</a></p></span></div></div><p class="paragraph" style="text-align:left;">Don’t get fooled by that screenshot above where is might seem the review is small. Victor is doing an amazing job documeting all those changes. Here is one: </p><div class="image"><a class="image__link" href="https://rubyreferences.github.io/rubychanges/4.0.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources#logical-operators-can-continue-on-the-next-line" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9becca6a-d588-45e5-a311-59268da88e27/image.png?t=1768148029"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubyreferences.github.io/rubychanges/4.0.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources#logical-operators-can-continue-on-the-next-line" target="_blank" rel="noopener noreferrer nofollow">https://rubyreferences.github.io/rubychanges/4.0.html#logical-operators-can-continue-on-the-next-line</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="ruby-weekly-special-edition-about-r"><a class="link" href="https://rubyweekly.com/issues/781?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">Ruby Weekly special edition about Ruby 4.0</a></h3><div class="image"><a class="image__link" href="https://rubyweekly.com/issues/781?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/02ae1e1b-a80d-4b1a-8cc7-5eab3238528e/image.png?t=1768149530"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubyweekly.com/issues/781?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">https://rubyweekly.com/issues/781</a></p></span></div></div><p class="paragraph" style="text-align:left;">As always Peter Cooper is doing an amazing job identifying the most important pieces that you should know about Ruby 4.0. </p><h3 class="heading" style="text-align:left;" id="ruby-40-a-lot-of-restructuring-unde"><a class="link" href="https://www.heise.de/en/background/Ruby-4-0-A-lot-of-restructuring-under-the-hood-few-new-features-11121859.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">Ruby 4.0: A lot of restructuring under the hood, few new features</a></h3><div class="image"><a class="image__link" href="https://www.heise.de/en/background/Ruby-4-0-A-lot-of-restructuring-under-the-hood-few-new-features-11121859.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6025cbee-e381-42c1-8198-84c77dcb7dcf/image.png?t=1768148193"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.heise.de/en/background/Ruby-4-0-A-lot-of-restructuring-under-the-hood-few-new-features-11121859.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">https://www.heise.de/en/background/Ruby-4-0-A-lot-of-restructuring-under-the-hood-few-new-features-11121859.html</a></p></span></div></div><p class="paragraph" style="text-align:left;">Stefan Wintermeyer writes an good analysis providing context for the features in the release, focusing on internal changes, the new JIT compiler, parallelization API, and type system maturity.</p><h3 class="heading" style="text-align:left;" id="whats-new-in-ruby-gems-bundler-4"><a class="link" href="https://blog.rubygems.org/2025/12/26/whats-new-rubygems-bundler4.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">What&#39;s New in RubyGems/Bundler 4</a></h3><div class="image"><a class="image__link" href="https://blog.rubygems.org/2025/12/26/whats-new-rubygems-bundler4.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3e9a00b3-5e9d-407b-a7fe-18b0d72da515/image.png?t=1768150374"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://blog.rubygems.org/2025/12/26/whats-new-rubygems-bundler4.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">https://blog.rubygems.org/2025/12/26/whats-new-rubygems-bundler4.html</a></p></span></div></div><p class="paragraph" style="text-align:left;">Hiroshi Shibata published a list of all the new features that are part of Bundler 4.0 that every Ruby developer should know. </p><h3 class="heading" style="text-align:left;" id="reading-ruby-40-news-with-pros"><a class="link" href="https://dev.to/ko1/reading-ruby-40-news-with-pros-3mln?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">Reading Ruby 4.0 NEWS with Pros</a></h3><div class="image"><a class="image__link" href="https://dev.to/ko1/reading-ruby-40-news-with-pros-3mln?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7090b3b6-b3fd-454a-9745-5be0150753dc/image.png?t=1768150337"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://dev.to/ko1/reading-ruby-40-news-with-pros-3mln?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">https://dev.to/ko1/reading-ruby-40-news-with-pros-3mln</a></p></span></div></div><p class="paragraph" style="text-align:left;">Koichi Sasada (ko1) and Yusuke Endoh (mame) both Ruby core committers go over the changes in Ruby 4.0 and they also provide backstories about the decision process or discussions behind the included changes. </p><h3 class="heading" style="text-align:left;" id="ruby-box-digest-introduction-ruby-4"><a class="link" href="https://dev.to/ko1/rubybox-digest-introduction-ruby-400-new-feature-3bch?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">Ruby::Box Digest Introduction (Ruby 4.0.0 New Feature)</a></h3><div class="image"><a class="image__link" href="https://dev.to/ko1/rubybox-digest-introduction-ruby-400-new-feature-3bch?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/caef3c8f-65f6-43f5-bece-7c42b629ed9e/image.png?t=1768150166"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://dev.to/ko1/rubybox-digest-introduction-ruby-400-new-feature-3bch?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">https://dev.to/ko1/rubybox-digest-introduction-ruby-400-new-feature-3bch</a></p></span></div></div><p class="paragraph" style="text-align:left;">In this article (translated by Koichi Sasada) Yusuke Endoh goes in depth explaining the purpose, intention and future of Ruby::Box. </p><p class="paragraph" style="text-align:left;">They end the article with: </p><p class="paragraph" style="text-align:left;"><i>“This is a huge contribution opportunity like few in recent years, so please go play with it a lot”</i></p><h3 class="heading" style="text-align:left;" id="ruby-40-the-structural-maturation-o"><a class="link" href="https://dev.to/daviducolo/ruby-40-the-structural-maturation-of-a-thirty-year-old-language-2c83?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">Ruby 4.0: The Structural Maturation of a Thirty-Year-Old Language</a></h3><div class="image"><a class="image__link" href="https://dev.to/daviducolo/ruby-40-the-structural-maturation-of-a-thirty-year-old-language-2c83?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b368609b-b83c-4c9f-8027-35d70f4267a5/image.png?t=1768150449"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://dev.to/daviducolo/ruby-40-the-structural-maturation-of-a-thirty-year-old-language-2c83?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">https://dev.to/daviducolo/ruby-40-the-structural-maturation-of-a-thirty-year-old-language-2c83</a></p></span></div></div><p class="paragraph" style="text-align:left;">Davide Santangelo (with or without AI) creates here a compilation of multiple resources to give us a nice review of all the important changes in Ruby 4.0</p><h3 class="heading" style="text-align:left;" id="zjit-is-now-available-in-ruby-40"><a class="link" href="https://railsatscale.com/2025-12-24-launch-zjit/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">ZJIT is now available in Ruby 4.0</a></h3><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fa351fa3-8003-4460-b186-cb335a049459/image.png?t=1768151102"/><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://railsatscale.com/2025-12-24-launch-zjit/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">https://railsatscale.com/2025-12-24-launch-zjit/</a></p></span></div></div><p class="paragraph" style="text-align:left;">Max Bernstein goes over the improvements in ZJIT happening in the second half of 2025 ending with a graph showing the performance improvements of ZJIT going steadly up: </p><div class="image"><a class="image__link" href="https://railsatscale.com/2025-12-24-launch-zjit/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/51ea9a65-81d5-4240-97cb-52fbbc3f65f0/image.png?t=1768151190"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://railsatscale.com/2025-12-24-launch-zjit/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">https://railsatscale.com/2025-12-24-launch-zjit/</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="online-discussions">Online discussions</h3><ul><li><p class="paragraph" style="text-align:left;">There was a Hacker News thread with close to 200 comments about the <a class="link" href="https://news.ycombinator.com/item?id=46382011&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">Ruby 4.0.0 release</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.reddit.com/r/ruby/comments/1pv5job/ruby_400_released_ruby/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">r/ruby discussion</a> with around 37 comments</p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.reddit.com/r/ruby/comments/1owp9o4/news_documentation_for_ruby_40/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=ruby-4-0-curated-list-of-resources" target="_blank" rel="noopener noreferrer nofollow">Another r/ruby discussion</a> about the NEWS.md file</p></li></ul></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=f4bd6abb-57d8-492e-a5f7-a0d27e346c4f&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 162</title>
  <description>The one where Ruby gets a new homepage, Ruby 4.0.preview3 and Ruby 3.4.8 are released, Ryan Davis announced Minitest 6.0 and where Marco Roth gets the Rails Luminary award</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6bc21f18-0cb3-4c04-aa4b-2c34ae07ee3e/cover-page-edition-162.png" length="397787" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-162</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-162</guid>
  <pubDate>Mon, 22 Dec 2025 11:10:14 +0000</pubDate>
  <atom:published>2025-12-22T11:10:14Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="you-can-easily-launch-a-newsletter-">You can (easily) launch a newsletter too</h3><div class="image"><a class="image__link" href="http://www.beehiiv.com/splash?utm_medium=cpc&utm_source=beehiiv_ad_network&utm_content=V1&utm_source_platform=newsletter&utm_campaign=Q42025-BL-{{publication_alphanumeric_id}}-{{publication_name_param}}&utm_term=CPC&_bhiiv=opp_c0c9a689-ae2f-4e69-a11d-669f4bbba25a_ebb56c0d&bhcl_id=473d7e54-d18d-4fd0-9a12-27f4d00daf6f_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9d0c283b-c9fe-4dc4-b829-2c1bd3efa198/image__9_.png?t=1764098107"/></a></div><p class="paragraph" style="text-align:left;">This newsletter you couldn’t wait to open? It runs on <a class="link" href="http://www.beehiiv.com/splash?utm_medium=cpc&utm_source=beehiiv_ad_network&utm_content=V1&utm_source_platform=newsletter&utm_campaign=Q42025-BL-{{publication_alphanumeric_id}}-{{publication_name_param}}&utm_term=CPC&_bhiiv=opp_c0c9a689-ae2f-4e69-a11d-669f4bbba25a_ebb56c0d&bhcl_id=473d7e54-d18d-4fd0-9a12-27f4d00daf6f_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">beehiiv</a> — the absolute best platform for email newsletters.</p><p class="paragraph" style="text-align:left;">Our editor makes your content look like Picasso in the inbox. Your website? Beautiful and ready to capture subscribers on day one.</p><p class="paragraph" style="text-align:left;">And when it’s time to monetize, you don’t need to duct-tape a dozen tools together. Paid subscriptions, referrals, and a (super easy-to-use) global ad network — it’s all built in.</p><p class="paragraph" style="text-align:left;">beehiiv isn’t just the best choice. It’s the only choice that makes sense.</p><p class="paragraph" style="text-align:left;"><a class="link" href="http://www.beehiiv.com/splash?utm_medium=cpc&utm_source=beehiiv_ad_network&utm_content=V1&utm_source_platform=newsletter&utm_campaign=Q42025-BL-{{publication_alphanumeric_id}}-{{publication_name_param}}&utm_term=CPC&_bhiiv=opp_c0c9a689-ae2f-4e69-a11d-669f4bbba25a_ebb56c0d&bhcl_id=473d7e54-d18d-4fd0-9a12-27f4d00daf6f_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Start free today. No credit card required</a></p><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;"></p><hr class="content_break"><div class="blockquote"><blockquote class="blockquote__quote"><p class="paragraph" style="text-align:left;">We are taking a holiday and the next edition of the Short Ruby Newsletter will be sent on 12 January. </p><figcaption class="blockquote__byline"> The Short Ruby Team </figcaption></blockquote></div><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/hsbt?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Hiroshi Shibata</a> announced that Ruby web page got a new look 🥳 → <a class="link" href="https://www.ruby-lang.org/en/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Ruby</a> </p><div class="image"><a class="image__link" href="https://x.com/hsbt/status/2002289826553606641?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/430b5b9e-b070-427c-8797-8345d30720a2/image.png?t=1766246258"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/hsbt/status/2002289826553606641?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@hsbt</a></p></span></div></div><p class="paragraph" style="text-align:left;">They also published an article going a bit into the ideas that were behind this redesign <a class="link" href="https://www.ruby-lang.org/en/news/2025/12/22/redesign-site-identity/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Redesign our Site Identity</a></p><p class="paragraph" style="text-align:left;">🚀<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><a class="link" href="https://raulp.co/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Raul</a><span style="color:rgb(0, 0, 0);font-size:medium;"> launched </span><a class="link" href="https://calmcompanies.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">CalmCompanies.club</a><span style="color:rgb(0, 0, 0);font-size:medium;"> → Find your dream job at a company that actually cares. If you want to read the </span><a class="link" href="https://threadreaderapp.com/thread/2001054485930762642.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">story behind read Raul’s post</a></p><div class="image"><a class="image__link" href="https://calmcompanies.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/67508d3e-f109-4e7f-8fab-c3c7ea775702/image.png?t=1766400074"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://calmcompanies.club?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">https://calmcompanies.club</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://www.zolkos.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Rob Zolkos</a> launched <a class="link" href="https://osaasy.directory/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">O&#39;Saasy Directory</a></p><div class="image"><a class="image__link" href="https://x.com/robzolkos/status/2001177524894679542?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9854373c-4316-4acc-872c-d4a37b17bd9b/image.png?t=1766175296"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/robzolkos/status/2001177524894679542?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@robzolkos</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://www.activerabbit.ai/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Alex Shapalov</a> launched <a class="link" href="https://www.activerabbit.ai/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">ActiveRabbit</a></p><div class="image"><a class="image__link" href="https://x.com/alxshp/status/2001715201469747291?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/81121676-d8db-4187-958d-351cb06f4a14/image.png?t=1766176660"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/alxshp/status/2001715201469747291?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@alxshp</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="http://www.railsfullstack.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Karim Rails & React Full Stack</a> launched <a class="link" href="https://www.railsfullstack.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">RailsFullStack</a></p><div class="image"><a class="image__link" href="https://www.railsfullstack.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4637bfd1-9182-4b5f-b9f8-1c4f7b1e0c64/image.png?t=1766386305"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.railsfullstack.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">https://www.railsfullstack.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://github.com/mariochavez?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Mario Alberto Chávez</a> launched <a class="link" href="https://maquina.app?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Maquina</a> - open-source tooling for developers and the first components are Components UI: </p><div class="image"><a class="image__link" href="https://maquina.app?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1139569b-127c-4d99-bae7-e591d0a5697d/image.png?t=1766386211"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://maquina.app?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">https://maquina.app</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://bsky.app/profile/blueridgeruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Blue Ridge Ruby</a> announced that they’re returning next year and ticjkets are available at <a class="link" href="https://blueridgeruby.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162#register" target="_blank" rel="noopener noreferrer nofollow">https://blueridgeruby.com/#register</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/blueridgeruby.com/post/3ma26npyis22a?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/edbc9a1c-5549-4fb4-aa8d-8bfb1f25b58e/image.png?t=1766081668"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/blueridgeruby.com/post/3ma26npyis22a?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://blueridgeruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">blueridgeruby.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/rubykaigi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Ruby Kaigi</a> is looking for speakers for next year&#39;s event. If you&#39;re interested, submit your proposal here → <a class="link" href="https://cfp.rubykaigi.org/events/2026/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">RubyKaigi 2026 CFP</a></p><div class="image"><a class="image__link" href="https://x.com/rubykaigi/status/2000488396884730054?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/13ecf37a-a615-4d41-a499-df1489ef675d/image.png?t=1766083161"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rubykaigi/status/2000488396884730054?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@rubykaigi</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://rbqconf.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Rbq Conf</a> started ticket sale for the next year event. For more details check → <a class="link" href="https://rbqconf.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162#tickets" target="_blank" rel="noopener noreferrer nofollow">RBQ TICKETS</a></p><div class="image"><a class="image__link" href="https://x.com/rbqconf/status/2001307437098274996?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/25f5cb66-24c7-4593-8d49-2c5848800b32/image.png?t=1766175373"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rbqconf/status/2001307437098274996?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@rbqconf</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><a class="link" href="https://twitter.com/nalsh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Yui Naruse</a> announced a new Ruby version → <a class="link" href="https://www.ruby-lang.org/en/news/2025/12/18/ruby-4-0-0-preview3-released/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Ruby 4.0.0 preview3</a></p><div class="image"><a class="image__link" href="https://x.com/nalsh/status/2001578821448032687?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/746abba3-29a3-4d43-ae46-97874683d577/image.png?t=1766175763"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nalsh/status/2001578821448032687?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@nalsh</a></p></span></div></div><p class="paragraph" style="text-align:left;">You should also read this article from Nithin Bekal about <a class="link" href="https://nithinbekal.com/posts/ruby-4-0/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">What&#39;s new in Ruby 4.0</a></p><div class="image"><a class="image__link" href="https://nithinbekal.com/posts/ruby-4-0/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1a41c29d-0a17-4fc8-8fa3-3d7f8470dc75/image.png?t=1766386403"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://nithinbekal.com/posts/ruby-4-0/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">https://nithinbekal.com/posts/ruby-4-0/</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉️ <a class="link" href="https://bsky.app/profile/k0kubun.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Takashi Kokubun</a> announced the release of <a class="link" href="https://www.ruby-lang.org/en/news/2025/12/17/ruby-3-4-8-released/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Ruby 3.4.8</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/k0kubun.com/post/3ma5h5qv3ac2e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7d31968d-9581-4ebe-a510-1584db625539/image.png?t=1766244468"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/k0kubun.com/post/3ma5h5qv3ac2e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://k0kubun.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">k0kubun.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Update your Zeitwerk → <a class="link" href="https://bsky.app/profile/fxn.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Xavier Noria</a> announced a new version of <a class="link" href="https://github.com/fxn/zeitwerk?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">zeitwerk</a> - <i>“Efficient and thread-safe code loader for Ruby“</i></p><div class="image"><a class="image__link" href="https://bsky.app/profile/fxn.bsky.social/post/3ma3m2gi2vk2k?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fd6b3acd-4efc-4c52-ab16-46a248b90604/image.png?t=1766081884"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fxn.bsky.social/post/3ma3m2gi2vk2k?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fxn.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">fxn.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">👉</span><a class="link" href="https://ruby.social/@zenspider?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Ryan Davis </a> <span style="color:rgb(0, 0, 0);font-size:medium;">announced a big release for Minitest → </span><b><a class="link" href="https://www.zenspider.com/releases/2025/12/minitest-version-6-0-0-has-been-released.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">minitest version 6.0.0 has been released!</a></b></p><div class="image"><a class="image__link" href="https://ruby.social/@zenspider/115737453096634435?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3d182563-0ac7-4d8f-855b-b137cf683ac4/image.png?t=1766399692"/></a><div class="image__source"><span class="image__source_text"><p><a class="link" href="https://ruby.social/@zenspider/115737453096634435?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Source: </a><a class="link" href="mailto:zenspider@ruby.social" target="_blank" rel="noopener noreferrer nofollow">zenspider@ruby.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://marcoroth.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Marco Roth </a>received the 2025 Rails Luminary → <a class="link" href="https://rubyonrails.org/2025/12/17/marco-roth-2025-rails-luminary?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Congrats Marco Roth: 2025 Rails Luminary</a> - well deserved!</p><div class="image"><a class="image__link" href="https://rubyonrails.org/2025/12/17/marco-roth-2025-rails-luminary?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b585a41e-0109-43cd-b356-b41b0c24c419/image.png?t=1766386831"/></a><div class="image__source"><span class="image__source_text"><p>Source <a class="link" href="https://rubyonrails.org/2025/12/17/marco-roth-2025-rails-luminary?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Congrats Marco Roth: 2025 Rails Luminary</a></p></span></div></div><p class="paragraph" style="text-align:left;">Marco also wrote an article after receiving the award → <a class="link" href="https://marcoroth.dev/posts/rails-luminary-2025?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Giving Back to the Rails Community</a></p><div class="image"><a class="image__link" href="https://marcoroth.dev/posts/rails-luminary-2025?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/11cab730-dc6d-4c21-96d1-4ada73517f6a/image.png?t=1766387228"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://marcoroth.dev/posts/rails-luminary-2025?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Giving Back to the Rails Community</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Matt Swanson and Stephen Margheim published a new article about <a class="link" href="https://boringrails.com/articles/data-turbo-confirm-beautiful-dialog/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Beautiful Rails confirmation dialogs (with zero JavaScript)</a></p><div class="image"><a class="image__link" href="https://boringrails.com/articles/data-turbo-confirm-beautiful-dialog/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7331e9fc-e008-4643-bdd3-9e16331feafe/image.png?t=1766345235"/></a><div class="image__source"><span class="image__source_text"><p>Source <a class="link" href="https://boringrails.com/articles/data-turbo-confirm-beautiful-dialog/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Beautiful Rails confirmation dialogs (with zero JavaScript)</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Maciej Mensfeld submitted two PRs for Ruby: </p><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://github.com/ruby/ruby/pull/15627?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Optimize Float#to_s with Ryu algorithm to achieve 2-4x performance</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://github.com/ruby/ruby/pull/15655?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Add Eisel-Lemire algorithm for faster String#to_f</a></p></li></ul><p class="paragraph" style="text-align:left;">And he wrote a good article about how he approached this optimisation → <a class="link" href="https://mensfeld.pl/2025/12/ruby-string-to-float-optimization/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby Floats: When 2.6x Faster Is Actually Slower (and Then Faster Again)</a></p><p class="paragraph" style="text-align:left;">👉 Jeffrey Hardy, Fernando Olivares and Kimberly Rhodes from 37 Signals published a <a class="link" href="https://dev.37signals.com/the-rails-delegated-type-pattern/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">video exploration about The Rails Delegated Type Pattern</a> - Watch the full <a class="link" href="https://www.youtube.com/watch?v=m90sl-Uvu0Y&feature=youtu.be&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">video on Youtube here</a></p><div class="image"><a class="image__link" href="https://dev.37signals.com/the-rails-delegated-type-pattern/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e1e78627-9402-4ee4-b38b-b9a1b0cb219d/image.png?t=1766387692"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://dev.37signals.com/the-rails-delegated-type-pattern/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">https://dev.37signals.com/the-rails-delegated-type-pattern/</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="why-ai-isnt-replacing-affiliate-mar">Why AI Isn’t Replacing Affiliate Marketing After All</h3><div class="image"><a class="image__link" href="https://get.levanta.io/ai?utm_source=beehiiv&utm_medium=paidnewsletter&utm_campaign={{publication_alphanumeric_id}}&utm_term=prospecting&utm_content=affiliate_ai_report_gated&_bhiiv=opp_12520f2a-05f6-4d71-8382-4ed8fefffbca_9dcd0883&bhcl_id=e981d1d5-c4e8-469a-9d4c-186f204b5d62_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/80c9bf0d-b6e5-4e1d-b0a2-5dc3d3aee62e/new_banner_beehiiv.png?t=1764717549"/></a></div><p class="paragraph" style="text-align:left;">“AI will make affiliate marketing irrelevant.”</p><p class="paragraph" style="text-align:left;">Our <a class="link" href="https://get.levanta.io/ai?utm_source=beehiiv&utm_medium=paidnewsletter&utm_campaign={{publication_alphanumeric_id}}&utm_term=prospecting&utm_content=affiliate_ai_report_gated&_bhiiv=opp_12520f2a-05f6-4d71-8382-4ed8fefffbca_9dcd0883&bhcl_id=e981d1d5-c4e8-469a-9d4c-186f204b5d62_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">research</a> shows the opposite.</p><p class="paragraph" style="text-align:left;">Shoppers use AI to explore options, but they trust creators, communities, and reviews before buying. With less than 10 percent clicking AI links, affiliate content now shapes both conversions and AI recommendations.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://get.levanta.io/ai?utm_source=beehiiv&utm_medium=paidnewsletter&utm_campaign={{publication_alphanumeric_id}}&utm_term=prospecting&utm_content=affiliate_ai_report_gated&_bhiiv=opp_12520f2a-05f6-4d71-8382-4ed8fefffbca_9dcd0883&bhcl_id=e981d1d5-c4e8-469a-9d4c-186f204b5d62_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Download the full report</a></p><p class="paragraph" style="text-align:left;"></p><hr class="content_break"><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">️</span>💻 ️<a class="link" href="https://wintermeyer-consulting.de?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Stefan Wintermeyer</a> shared an interesting facts about “Array#each”, “#map” and “#select” - they are doling a series about Ruby: </p><div class="image"><a class="image__link" href="https://x.com/wintermeyer/status/2000453267567112654?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/54ae808c-454b-4e90-b2a1-70f3c6a00cb8/image.png?t=1766082861"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/wintermeyer/status/2000453267567112654?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@wintermeyer</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/wintermeyer/status/2000815655856312655?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4992120c-7bff-4632-bd01-8a295c27652f/image.png?t=1766083681"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/wintermeyer/status/2000815655856312655?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@wintermeyer</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://x.com/kyrylosilin?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Kyrylo Silin</a> shared a Rails tip about SVGs in views. Gem used for this tip is → <a class="link" href="https://github.com/jamesmartin/inline_svg?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">inline_svg</a></p><div class="image"><a class="image__link" href="https://x.com/kyrylosilin/status/2000973527730553255?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/01761e24-779e-4251-ab27-2b98754cb336/image.png?t=1766083868"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kyrylosilin/status/2000973527730553255?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@kyrylosilin</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://aviflombaum.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Avi Flombaum</a> shared a useful tip for the Rails console to quickly get a record: </p><div class="image"><a class="image__link" href="https://x.com/aviflombaum/status/2001051735071047962?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ada09fdc-8ca8-458f-85e2-f7b7e6d1441f/image.png?t=1766084268"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/aviflombaum/status/2001051735071047962?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@aviflombaum</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/HiSaeloun?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Saeloun</a> shared how to use bin/ci in Rails. For more details, you can check the blog post → <a class="link" href="https://blog.saeloun.com/2025/12/17/rails-introduces-ci-to-streamline-new-dsl/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Rails 8.1 introduces bin/ci to standardize CI workflows with a new DSL</a></p><div class="image"><a class="image__link" href="https://x.com/HiSaeloun/status/2001315316521955636?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6b1306fa-837a-4134-a707-02bd7acfbbed/image.png?t=1766085016"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/HiSaeloun/status/2001315316521955636?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@HiSaeloun</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/HiSaeloun/status/2001315316521955636?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/01c7f149-a325-4c5c-8058-3458dcc4fe23/image.png?t=1766084985"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/HiSaeloun/status/2001315316521955636?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@HiSaeloun</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a> shared examples of Rails&#39; expressive syntax</p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/2001422872695251220?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/42ef9ed8-9ea7-4169-ac04-96fb62a42178/image.png?t=1766085847"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/2001422872695251220?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/2001422872695251220?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fe0ce172-29d7-4e00-9462-94df7b20245f/image.png?t=1766085856"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/2001422872695251220?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://bsky.app/profile/jpcamara.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">JP Camara</a> showed how to dinamically adjust retry behavior in Sidekiq</p><div class="image"><a class="image__link" href="https://bsky.app/profile/jpcamara.com/post/3macrsi7ka22w?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/10123d7c-e3be-4a67-a14d-0de146b2a463/image.png?t=1766175163"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/jpcamara.com/post/3macrsi7ka22w?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://jpcamara.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">jpcamara.com</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/jpcamara.com/post/3macrsjqwck2w?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/83da93ec-23f7-449c-acc2-e47c6f4e386e/image.png?t=1766175233"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/jpcamara.com/post/3macrsjqwck2w?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://jpcamara.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">jpcamara.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://twitter.com/HiSaeloun?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Saeloun</a> shared a code sample about Rails.event. For more details, check the blog post version → <a class="link" href="https://blog.saeloun.com/2025/12/18/rails-introduces-structured-event-reporting/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Rails 8.1 Introduces Structured Event Reporting with Rails.event</a></p><div class="image"><a class="image__link" href="https://x.com/HiSaeloun/status/2001652786098774126?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f2afc5f1-1efa-41a7-a9bf-851fc04cfe86/image.png?t=1766175862"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/HiSaeloun/status/2001652786098774126?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@HiSaeloun</a></p></span></div></div><p class="paragraph" style="text-align:left;">🖥️ <a class="link" href="https://ruby.social/@soulcutter?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Bradley Schaefer</a> shared a helper method to make Ruby procs readable in test output</p><div class="image"><a class="image__link" href="https://elk.zone/ruby.social/@soulcutter/115736441714692293?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4a2c573e-ce4b-443b-9c28-21eab3a8d0c3/image.png?t=1766244566"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="mailto:soulcutter@ruby.social" target="_blank" rel="noopener noreferrer nofollow">soulcutter@ruby.social</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="find-out-why-100-k-engineers-read-t">Find out why 100K+ engineers read The Code twice a week.</h3><div class="image"><a class="image__link" href="https://magic.beehiiv.com/v1/5f7ce6e3-9a71-416b-99a7-606c5f7e2447?email={{email}}&redirect_to=https%3A%2F%2Fcodenewsletter.ai%2Fforms%2F14166360-de71-46c4-8722-878d417fab5c&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_f2beeca6-9298-4421-9462-b59289abb73e_94e90c2e&bhcl_id=6b98daf7-3a65-4ebf-8dc6-df59acf1102d_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a15346a7-b9a1-4213-83b8-93791f7042b3/Get_curated_tech_news__top_research_papers___resources_in_2_short_weekly_emails_-_V6.jpg?t=1759254210"/></a></div><p class="paragraph" style="text-align:left;">That engineer who always knows what&#39;s next? This is their secret.</p><p class="paragraph" style="text-align:left;">Here&#39;s how you can get ahead too:</p><ul><li><p class="paragraph" style="text-align:left;">Sign up for The Code - tech newsletter read by 100K+ engineers</p></li><li><p class="paragraph" style="text-align:left;">Get latest tech news, top research papers & resources</p></li><li><p class="paragraph" style="text-align:left;">Become 10X more valuable</p></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://magic.beehiiv.com/v1/5f7ce6e3-9a71-416b-99a7-606c5f7e2447?email={{email}}&redirect_to=https%3A%2F%2Fcodenewsletter.ai%2Fforms%2F14166360-de71-46c4-8722-878d417fab5c&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_f2beeca6-9298-4421-9462-b59289abb73e_94e90c2e&bhcl_id=6b98daf7-3a65-4ebf-8dc6-df59acf1102d_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Join 100k+ engineers</a></p><hr class="content_break"><p class="paragraph" style="text-align:left;"></p><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">️</span>📐 <a class="link" href="https://x.com/eSquareDesign?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Errol Schmidt</a> shared some updates on various Rails versions</p><div class="image"><a class="image__link" href="https://x.com/eSquareDesign/status/2000679378905428430?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0b6362b0-d966-48f9-af3e-11987fc33e52/image.png?t=1766083365"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/eSquareDesign/status/2000679378905428430?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@eSquareDesign</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://boringrails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Matt Swanson</a> shared a product development strategy</p><div class="image"><a class="image__link" href="https://x.com/_swanson/status/2001035534789984402?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fff59df2-7430-49c2-bfe3-2621500e4a22/image.png?t=1766084160"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_swanson/status/2001035534789984402?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@_swanson</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://mensfeld.pl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Maciej Mensfeld</a> shared how micro-optimizations can make a difference. You can check here the optimization made by <a class="link" href="https://github.com/kyanagi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">kyanagi</a> → <a class="link" href="https://github.com/ruby/set/pull/39?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Speed up Set#flatten</a></p><div class="image"><a class="image__link" href="https://x.com/maciejmensfeld/status/2001637588256591985?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0a39cfc7-fb18-46fd-80a2-78e2e2c9ba1f/image.png?t=1766086272"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/maciejmensfeld/status/2001637588256591985?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@maciejmensfeld</a></p></span></div></div><p class="paragraph" style="text-align:left;">️️📐 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> shared that Basecamp&#39;s test suite runs in 48 seconds on SQLite, down from over a minute with MySQL</p><div class="image"><a class="image__link" href="https://x.com/dhh/status/2002159114806554905?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ce5740c7-cdc9-47e4-9f15-1d5b21c87e75/image.png?t=1766245925"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/2002159114806554905?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">📐 <a class="link" href="https://mensfeld.pl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Maciej Mensfeld</a> made an improvement on Date.ordinal and Date.commercial. For more details, you can check his PR → <a class="link" href="https://github.com/ruby/date/pull/152?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Optimize Gregorian date conversions with Neri-Schneider algorithm</a></p><div class="image"><a class="image__link" href="https://x.com/maciejmensfeld/status/2001670813204857195?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/212a21d8-7293-4877-8879-d7068ee38e14/image.png?t=1766175966"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/maciejmensfeld/status/2001670813204857195?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@maciejmensfeld</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">👉️ <a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> celebrated Ruby&#39;s 30th anniversary 🥳 </p><div class="image"><a class="image__link" href="https://x.com/rails/status/2001953538528952823?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f3efc962-aa54-401a-b745-dc2051a511e8/image.png?t=1766176741"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rails/status/2001953538528952823?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@rails</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://sumim.hatenablog.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Sumim</a> reflected on Ruby&#39;s 30th anniversary and its object-oriented design principles</p><div class="image"><a class="image__link" href="https://x.com/sumim/status/2002133501324505486?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0eefc131-c68f-4042-aed4-edc7748ccc1c/image.png?t=1766245808"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/sumim/status/2002133501324505486?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@sumim</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://kyrylo.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Kyrylo Silin</a> published a new repo <a class="link" href="https://github.com/kyrylo/weuserails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">https://github.com/kyrylo/weuserails.com</a></p><div class="image"><a class="image__link" href="https://github.com/kyrylo/weuserails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1248b535-d8f4-4475-8109-2e180c3c2323/image.png?t=1766389017"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/kyrylo/weuserails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">https://github.com/kyrylo/weuserails.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://x.com/kieranklaassen?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Kieran Klaassen</a> announced a new Claude Skill → <a class="link" href="https://github.com/EveryInc/compound-engineering-plugin/blob/main/plugins/compound-engineering/skills/dhh-rails-style/SKILL.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">dhh-rails-style skill</a></p><div class="image"><a class="image__link" href="https://x.com/kieranklaassen/status/2000694839651000445?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d980743d-a1ac-4ddb-8397-a34faa7c6f62/image.png?t=1766083572"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kieranklaassen/status/2000694839651000445?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@kieranklaassen</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://www.zolkos.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Rob Zolkos</a> made a new bash script → <a class="link" href="https://github.com/robzolkos/csscaffold?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">csscaffold</a> - <i>“This is not the greatest CSS framework in the world. It&#39;s just a tribute.“</i></p><div class="image"><a class="image__link" href="https://github.com/robzolkos/csscaffold?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c5a78790-609f-4b79-910e-8d9d854a00a8/image.png?t=1766083755"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/robzolkos/csscaffold?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">https://github.com/robzolkos/csscaffold</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://cengizg.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Cengiz Gürtusgil</a> completed the migration of FastRetro to Rails → <a class="link" href="https://github.com/JangoCG/fastretro?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">fastretro</a> - <i>“Retrospectives done right. Fast, straightforward and open source.“</i></p><div class="image"><a class="image__link" href="https://x.com/JangoCG/status/2001062899922436380?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/34b4a365-6b83-48b3-9b89-467e05f316a7/image.png?t=1766084434"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/JangoCG/status/2001062899922436380?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@JangoCG</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> announced a new update for Rails → <a class="link" href="https://github.com/rails/rails/pull/56350?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Rosa: Use a modern approach for cross-site request forgery protection</a></p><div class="image"><a class="image__link" href="https://x.com/dhh/status/2001067148253544886?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2c23bf0e-f83c-488a-b78e-faf03ad358db/image.png?t=1766084613"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/2001067148253544886?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a> added paid monthly subscriptions to Fizzy. Full implementation details can be visualized here → <a class="link" href="https://github.com/basecamp/fizzy-saas/pull/23?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Add monthly subscriptions</a></p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/2001331606439530752?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bc646470-40ae-4fab-9e3e-05aea530278e/image.png?t=1766085563"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/2001331606439530752?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/obie?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Obie Fernandez</a> announced a new version of <a class="link" href="https://github.com/OlympiaAI/raix?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">raix</a> - “Ruby AI eXtensions“</p><div class="image"><a class="image__link" href="https://x.com/obie/status/2001432762079678482?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4b9daf74-5d73-49a0-a44d-35c2f10a0ad2/image.png?t=1766086146"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/obie/status/2001432762079678482?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@obie</a></p></span></div></div><div class="image"><a class="image__link" href="https://github.com/OlympiaAI/raix?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/20623b2f-e286-4c4b-b2f7-8a07ae3b210b/image.png?t=1766086217"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/OlympiaAI/raix?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">https://github.com/OlympiaAI/raix</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://kddnewton.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Kevin Newton</a> announced a new version of <a class="link" href="https://github.com/ruby/prism?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">prism</a> - <i>“Prism Ruby parser“</i></p><div class="image"><a class="image__link" href="https://x.com/kddnewton/status/2001683848392736946?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9d9f44f6-8ab4-4943-b9d7-8ed5865c241c/image.png?t=1766176292"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kddnewton/status/2001683848392736946?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@kddnewton</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a> announced a new feature for Lexxy → <a class="link" href="http://github.com/basecamp/lexxy/pull/505?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Tables</a></p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/2001690967817015645?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/98c21f44-79a9-42c8-9c9d-99412961dc5a/image.png?t=1766176403"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/2001690967817015645?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/jeremyevans0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Jeremy Evans</a> announced a new version of <a class="link" href="https://github.com/jeremyevans/rodauth?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">rodauth</a> - <i>“Ruby&#39;s Most Advanced Authentication Framework“</i></p><div class="image"><a class="image__link" href="https://github.com/jeremyevans/rodauth/discussions/495?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d90f4632-ef49-4493-ae4f-841d27d26bb0/image.png?t=1766244751"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/jeremyevans/rodauth/discussions/495?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">https://github.com/jeremyevans/rodauth/discussions/495</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/jeremyevans0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Jeremy Evans</a> announced a new version of <a class="link" href="https://github.com/qrush/m?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">m</a> - <i>“A Test::Unit runner that can run tests by line number.“</i></p><div class="image"><a class="image__link" href="https://x.com/jeremyevans0/status/2002199769675149400?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c9b775c5-8e87-454e-b081-a3d0571a23d6/image.png?t=1766246127"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jeremyevans0/status/2002199769675149400?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@jeremyevans0</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Stephen Margheim</a> talked about the “no build“ philosophy</p><div class="image"><a class="image__link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3ma2i3n55et2m?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/81f570e2-9d8d-48fc-bfc4-95e85fdfbff1/image.png?t=1766081763"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3ma2i3n55et2m?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">fractaledmind.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/QuinnyPig?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Corey Quinn</a> shared his opinion on microservices</p><div class="image"><a class="image__link" href="https://x.com/QuinnyPig/status/1999595076776002028?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/61ce1ccd-031a-4951-9b02-147120457b51/image.png?t=1766082270"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/QuinnyPig/status/1999595076776002028?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@QuinnyPig</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/josevalim?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">José Valim</a> put into perspective these two abstractions: skills and subagents from Claude</p><div class="image"><a class="image__link" href="https://x.com/josevalim/status/2001033874348953661?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cc0e98a2-63dd-4e38-a1c5-f68d242aa40a/image.png?t=1766084012"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/josevalim/status/2001033874348953661?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@josevalim</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Stephen Margheim</a> discussed the drawbacks of common SVG icon approaches</p><div class="image"><a class="image__link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3ma7ezejqic23?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/54b8afed-70ad-437b-a409-604b0459eccf/image.png?t=1766082176"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3ma7ezejqic23?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">fractaledmind.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://bb.place?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Brian Bailey</a> shared about how product management is done at Basecamp</p><div class="image"><a class="image__link" href="https://x.com/bb/status/2001317387488866612?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0a6074fd-9a94-4440-9966-46fe18c19d5f/image.png?t=1766175507"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/bb/status/2001317387488866612?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@bb</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://fractaledmind.github.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Stephen Margheim</a> shared a CSS tip for adding breadcrumb separators using the “::after” pseudo-element</p><div class="image"><a class="image__link" href="https://x.com/fractaledmind/status/2001970799654363456?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/232967f1-0efd-4e1d-8410-d312114c4e1a/image.png?t=1766244914"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/fractaledmind/status/2001970799654363456?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@fractaledmind</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/fractaledmind/status/2001970799654363456?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6a6c9bdb-77e0-459e-8ac6-ad1ee48e3f2f/image.png?t=1766244922"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/fractaledmind/status/2001970799654363456?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@fractaledmind</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://platform.openai.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Open Ai Developers</a> announced that Codex supports skills</p><div class="image"><a class="image__link" href="https://x.com/OpenAIDevs/status/2002099762536010235?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d3a18cb-4a14-404f-944d-f252a86c15e0/image.png?t=1766245375"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/OpenAIDevs/status/2002099762536010235?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@OpenAIDevs</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://handyrailstips.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Gavin Morrice</a> shared about the importance of encapsulation</p><div class="image"><a class="image__link" href="https://x.com/MorriceGavin/status/2002119379157492057?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2b804ba1-f23d-4793-a955-95c05e554a39/image.png?t=1766245487"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/MorriceGavin/status/2002119379157492057?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">@MorriceGavin</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 Matt Solt published a new edition → <a class="link" href="https://rubyai.beehiiv.com/p/ruby-ai-news-december-19th-2025?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby AI News - December 19th, 2025</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new edition → <a class="link" href="https://rubyweekly.com/issues/780?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">It&#39;s the final issue of 2025 - maybe!</a></p><p class="paragraph" style="text-align:left;">🗞 This Week in Rails published a new edition → <a class="link" href="https://rubyonrails.org/2025/12/19/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails Luminary, modern approach to CSRF and more</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 Pablo published a new podcast episode → <a class="link" href="https://open.spotify.com/episode/0CnoEIlk2A1nAcFPoFTToK?si=I35wJZMdTHSQ-AkQqALZIg&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">26 - On OOP with Tim and Rob</a></p><p class="paragraph" style="text-align:left;">🎧 The Bike Shed published a new episode → <a class="link" href="https://bikeshed.thoughtbot.com/485?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">485: HTTP Basic Auth</a></p><p class="paragraph" style="text-align:left;">🎧 Remote Ruby published a new episode → J<a class="link" href="https://www.buzzsprout.com/2260490/episodes/18359780-jumpstart-pro-evolution-streamlining-rails-development?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">umpstart Pro Evolution - Streamlining Rails Development</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 37signals published a new video → <a class="link" href="https://www.youtube.com/watch?v=m90sl-Uvu0Y&t=4s&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">The Rails Delegated Type Pattern with Jeffrey Hardy</a></p><p class="paragraph" style="text-align:left;">🎥 Jorge Manrubia published a new video → <a class="link" href="https://www.youtube.com/watch?v=QNqmAxxKzp4&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">Addressing assorted Rails questions about Fizzy: testing, fixtures, AI, the view layer, and more.</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Andrey Samsonov published a new article about <a class="link" href="https://msg.samsonov.io/2025-12-15-fizzy-direct-resolve/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Notes on </a><code>direct</code><a class="link" href="https://msg.samsonov.io/2025-12-15-fizzy-direct-resolve/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow"> and </a><code>resolve</code><a class="link" href="https://msg.samsonov.io/2025-12-15-fizzy-direct-resolve/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow"> in Rails routing, via Fizzy</a></p><p class="paragraph" style="text-align:left;">🆕 Sharon Rosner published a new article about <a class="link" href="https://noteflakes.com/articles/2025-12-19-friday-update?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Threads vs Fibers - Can&#39;t We Be Friends?</a></p><p class="paragraph" style="text-align:left;">🆕 Vladimir Dementyev published a new article about <a class="link" href="https://evilmartians.com/chronicles/anycable-rails-and-the-pitfalls-of-llm-streaming?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">AnyCable, Rails, and the pitfalls of LLM-streaming</a></p><p class="paragraph" style="text-align:left;">🆕 <span style="color:rgb(0, 0, 0);">Michał łęcicki</span> published a new article about <a class="link" href="https://www.visuality.pl/posts/load_path_in_ruby_how_it_works?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How LOAD_PATH works in Ruby</a></p><p class="paragraph" style="text-align:left;">🆕 André Arko published a new article about <a class="link" href="https://andre.arko.net/2025/12/14/exec-vs-run/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Why are exec and run so confusing?</a></p><p class="paragraph" style="text-align:left;">🆕 Giménez Silva Germán Alberto published a new article about <a class="link" href="https://rubystacknews.com/2025/12/15/smart-test-suites-with-ruby/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Testing at scale eventually stops being a tooling problem and becomes a prioritization</a></p><p class="paragraph" style="text-align:left;">🆕 Greg Molnar published a new article about <a class="link" href="https://greg.molnar.io/blog/customizing-omarchy/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Customizing Omarchy with Ruby</a></p><p class="paragraph" style="text-align:left;">🆕 Jijo Bose published a new article about <a class="link" href="https://blog.saeloun.com/2025/12/17/rails-introduces-ci-to-streamline-new-dsl/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails 8.1 introduces bin/ci to standardize CI workflows with a new DSL</a> </p><p class="paragraph" style="text-align:left;">🆕 Amol Joshi Saeloun Blog published a new article about <a class="link" href="https://blog.saeloun.com/2025/12/18/rails-introduces-structured-event-reporting/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails 8.1 Introduces Structured Event Reporting with Rails.event</a></p><p class="paragraph" style="text-align:left;">🆕 Ben Sheldon published a new article about <a class="link" href="https://island94.org/2025/12/tricks-to-work-around-nested-form-elements-for-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Tricks to work around nested form elements, for Rails</a></p><p class="paragraph" style="text-align:left;">🆕 Justin Toniazzo published a new article about <a class="link" href="https://thoughtbot.com/blog/the-arrange-act-assert-pattern?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-162" target="_blank" rel="noopener noreferrer nofollow">The Arrange/Act/Assert pattern</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">DevelClan published a new article about <a class="link" href="https://develclan.com/open-closed-principle/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Open-Closed Principle</a></p><p class="paragraph" style="text-align:left;">Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/let-it-snow-stimulus/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Add snow to your app with Stimulus</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">Dave Mosher published a new article about <a class="link" href="https://testdouble.com/insights/anyone-can-code-software-is-having-its-ratatouille-moment?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Anyone can code: Software Is having Its Ratatouille moment</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=cfbbef0d-3939-467f-9980-091db2df831e&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 161</title>
  <description>The one where the date was announced for Rails World 2026, where Aaron Patterson showcased the performance of object allocation in Rails 4.0, where Cookpad share how Rails help them scale, and Fizzy got API support</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cad4d68f-ff5c-447a-ae6f-015157ced0d3/cover-page-edition-161.png" length="408541" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-161</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-161</guid>
  <pubDate>Mon, 15 Dec 2025 10:48:38 +0000</pubDate>
  <atom:published>2025-12-15T10:48:38Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad) </i><a class="link" href="https://www.europdf.eu/shortruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow"><i>EuroPDF</i></a><i> - try it for free</i></p><div class="image"><a class="image__link" href="https://www.europdf.eu/shortruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d6fe5b47-27d8-48dc-a04f-f2e1ccbced20/image.png?t=1765772589"/></a><div class="image__source"><span class="image__source_text"><p>Visit <a class="link" href="https://www.europdf.eu/shortruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">https://www.europdf.eu/shortruby</a> to try EuroPDF for free</p></span></div></div><p class="paragraph" style="text-align:left;">“We need this as a PDF.” – “Okay, that&#39;s fun and easy to implement” (said no developer ever).</p><p class="paragraph" style="text-align:left;"><b>What if you could create PDFs using powerful tools you already know, like modern HTML and CSS?</b></p><p class="paragraph" style="text-align:left;">That&#39;s exactly why we built EuroPDF. Our clients demanded PDFs, and we wanted to reuse designs we had already implemented for the web. Now you can too!</p><p class="paragraph" style="text-align:left;">Powered by the industry-leading PrinceXML rendering engine, simply use specialized CSS features to create beautiful documents for print – complete with page numbers, running headers, exact page sizes, and more. Make dealing with PDFs fun again!</p><p class="paragraph" style="text-align:left;">Use code <code>SHORTRUBY</code> on signup <b>to get 20% off any paid plan for the first year</b>. </p><div class="button" style="text-align:center;"><a target="_blank" rel="noopener nofollow noreferrer" class="button__link" style="" href="https://www.europdf.eu/shortruby/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161"><span class="button__text" style=""> Try EuroPDF for free! </span></a></div><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/tutec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Tute Costa</a> launched <a class="link" href="https://railspilot.ai/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">railspilot.ai</a></p><div class="image"><a class="image__link" href="https://x.com/tutec/status/1999117553315041729?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7dc08233-e59a-4eba-90b8-9f490d2d1850/image.png?t=1765630235"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/tutec/status/1999117553315041729?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@tutec</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/tutec/status/1999117553315041729?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2cc3150e-3cc1-453b-8c18-f324317a17ea/image.png?t=1765630263"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/tutec/status/1999117553315041729?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@tutec</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> announced the date for Rails World 2026. Check the blog post for more → <a class="link" href="https://rubyonrails.org/2025/12/11/rails-world-2026-update?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Rails World 2026 Update - Here’s what we know</a></p><div class="image"><a class="image__link" href="https://x.com/rails/status/1999172038703845440?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a0bca1b5-0e05-4c73-82b8-928fabe6cb66/image.png?t=1765631498"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rails/status/1999172038703845440?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@rails</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/blueridgeruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Blue Ridge Ruby</a> announced they’re returning in 2026 🥳 and today 15 December we will find mout more: </p><div class="image"><a class="image__link" href="https://x.com/blueridgeruby/status/1999510758481104963?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/18d72152-dd14-4491-a752-d4080b2c182a/image.png?t=1765632756"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/blueridgeruby/status/1999510758481104963?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@blueridgeruby</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉 ️<a class="link" href="https://bsky.app/profile/tenderlove.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Aaron Patterson</a> shared some insights about object allocation in Ruby 4.0 (read the <a class="link" href="https://skywriter.blue/pages/did:plc:3n6tlxabmocwe3nyl4b3rtjk/post/3m7vfv44nqc2y?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">thread here</a>):</p><div class="image"><a class="image__link" href="https://Source: [@tenderlove.dev](https://bsky.app/profile/tenderlove.dev/post/3m7vfv44nqc2y)" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/54de6c08-309f-457e-8883-3e1a5f400c91/image.png?t=1765706391"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/tenderlove.dev/post/3m7vfv44nqc2y?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://tenderlove.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">tenderlove.dev</a></p></span></div></div><div class="image"><a class="image__link" href="https://Source: [@tenderlove.dev](https://bsky.app/profile/tenderlove.dev/post/3m7vfv44nqc2y)" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5c0f5b69-e0b9-43cf-89cf-1bf97f75b445/image.png?t=1765706421"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/tenderlove.dev/post/3m7vfv44nqc2y?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://tenderlove.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">tenderlove.dev</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 A PR from <a class="link" href="https://github.com/rosa?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Rosa</a> was merged to Rails about <a class="link" href="https://github.com/rails/rails/pull/56350?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Use a modern approach for cross-site request forgery protection</a></p><div class="image"><a class="image__link" href="https://github.com/rails/rails/pull/56350?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a6965fe2-f9ab-4298-9164-039051e0a5da/image.png?t=1765773636"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/rails/rails/pull/56350?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://github.com/rails/rails/pull/56350</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Avo published a very cool tutorial about <a class="link" href="https://avohq.io/blog/building-an-audio-player-with-stimulusjs?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Building an Audio Player with StimulusJS</a></p><div class="image"><a class="image__link" href="https://avohq.io/blog/building-an-audio-player-with-stimulusjs?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8df49643-a931-4f5e-892c-1accc976377b/image.png?t=1765740174"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://avohq.io/blog/building-an-audio-player-with-stimulusjs?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">https://avohq.io/blog/building-an-audio-player-with-stimulusjs</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Stefanni Brasil published a new article about <a class="link" href="https://hexdevs.com/posts/higher-order-procedures-in-ruby/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Higher-order procedures in Ruby</a></p><div class="image"><a class="image__link" href="https://hexdevs.com/posts/higher-order-procedures-in-ruby/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4d090b25-ab99-4ac2-93ef-1478141df690/image.png?t=1765740561"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://hexdevs.com/posts/higher-order-procedures-in-ruby/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Higher-order procedures in Ruby</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Hans-Jörg Schnedlitz published a new article about <a class="link" href="https://blog.appsignal.com/2025/12/10/create-a-markdown-editor-in-ruby-on-rails.html?utm_source=blogpost&utm_medium=bluesky&utm_campaign=2025-12-10" target="_blank" rel="noopener noreferrer nofollow">Create a Markdown Editor in Ruby on Rails</a></p><div class="image"><a class="image__link" href="https://blog.appsignal.com/2025/12/10/create-a-markdown-editor-in-ruby-on-rails.html?utm_source=blogpost&utm_medium=bluesky&utm_campaign=2025-12-10" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1253440d-a83c-4b7f-ac68-e63762a54af8/image.png?t=1765741403"/></a><div class="image__source"><span class="image__source_text"><p>Source <a class="link" href="https://blog.appsignal.com/2025/12/10/create-a-markdown-editor-in-ruby-on-rails.html?utm_source=blogpost&utm_medium=bluesky&utm_campaign=2025-12-10" target="_blank" rel="noopener noreferrer nofollow">Create a Markdown Editor in Ruby on Rails</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Adrianna Chang published a new article about <a class="link" href="https://railsatscale.com/2025-12-08-swappable-migration-backends-in-rails/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails’s Swappable Migration Backend for Schema Changes at Scale</a></p><div class="image"><a class="image__link" href="https://railsatscale.com/2025-12-08-swappable-migration-backends-in-rails/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4b2d6120-0478-4167-bb03-d07e46c24817/image.png?t=1765741522"/></a><div class="image__source"><span class="image__source_text"><p>Source <a class="link" href="https://railsatscale.com/2025-12-08-swappable-migration-backends-in-rails/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails’s Swappable Migration Backend for Schema Changes at Scale</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;">️️💻 <a class="link" href="https://bsky.app/profile/kaspth.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Kasper Timm Hansen</a> shared a code snippet showing how to dynamically include ActiveModel attributes </p><div class="image"><a class="image__link" href="https://bsky.app/profile/kaspth.com/post/3m7mrxct4lk2i?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d1c88405-cf98-4bb5-89af-c26dfee97b33/image.png?t=1765619597"/></a><div class="image__source"><span class="image__source_text"><p>Source: @<a class="link" href="https://kaspth.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">kaspth.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Stephen Margheim</a> shared a tip on closing &lt;dialog&gt;s with the &#39; “closedby“ attribute</p><div class="image"><a class="image__link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3m7mvnljhup2i?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b10852b0-5eca-4964-8d63-4b1b8424efa3/image.png?t=1765620092"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3m7mvnljhup2i?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">fractaledmind.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/coorasse?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Alessandro Rodi</a> shared a piece of functionality that can be default in Rails</p><div class="image"><a class="image__link" href="https://x.com/coorasse/status/1997602104928764124?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6f00f05b-01a6-4506-89e0-f06824afa073/image.png?t=1765621125"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/coorasse/status/1997602104928764124?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@coorasse</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/dcyoung_dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">David</a> shared a Rails tip for implementing API token authentication</p><div class="image"><a class="image__link" href="https://x.com/dcyoung_dev/status/1997975835488186670?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/662d4326-58fd-4552-b75c-c09a66c3a6bb/image.png?t=1765621220"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dcyoung_dev/status/1997975835488186670?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@dcyoung_dev</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> made an important change with “has_secure_token“ being generated on :initialise by default</p><div class="image"><a class="image__link" href="https://x.com/rails/status/1998047996584317157?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3a14ffe2-40e2-4996-847b-3a10d7594a1d/image.png?t=1765621770"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rails/status/1998047996584317157?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@rails</a></p></span></div></div><p class="paragraph" style="text-align:left;">️️💻 <a class="link" href="https://twitter.com/skryukov_dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Svyatoslav Kryukov</a> shared how to use the new <a class="link" href="https://github.com/skryukov/alba-inertia?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">alba-inertia</a> gem</p><div class="image"><a class="image__link" href="https://x.com/skryukov_dev/status/1998120894837715435?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/96aa95c4-541c-470a-9455-3a8c94315243/image.png?t=1765622343"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/skryukov_dev/status/1998120894837715435?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@skryukov_dev</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/skryukov_dev/status/1998120894837715435?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/725a1b1f-2e85-4261-96bc-e4232e49566c/image.png?t=1765622352"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/skryukov_dev/status/1998120894837715435?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@skryukov_dev</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/skryukov_dev/status/1998120894837715435?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/52bc209c-31b4-4322-998c-e0c34d0051e9/image.png?t=1765623277"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/skryukov_dev/status/1998120894837715435?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@skryukov_dev</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://wintermeyer-consulting.de?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Stefan Wintermeyer</a> is running a Ruby40Advent showing various features of the language and community</p><div class="image"><a class="image__link" href="https://x.com/wintermeyer/status/1998286495938183191?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/27651275-bd7f-4938-83e0-ceed8121bebf/image.png?t=1765623421"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/wintermeyer/status/1998286495938183191?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@wintermeyer</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/ffaebi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Fabian</a> shared a Codex-generated code sample and asked his community if it&#39;s a valid Rails pattern</p><div class="image"><a class="image__link" href="https://x.com/ffaebi/status/1998311436536189194?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/305fe981-74d7-470c-871a-d2fb79e6f880/image.png?t=1765623918"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/ffaebi/status/1998311436536189194?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@ffaebi</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://saeloun.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">saeloun.com</a> shared a code sample and article about native composite keys in Rails 8: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/saeloun.com/post/3m7n63uo5ju22?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5c083dc5-eaa5-4aa6-9306-16209365be54/image.png?t=1765740343"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/saeloun.com/post/3m7n63uo5ju22?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://saeloun.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">saeloun.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://tend.cash?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">James Kerr</a> shared some ActiveRecords methods</p><div class="image"><a class="image__link" href="https://x.com/specialCaseDev/status/1998881795924972016?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cba25aee-8fa8-4b1f-ad07-516a6b7158e1/image.png?t=1765628784"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/specialCaseDev/status/1998881795924972016?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@specialCaseDev</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="why-ai-isnt-replacing-affiliate-mar">Why AI Isn’t Replacing Affiliate Marketing After All</h3><div class="image"><a class="image__link" href="https://get.levanta.io/ai?utm_source=beehiiv&utm_medium=paidnewsletter&utm_campaign={{publication_alphanumeric_id}}&utm_term=prospecting&utm_content=affiliate_ai_report_gated&_bhiiv=opp_f6b077f0-cf77-405d-bfdd-2325d224afeb_9dcd0883&bhcl_id=97f6b3fa-45e3-459d-b095-0369d3647386_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/80c9bf0d-b6e5-4e1d-b0a2-5dc3d3aee62e/new_banner_beehiiv.png?t=1764717549"/></a></div><p class="paragraph" style="text-align:left;">“AI will make affiliate marketing irrelevant.”</p><p class="paragraph" style="text-align:left;">Our <a class="link" href="https://get.levanta.io/ai?utm_source=beehiiv&utm_medium=paidnewsletter&utm_campaign={{publication_alphanumeric_id}}&utm_term=prospecting&utm_content=affiliate_ai_report_gated&_bhiiv=opp_f6b077f0-cf77-405d-bfdd-2325d224afeb_9dcd0883&bhcl_id=97f6b3fa-45e3-459d-b095-0369d3647386_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">research</a> shows the opposite.</p><p class="paragraph" style="text-align:left;">Shoppers use AI to explore options, but they trust creators, communities, and reviews before buying. With less than 10 percent clicking AI links, affiliate content now shapes both conversions and AI recommendations.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://get.levanta.io/ai?utm_source=beehiiv&utm_medium=paidnewsletter&utm_campaign={{publication_alphanumeric_id}}&utm_term=prospecting&utm_content=affiliate_ai_report_gated&_bhiiv=opp_f6b077f0-cf77-405d-bfdd-2325d224afeb_9dcd0883&bhcl_id=97f6b3fa-45e3-459d-b095-0369d3647386_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Download the full report</a></p><p class="paragraph" style="text-align:left;"></p><div class="section" style="background-color:#fff6e6;margin:0.0px 0.0px 0.0px 0.0px;padding:10.0px 10.0px 10.0px 10.0px;"><p class="paragraph" style="text-align:left;">(ad) - You can opt out of these ads by <a class="link" href="https://subscribe.shortruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">upgrading to a paid subscription</a> and join over 60 people who support the expenses for this newsletter</p></div><hr class="content_break"><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐️ <a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a> explained the two types of service objects in DDD</p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/1999602516397335014?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a582e171-4240-4f51-8c85-4c0614616d5e/image.png?t=1765706814"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/1999602516397335014?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/marckohlbrugge?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Marc Köhlbrugge</a> shared <a class="link" href="https://GUIDE.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">GUIDE.md</a> - The Unofficial 37signals/DHH Rails Style Guide</p><div class="image"><a class="image__link" href="https://gist.github.com/marckohlbrugge/d363fb90c89f71bd0c816d24d7642aca?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a11b14fb-1c2a-49b1-b9bf-7330064fbdbc/image.png?t=1765729986"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://gist.github.com/marckohlbrugge/d363fb90c89f71bd0c816d24d7642aca?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">https://gist.github.com/marckohlbrugge/d363fb90c89f71bd0c816d24d7642aca</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="free-private-email-that-puts-your-p">Free, private email that puts your privacy first</h3><div class="image"><a class="image__link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub={{campaign_id}}&aff_sub2=Concept1_Static1&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Secondary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_content={{campaign_id}}&utm_term=&utm_ads={{ad_copy_id}}&_bhiiv=opp_bd748359-0011-4dbd-84af-3e23d8a7fcbb_598ab766&bhcl_id=8cee1f61-0c59-493e-b64d-91ea38a4ddf2_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7b7c9424-2c93-4d55-915f-bc1fb9ec8b4b/01__1_.png?t=1761177498"/></a></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub={{campaign_id}}&aff_sub2=Concept1_Static1&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Secondary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_content={{campaign_id}}&utm_term=&utm_ads={{ad_copy_id}}&_bhiiv=opp_bd748359-0011-4dbd-84af-3e23d8a7fcbb_598ab766&bhcl_id=8cee1f61-0c59-493e-b64d-91ea38a4ddf2_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Proton Mail’s free plan</a> keeps your inbox private and secure—no ads, no data mining. Built by privacy experts, it gives you real protection with no strings attached.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub={{campaign_id}}&aff_sub2=Concept1_Static1&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Secondary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_content={{campaign_id}}&utm_term=&utm_ads={{ad_copy_id}}&_bhiiv=opp_bd748359-0011-4dbd-84af-3e23d8a7fcbb_598ab766&bhcl_id=8cee1f61-0c59-493e-b64d-91ea38a4ddf2_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Get free private email</a></p><hr class="content_break"><p class="paragraph" style="text-align:left;"></p><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://www.mikecoutermarsh.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Mike Coutermarsh</a> shared about using Rails at Github: </p><div class="image"><a class="image__link" href="https://x.com/mscccc/status/1999611820273729995?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/436f6496-ca20-468d-902f-995c988db284/image.png?t=1765736580"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mscccc/status/1999611820273729995?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@mscccc</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="http://github.com/jaredpalmer?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Jared Palmer</a> - SVP of @GitHub, VP CoreAI @Microsoft confirmed: </p><div class="image"><a class="image__link" href="https://x.com/jaredpalmer/status/1999985793419632733?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3b0b0eb2-12b0-4257-b2c1-3a6d0b42c143/image.png?t=1765737216"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jaredpalmer/status/1999985793419632733?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@jaredpalmer</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://allaboutcoding.ghinda.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Lucian Ghinda</a> shared about the <a class="link" href="https://docs.ruby-lang.org/en/master/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">new look of Ruby docs on master branch</a></p><div class="image"><a class="image__link" href="https://x.com/lucianghinda/status/1998309169775198280?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a7423b82-6238-4d6b-80b6-9bb9a7ba68e3/image.png?t=1765623711"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/lucianghinda/status/1998309169775198280?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@lucianghinda</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/lucianghinda/status/1998309169775198280?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0c938bbb-acd0-4671-ab28-28b964d973fa/image.png?t=1765623740"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/lucianghinda/status/1998309169775198280?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@lucianghinda</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> announced new documentation PRs → <a class="link" href="https://github.com/rails/rails/pull/56341?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Active Record Query Interface</a> and <a class="link" href="https://github.com/rails/rails/pull/56340?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Active Storage</a></p><div class="image"><a class="image__link" href="https://x.com/rails/status/1999144714285511053?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fefe54d2-d900-41e1-8d71-5ec475c70cb4/image.png?t=1765630867"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rails/status/1999144714285511053?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@rails</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;">❤️ Victoria Melnikova published a new article about <a class="link" href="https://evilmartians.com/chronicles/why-evil-martians-hosted-a-ruby-conference-in-san-francisco?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Why Evil Martians hosted a Ruby conference in San Francisco</a></p><div class="image"><a class="image__link" href="https://evilmartians.com/chronicles/why-evil-martians-hosted-a-ruby-conference-in-san-francisco?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1152c26c-4e51-474b-a6d1-6faab12be00d/image.png?t=1765740929"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://evilmartians.com/chronicles/why-evil-martians-hosted-a-ruby-conference-in-san-francisco?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Why Evil Martians hosted a Ruby conference in San Francisco</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://x.com/Noora_Web3?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">𝗡𝗢𝗥𝗔</a> shared that Rails is becoming the most complete web framework</p><div class="image"><a class="image__link" href="https://x.com/Noora_Web3/status/1998764152026968098?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3b549a02-4a82-42d3-b2bd-561b08fe2a3c/image.png?t=1765626365"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/Noora_Web3/status/1998764152026968098?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@Noora_Web3</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> shared an amazing story about how a migration helped cookpad</p><div class="image"><a class="image__link" href="https://x.com/rails/status/1998771574233563359?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/261090fe-608f-4375-9453-69abb2c71e46/image.png?t=1765626554"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rails/status/1998771574233563359?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@rails</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://x.com/eSquareDesign?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Errol Schmidt</a> shared how Rails is evolving and is easier to develop new projects</p><div class="image"><a class="image__link" href="https://x.com/eSquareDesign/status/1998877471224254635?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/91ff41eb-e24b-42a4-9373-fddf2ae3ae40/image.png?t=1765628567"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/eSquareDesign/status/1998877471224254635?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@eSquareDesign</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://www.zolkos.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Rob Zolkos</a> announced a new utility → <a class="link" href="https://github.com/robzolkos/fizzy-cli?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">fizzy-cli</a> - “A command-line interface for the Fizzy API.“</p><div class="image"><a class="image__link" href="https://github.com/robzolkos/fizzy-cli?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c06f0bfc-1d08-4af5-835f-e3b170747ebc/image.png?t=1765626891"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/robzolkos/fizzy-cli?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">https://github.com/robzolkos/fizzy-cli</a></p></span></div></div><p class="paragraph" style="text-align:left;">He created a couple of projects to help migration from other tasks management to Fizzy: <a class="link" href="https://github.com/robzolkos/gh2fizzy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Migrate GitHub Issues to Fizzy Cards </a>, <a class="link" href="https://github.com/robzolkos/linear2fizzy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Migrate Linear issues to Fizzy cards</a>, <a class="link" href="https://github.com/robzolkos/asana2fizzy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Migrate Asana Tasks to Fizzy Cards</a>, <a class="link" href="https://github.com/robzolkos/prd2fizzy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Convert Product Requirements Documents (PRDs) to Fizzy cards using Claude AI</a>, <a class="link" href="https://github.com/robzolkos/jira2fizzy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Migrate Jira Cloud issues to Fizzy Cards</a> and also <a class="link" href="https://github.com/robzolkos/fizzy-skill?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">created a Claude Code skill</a></p><p class="paragraph" style="text-align:left;">🆕 RailsDesigner published a new gem <a class="link" href="https://github.com/Rails-Designer/requestkit?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">requestkit</a> - &quot;Capture webhooks and send HTTP requests locally. Think <a class="link" href="https://webhook.site?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">webhook.site</a> meets Postman, but living on your machine where it belongs.&quot;</p><div class="image"><a class="image__link" href="https://github.com/Rails-Designer/requestkit?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c6f089c5-1788-49a2-9e92-27a319dbf807/image.png?t=1765770676"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/Rails-Designer/requestkit?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">https://github.com/Rails-Designer/requestkit</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://bsky.app/profile/intertwingly.net?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Sam Ruby</a> announced a new filter <a class="link" href="https://www.ruby2js.com/docs/filters/phlex?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Ruby2JS Phlex filter</a></p><div class="image"><a class="image__link" href="https://www.ruby2js.com/docs/filters/phlex?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2538c738-9010-42fa-a47d-719b6e49f97b/image.png?t=1765739727"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.ruby2js.com/docs/filters/phlex?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">https://www.ruby2js.com/docs/filters/phlex</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/Davidslv?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">David Silva</a> published a new project <a class="link" href="https://github.com/Davidslv/vanilla-roguelike?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Vanilla Roguelike - </a>“Vanilla is a roguelike game written in Ruby, inspired by the original 1980&#39;s Rogue game. It features procedurally generated mazes, player movement, and a flexible architecture based on the Entity-Component-System pattern with an event-driven system for logging and debugging”</p><div class="image"><a class="image__link" href="https://github.com/Davidslv/vanilla-roguelike?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/02d9e84f-2186-4f3d-ac8f-8437958ebb9f/image.png?t=1765786880"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/Davidslv/vanilla-roguelike?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">https://github.com/Davidslv/vanilla-roguelike</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/ThibautBaissac?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Thibaut Baissac</a> published a repo with <a class="link" href="https://github.com/ThibautBaissac/rails_ai_agents?tab=readme-ov-file&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Rails 8 AI Agent Suite</a></p><div class="image"><a class="image__link" href="https://github.com/ThibautBaissac/rails_ai_agents?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9e8b1baf-52ea-4c06-8c76-0397bc3a306f/image.png?t=1765792507"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/ThibautBaissac/rails_ai_agents?tab=readme-ov-file&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">https://github.com/ThibautBaissac/rails_ai_agents</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/DmitrySychev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Dmitry Sychev</a> published a new gem <b><a class="link" href="https://github.com/AxiumFoundry/llm_classifier?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">llm_classifier</a></b><span style="color:rgb(0, 0, 0);font-size:medium;"> </span><span style="color:rgb(0, 0, 0);">- </span><span style="color:rgb(0, 0, 0);"><i>&quot;A flexible Ruby gem for building LLM-based classifiers. Define categories, system prompts, and domain knowledge using a clean DSL. Supports multiple LLM backends (ruby_llm, OpenAI, Anthropic) and integrates seamlessly with Rails.&quot;</i></span></p><div class="image"><a class="image__link" href="https://github.com/AxiumFoundry/llm_classifier?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/273fe3cf-34d5-4a34-8218-e94954496df2/image.png?t=1765792691"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/AxiumFoundry/llm_classifier?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">https://github.com/AxiumFoundry/llm_classifier</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://github.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> announced that Fizzy now has an API - <a class="link" href="https://github.com/basecamp/fizzy/pull/1766?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Add basic API</a> (read <a class="link" href="https://github.com/basecamp/fizzy/blob/main/docs/API.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">the docs here</a>)</p><div class="image"><a class="image__link" href="https://github.com/basecamp/fizzy/pull/1766?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c99893c9-5613-46f9-9e8c-286e6c80da6c/image.png?t=1765791648"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/basecamp/fizzy/pull/1766?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">https://github.com/basecamp/fizzy/pull/1766</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://x.com/rubymine?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Jet Brains Ruby Mine</a> announced <a class="link" href="https://blog.jetbrains.com/ruby/2025/12/rubymine-2025-3-multi-agent-ai-chat-rails-aware-mcp-server-faster-multi-module-projects-startup-and-more/?utm_campaign=rubymine&utm_content=2025.3&utm_medium=social&utm_source=twitter&utm_term=release" target="_blank" rel="noopener noreferrer nofollow">a new release</a></p><div class="image"><a class="image__link" href="https://x.com/rubymine/status/1998014242381844961?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d8c41180-56ac-46e4-a245-99676db8da57/image.png?t=1765621424"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rubymine/status/1998014242381844961?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@rubymine</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://vicente.services?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Vicente Reig Rincón De Arellano</a> announced a new version of <a class="link" href="https://github.com/vicentereig/dspy.rb?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">dspy.rb</a> - “The Ruby framework for programming—rather than prompting—language models.“</p><div class="image"><a class="image__link" href="https://github.com/vicentereig/dspy.rb/releases/tag/v0.32.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/402276fe-0ba3-4d1c-8cd7-bf5963206b84/image.png?t=1765625446"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/vicentereig/dspy.rb/releases/tag/v0.32.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">https://github.com/vicentereig/dspy.rb/releases/tag/v0.32.0</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://bsky.app/profile/eregon.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Benoit Daloze</a> announced an update for <a class="link" href="https://github.com/ruby-concurrency/concurrent-ruby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">concurrent-ruby</a> - “Modern concurrency tools including agents, futures, promises, thread pools, supervisors, and more. Inspired by Erlang, Clojure, Scala, Go, Java, JavaScript, and classic concurrency patterns.“</p><div class="image"><a class="image__link" href="https://bsky.app/profile/eregon.bsky.social/post/3m7unjdqy2k2n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/63a9d39f-e67a-4ded-ac94-7ae61f5933f9/image.png?t=1765705128"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/eregon.bsky.social/post/3m7unjdqy2k2n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://eregon.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">eregon.bsky.social</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://blog.staysaasy.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Staysaasy</a> wrote a tip for individual contributors</p><div class="image"><a class="image__link" href="https://x.com/staysaasy/status/1998360567556256040?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ad7220a5-48f0-41ff-8f6f-88a264243899/image.png?t=1765624084"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/staysaasy/status/1998360567556256040?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@staysaasy</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="http://claude.ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Claude</a> shared a new capability of tasks</p><div class="image"><a class="image__link" href="https://x.com/claudeai/status/1998830341021380875?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/811826f8-99b6-4f00-8798-13fd42cb9edb/image.png?t=1765627203"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/claudeai/status/1998830341021380875?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@claudeai</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://bsky.app/profile/jensimmons.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Jen Simmon</a> shared a new release of <a class="link" href="https://webkit.org/blog/17640/webkit-features-for-safari-26-2/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Safari 26.2</a>:</p><div class="image"><a class="image__link" href="https://bsky.app/profile/jensimmons.bsky.social/post/3m7sqmvmbbk2c?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/895a8e41-c3b8-4ce9-adcd-08d3b11b3031/image.png?t=1765704684"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/jensimmons.bsky.social/post/3m7sqmvmbbk2c?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://jensimmons.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">jensimmons.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Stephen Margheim</a> shared a simple accessibility audit tip</p><div class="image"><a class="image__link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3m7vduxrcwu2z?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/28842ae7-ae6f-441d-ac77-2ae1b97edf91/image.png?t=1765705302"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3m7vduxrcwu2z?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">fractaledmind.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/simonw?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Simon Willison</a> shared that OpenAI is silently adopting “skills“</p><div class="image"><a class="image__link" href="https://x.com/simonw/status/1999623295046664294?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/95774634-bf87-4006-934a-8191bce38483/image.png?t=1765707003"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/simonw/status/1999623295046664294?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">@simonw</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 Ruby On Rails published a new edition → <a class="link" href="https://rubyonrails.org/2025/12/12/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">&#39;Tis the season for contributing to Rails</a></p><p class="paragraph" style="text-align:left;">🗞 Hotwire Weekly published a new edition → <a class="link" href="https://www.hotwireweekly.com/archive/week-49-vanilla-css-ui-affordances/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Week 49 - Vanilla CSS, Fizzy, UI Affordances, and more!</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new edition → <a class="link" href="https://rubyweekly.com/issues/779?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Visualizing what ZJIT does when compiling Ruby</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 Ruby on Rails published a new podcast episode → <a class="link" href="https://www.youtube.com/watch?v=ujBS_lN6Dsw&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Jay Tennier: How Testing Platform Rainforest QA Tests Itself</a></p><p class="paragraph" style="text-align:left;">🎧 IndieRails published a new podcast episode → <a class="link" href="https://www.indierails.com/69?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Ernesto Tagwerker - OmbuLabs on AI</a></p><p class="paragraph" style="text-align:left;">🎧 Maintainable Software Podcast published a new podcast episode → <a class="link" href="https://maintainable.fm/episodes/kent-l-beck-youre-ignoring-optionality-and-paying-for-it?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Kent L Beck: You’re Ignoring Optionality… and Paying for It</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Brad Gessler published a new video → <a class="link" href="https://beautifulruby.com/phlex/components/inheritance?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Inheritance</a></p><p class="paragraph" style="text-align:left;">🎥 Beautiful Ruby published a new video → <a class="link" href="https://www.youtube.com/watch?v=zQoL3fB-mWk&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Fizzy SaaS, Fizzy&#39;s mysterious cousin & Queen Bee&#39;s niece: Read The Friendly Source Code</a></p><p class="paragraph" style="text-align:left;">🎥 Pete Hawkins published a new video → <a class="link" href="https://www.youtube.com/watch?v=qApVhG4tcYA&list=PL2OcwqOUtdpAfQu7utCaM0Q-9ynAfy6c3&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Rails twitter clone - Part 1</a></p><p class="paragraph" style="text-align:left;">🎥 Joe Masilotti published a new video → <a class="link" href="https://newsletter.masilotti.com/p/missed-the-fizzy-livestream-heres?utm_source=app-post-stats-page&r=9nfdo&utm_medium=ios&triedRedirect=true" target="_blank" rel="noopener noreferrer nofollow">Missed the Fizzy livestream? Here’s the recap.</a></p><p class="paragraph" style="text-align:left;">🎥 Jorge Manrubia published a new video → <a class="link" href="https://www.youtube.com/watch?v=dvPXFnX60cg&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">How we architect Rails apps at 37signals: a Fizzy tour.</a></p><p class="paragraph" style="text-align:left;">🎥 Dave Kimura published a new video → <a class="link" href="https://www.driftingruby.com/episodes/cool-things-in-fizzy?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Cool Things in Fizzy</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Adrianna Chang published a new article about <a class="link" href="https://railsatscale.com/2025-12-08-swappable-migration-backends-in-rails/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails’s Swappable Migration Backend for Schema Changes at Scale</a></p><p class="paragraph" style="text-align:left;">🆕 Amol Joshi published a new article about <a class="link" href="https://blog.saeloun.com/2025/12/10/evolution-of-rails-composite-keys/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Rails Native Composite Primary Keys: A Complete Evolution from Rails 3 to Rails 8</a></p><p class="paragraph" style="text-align:left;">🆕 Radan Skoric published a new article about <a class="link" href="https://radanskoric.com/articles/frozen-test-fixtures?utm_source=bsky&utm_medium=social&utm_campaign=frozen-test-fixtures" target="_blank" rel="noopener noreferrer nofollow">Why frozen test fixtures are a problem on large projects and how to avoid them</a></p><p class="paragraph" style="text-align:left;">🆕 Daniela Baron published a new article about <a class="link" href="https://danielabaron.me/blog/sustainable-feature-testing-in-rails-with-cucumber/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Sustainable Feature Testing in Rails with Cucumber</a></p><p class="paragraph" style="text-align:left;">🆕 Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/saas/comparable-integers/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">More readable integer comparisons in Ruby</a></p><p class="paragraph" style="text-align:left;">🆕 Alexey Varfolomeev published a new article about <a class="link" href="https://blog.jetbrains.com/ruby/2025/12/rubymine-2025-3-multi-agent-ai-chat-rails-aware-mcp-server-faster-multi-module-projects-startup-and-more/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RubyMine 2025.3: Multi-Agent AI Chat, Rails-Aware MCP Server, Faster Multi-Module Projects Startup, and More</a></p><p class="paragraph" style="text-align:left;">🆕 Stefanni Brasil published a new article about <a class="link" href="https://hexdevs.com/posts/higher-order-procedures-in-ruby/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Higher-order procedures in Ruby</a></p><p class="paragraph" style="text-align:left;">🆕 Rob Zolkos published a new article about <a class="link" href="https://www.zolkos.com/2025/12/08/fizzy-design-evolution-a-flipbook-from-git?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Fizzy Design Evolution: A Flipbook from Git</a></p><p class="paragraph" style="text-align:left;">🆕 Mario Alberto Chávez published an article about <a class="link" href="https://mariochavez.io/desarrollo/2025/12/10/rails-mcp-server-context-efficient-refactoring/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails MCP Server: Context-Efficient Tool Architecture | Mario Alberto Chávez</a></p><p class="paragraph" style="text-align:left;">🆕 Josef Strzibny published a new article about <a class="link" href="https://testdrivingrails.com/blog/fizzy-test-suite?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Lessons learned from studying Fizzy test suite</a> </p><p class="paragraph" style="text-align:left;">🆕 Rob Zolkos published a new article about <a class="link" href="https://www.zolkos.com/2025/12/10/fizzys-pull-requests?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Fizzy&#39;s Pull Requests: Who Built What and How</a></p><p class="paragraph" style="text-align:left;">🆕 Julik Tarkhanov published a new article about <a class="link" href="https://blog.julik.nl/2025/12/a-trap-with-global-ids?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Making Rails Global IDs safer</a></p><p class="paragraph" style="text-align:left;">🆕 Jared White published a new article about <a class="link" href="https://www.fullstackruby.dev/ruby-infrastructure/2025/12/08/rv-making-swift-progress/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The “rv” Tool is Making Swift Progress, Becoming a Must-Have for Rubyists</a></p><p class="paragraph" style="text-align:left;">🆕 Mintbit published a new article about <a class="link" href="https://www.mintbit.com/blog/send-emails-in-bulk-with-deliver-all-later/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Send Emails in Bulk with deliver_all_later</a> and about <a class="link" href="https://www.mintbit.com/blog/rails-8-dot-1-open-error-files-directly-in-your-favorite-editor/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails 8.1: Open Error Files Directly in Your Favorite Editor</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">📝 Avo published a new article about <a class="link" href="https://avohq.io/blog/building-an-audio-player-with-stimulusjs?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">Building an Audio Player with StimulusJS</a></p><p class="paragraph" style="text-align:left;">📝 Greg Molnar published a new article about <a class="link" href="https://greg.molnar.io/blog/customizing-omarchy/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Customizing Omarchy with Ruby</a></p><p class="paragraph" style="text-align:left;">📝 Hans-Jörg Schnedlitz published a new article about <a class="link" href="https://blog.appsignal.com/2025/12/10/create-a-markdown-editor-in-ruby-on-rails.html?utm_source=blogpost&utm_medium=bluesky&utm_campaign=2025-12-10" target="_blank" rel="noopener noreferrer nofollow">Create a Markdown Editor in Ruby on Rails</a></p><p class="paragraph" style="text-align:left;">📝 Josef Strzibny published a new article about <a class="link" href="https://businessclasskit.com/blog/admin-gems-for-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to choose the right admin gem for your Rails application</a></p><p class="paragraph" style="text-align:left;">📝 Felice Forby published a new article about <a class="link" href="https://feliceforby.com/posts/honeybadger-deployment-tracking-for-rails-with-kamal-and-doppler?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Honeybadger deployment tracking for Rails with Kamal and Doppler</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">✍️ Obie Fernandez published a new article about <a class="link" href="https://obie.medium.com/what-happens-when-the-coding-becomes-the-least-interesting-part-of-the-work-ab10c213c660?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-161" target="_blank" rel="noopener noreferrer nofollow">What happens when the coding becomes the least interesting part of the work</a></p><p class="paragraph" style="text-align:left;">✍️ Matt Swanson published a new article about <a class="link" href="https://mdswanson.com/blog/2025/12/12/year-in-review-2025.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">My Year in Review: 2025</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=2fa4d05b-6280-4126-9995-5e1714801b22&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 160</title>
  <description>37 Signals launches Fizzy, Bridgetown announces 2.1 beta 1, Bundle 4.0 is released, Wired wrote a strange article about Ruby, and Errol Schmidt published their Survey Results with Ruby/Rails leaders.</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ee455cb1-ea6a-4676-968a-9a1331154ba1/cover-page-edition-160.png" length="374727" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-160</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-160</guid>
  <pubDate>Mon, 08 Dec 2025 11:18:07 +0000</pubDate>
  <atom:published>2025-12-08T11:18:07Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;"><b>In partnership with</b></p><div class="image"><a class="image__link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3c6f9a95-fe23-449d-b20a-6ed4d03f6755/Asset_1_2x-8.png?t=1761973690"/></a><div class="image__source"><span class="image__source_text"><p>This edition is sponsored by <a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Undercover CI</a>, the Ruby coverage toolkit ready for the vibe coding era.</p></span></div></div><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><div class="image"><a class="image__link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8271b1d5-ee5c-4a96-b783-5838ab796f2b/image.png?t=1761973327"/></a><div class="image__source"><span class="image__source_text"><p><a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">undercover-ci.com</a> - Ruby test coverage ready for the vibe coding era</p></span></div></div><p class="paragraph" style="text-align:left;"><b>Undercover CI for GitHub</b> finds untested code in your pull requests. Fill gaps that slip through percentage metrics. Ship confidently. Thrive in the vibe coding era.</p><p class="paragraph" style="text-align:left;"><b>Get started on </b><b><a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">undercover-ci.com</a></b> or check out the <b><a class="link" href="https://github.com/twitchy-tortoise/undercover-test/pull/57/checks?check_run_id=37501520147&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">demo pull request</a></b>. Get 50% off your first month by entering <code>SHORTRUBY</code> at checkout (valid till end of December).</p><div class="button" style="text-align:center;"><a target="_blank" rel="noopener nofollow noreferrer" class="button__link" style="" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160"><span class="button__text" style=""> Start with Undercover CI </span></a></div><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/sandimetz?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Sandi Metz</a> announced a discount for the following books: Practical Object-Oriented Design 1 and 99 Bottles of OOP</p><div class="image"><a class="image__link" href="https://x.com/sandimetz/status/1996628082778878296?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7d3a5472-c241-4dd0-b6ac-310a31e8666d/image.png?t=1765101856"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/sandimetz/status/1996628082778878296?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@sandimetz</a></p></span></div></div><div class="image"><a class="image__link" href="https://sandimetz.com/birthday?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2bc6d76c-ffd4-4b38-85fd-2dd3a5c0b750/image.png?t=1765101943"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://sandimetz.com/birthday?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://sandimetz.com/birthday</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://x.com/jasonfried?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Jason Fried</a> announced the launch of <a class="link" href="https://www.fizzy.do/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">FIZZY</a> - here is a screenshot of a part of the announcement. Read<a class="link" href="https://threadreaderapp.com/thread/1995886683028685291.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow"> the full announcement here</a> and checkout the code at <a class="link" href="https://github.com/basecamp/fizzy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://github.com/basecamp/fizzy</a></p><div class="image"><a class="image__link" href="https://x.com/jasonfried/status/1995886683028685291?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/317403cb-915f-4e20-9637-537a27c20e1b/image.png?t=1765046293"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jasonfried/status/1995886683028685291?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@jasonfried</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/jasonfried/status/1995886683028685291?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/139069e4-c990-4b27-bc55-d7e790d1ace6/image.png?t=1765046310"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jasonfried/status/1995886683028685291?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@jasonfried</a></p></span></div></div><p class="paragraph" style="text-align:left;">We collected all resources about Fizzy (the open source model, future of ONCE, technical walkthroughs …) in a section called <a class="link" href="#all-about-fizzy" rel="noopener noreferrer nofollow">All about Fizzy</a> - <a class="link" href="#all-about-fizzy" rel="noopener noreferrer nofollow">click</a> to go directly there or keep scrolling and you will reach it. </p><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://krug.org.pl/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Krakow Ruby Users Group (Krug)</a> announced a new meetup → <a class="link" href="https://luma.com/h88a7slr?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">KRUG #5 2025</a></p><div class="image"><a class="image__link" href="https://x.com/krug_pl/status/1995882299838398778?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8347af55-ab26-4be9-8f7b-01c261f1612a/image.png?t=1765046209"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/krug_pl/status/1995882299838398778?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@krug_pl</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://x.com/tropical_rb?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Tropical.Rb</a> is looking for speakers for the next year event → <a class="link" href="https://cfp.tropicalonrails.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Call for Proposals - Tropical on Rails 26</a></p><div class="image"><a class="image__link" href="https://x.com/tropical_rb/status/1996550578848284992?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0c09da42-635e-4728-aba9-6bca64dcc185/image.png?t=1765047869"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/tropical_rb/status/1996550578848284992?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@tropical_rb</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/tropical_rb/status/1996550578848284992?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6a1fa51f-6961-4fca-8e3f-4c218267a07a/image.png?t=1765047884"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/tropical_rb/status/1996550578848284992?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@tropical_rb</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://bsky.app/profile/hsbt.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Hiroshi Shibata</a> anounced two blog post for the release of Ruby 4.0.0 → <a class="link" href="https://blog.rubygems.org/2025/12/03/4.0.0-released.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">4.0.0 Released</a> and <a class="link" href="https://blog.rubygems.org/2025/12/03/upgrade-to-rubygems-bundler-4.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Upgrading to RubyGems/Bundler 4</a></p><div class="image"><a class="image__link" href="https://blog.rubygems.org/2025/12/03/4.0.0-released.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5a94ae25-bcaa-4569-9dc9-48080693140e/image.png?t=1765044495"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://blog.rubygems.org/2025/12/03/4.0.0-released.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://blog.rubygems.org/2025/12/03/4.0.0-released.html</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Jared White announced Bridgetown 2.1 Beta 1 → <a class="link" href="https://www.bridgetownrb.com/release/bridgetown-2-1-beta-1-festive-river-city/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">’Tis the Season to Be Jolly with Bridgetown 2.1 Beta 1</a></p><div class="image"><a class="image__link" href="https://github.com/bridgetownrb/bridgetown/releases/tag/v2.1.0.beta1?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8fb8c9ba-52f2-44d8-8b5c-3dd8975a2028/image.png?t=1765101483"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/bridgetownrb/bridgetown/releases/tag/v2.1.0.beta1?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://github.com/bridgetownrb/bridgetown/releases/tag/v2.1.0.beta1</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><div class="image"><a class="image__link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3dde1b14-5a07-43ba-97ee-293d4fe0eb79/undercover-plain-trimmed.gif?t=1765182788"/></a><div class="image__source"><span class="image__source_text"><p>Undercover understands your code structure and displays actionable warnings without unnecessary noise. <a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://undercover-ci.com</a></p></span></div></div><p class="paragraph" style="text-align:left;"><b>The Undercover gem integrates with coding agents like Claude Code and your CI pipeline</b>: shift left, wire up local coverage checks for fast feedback, catch gaps directly in GitHub PRs to ensure consistency and ship confidently.</p><p class="paragraph" style="text-align:left;">Get 50% off your first month with code <code>SHORTRUBY</code> at checkout (valid till the end of December). <b>Learn more and get started at </b><b><a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">undercover-ci.com</a></b><b>.</b></p><hr class="content_break"><p class="paragraph" style="text-align:left;">👉 This edition includes two sections where we groupped two topics that were discussed at length in your community and you can jump directly to them: </p><ul><li><p class="paragraph" style="text-align:left;">The launch of Fizzy by 37 Signals - <a class="link" href="#all-about-fizzy" rel="noopener noreferrer nofollow">Jump to the section</a></p></li><li><p class="paragraph" style="text-align:left;">The weird <a class="link" href="http://Wired.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Wired.com</a> article about Ruby - <a class="link" href="#weirdwiredarticle" rel="noopener noreferrer nofollow">Jump to the section</a></p></li></ul><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://alchemists.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Brooke Kuhlmann</a> published a tutorial about configuring <a class="link" href="https://alchemists.io/articles/hanami_with_sidekiq?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Hanami to work with Sidekiq</a></p><div class="image"><a class="image__link" href="https://alchemists.io/articles/hanami_with_sidekiq?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5838d2af-ddde-4b80-a1f1-4bf1b8c2707d/image.png?t=1765183186"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://alchemists.io/articles/hanami_with_sidekiq?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://alchemists.io/articles/hanami_with_sidekiq</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://davidmles.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">David Morales</a> published an article about <a class="link" href="https://develclan.com/value-objects-ruby-idiomatic-way/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Value Objects in Ruby: The Idiomatic Way</a> (hint it uses <a class="link" href="https://docs.ruby-lang.org/en/master/Data.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">the Data object</a>)</p><div class="image"><a class="image__link" href="https://develclan.com/value-objects-ruby-idiomatic-way/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a11c04ee-c0b9-43db-a90d-942ac48d7044/image.png?t=1765186171"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://develclan.com/value-objects-ruby-idiomatic-way/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://develclan.com/value-objects-ruby-idiomatic-way</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://x.com/eSquareDesign?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Errol Schmidt</a> published their Survey Results with Ruby/Rails leaders - <a class="link" href="https://www.youtube.com/watch?v=glVbO6Trsfs&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Watch it on Youtube here</a></p><div class="image"><a class="image__link" href="https://x.com/eSquareDesign/status/1996108307963281743?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/32e31264-4987-4e6a-a4f3-eff7c7c74bd8/image.png?t=1765046851"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/eSquareDesign/status/1996108307963281743?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@eSquareDesign</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">️💻</span><span style="color:rgb(0, 0, 0);font-size:medium;"> </span>️<a class="link" href="https://bsky.app/profile/stefannibrasil.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Stefanni Brasil</a> shared how you can share a piece of Ruby code alongside it’s test</p><div class="image"><a class="image__link" href="https://bsky.app/profile/stefannibrasil.me/post/3m6xops24ac2p?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b42bc383-7420-4a48-90ce-a497b77ad3b9/image.png?t=1765044248"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/stefannibrasil.me/post/3m6xops24ac2p?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://stefannibrasil.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">stefannibrasil.me</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://x.com/meerzulee?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Meerzulee</a> shared how to configure a full stack project</p><div class="image"><a class="image__link" href="https://x.com/meerzulee/status/1995076013370532017?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ecaa0bf0-6bf4-4256-a2b2-1045628bb565/image.png?t=1765045159"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/meerzulee/status/1995076013370532017?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@meerzulee</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> added an improvement to enums: built-on validation</p><div class="image"><a class="image__link" href="https://x.com/rails/status/1995864760965881945?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e178d164-f70c-4038-8c09-38a33e48ea4a/image.png?t=1765046132"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rails/status/1995864760965881945?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@rails</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://mhenrixon.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Mika Henriksson</a> shared a code sample about the “with“ method in CurrentAttributes</p><div class="image"><a class="image__link" href="https://x.com/mhenrixon/status/1995951412866678880?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/96e6eb94-5485-49c9-9452-b0b6b59fbc55/image.png?t=1765101756"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mhenrixon/status/1995951412866678880?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@mhenrixon</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐️ <a class="link" href="https://tend.cash?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">James Kerr</a> asked his community about which one of the following variants they prefer</p><div class="image"><a class="image__link" href="https://x.com/specialCaseDev/status/1995571866006958263?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a65083d9-1f67-47b2-bb00-38eecc255dd5/image.png?t=1765045747"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/specialCaseDev/status/1995571866006958263?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@specialCaseDev</a></p></span></div></div><p class="paragraph" style="text-align:left;">He got some replies:</p><div class="image"><a class="image__link" href="https://x.com/bradgessler/status/1995633133988049292?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bfd5cefa-3bc9-4333-870e-18d19e567d0c/image.png?t=1765045829"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/bradgessler/status/1995633133988049292?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://x.com/bradgessler/status/1995633133988049292</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/MichaelDChaney/status/1995601625181028627?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f6c37604-48c5-4cd2-981e-ccbd392bc07b/image.png?t=1765045870"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/MichaelDChaney/status/1995601625181028627?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://x.com/MichaelDChaney/status/1995601625181028627</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/juliknl/status/1995924168471449870?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/eca2260b-5471-4016-9753-030cf1423250/image.png?t=1765046733"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/juliknl/status/1995924168471449870?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@juliknl</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/marcoroth_?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Marco Roth</a> shared a new insight for the new version of HERB</p><div class="image"><a class="image__link" href="https://x.com/marcoroth_/status/1996290586874408969?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ed856195-7a1d-430b-8c8a-7e164fbe5ba7/image.png?t=1765047264"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/marcoroth_/status/1996290586874408969?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@marcoroth_</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/yarotheslav?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Yaroslav Shmarov</a> created some extensions for simple_form. More can be checked on his latest PR → <a class="link" href="https://github.com/yshmarov/moneygun/pull/310/files?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Simple form character counter component</a></p><div class="image"><a class="image__link" href="https://x.com/yarotheslav/status/1997353416557752767?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/65e7298f-fe86-4bbe-a19b-3b4984835ab3/image.png?t=1765102155"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/yarotheslav/status/1997353416557752767?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@yarotheslav</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/AdamMusaAly?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Adam</a> shared he succeeded to develop mobile apps using Ruby runtime</p><div class="image"><a class="image__link" href="https://x.com/AdamMusaAly/status/1995491866498761089?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f2ec485b-d0e1-4674-a2f1-daea53dd48eb/image.png?t=1765045394"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/AdamMusaAly/status/1995491866498761089?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@AdamMusaAly</a></p></span></div></div><p id="all-about-fizzy" class="paragraph" style="text-align:left;">💡There were a lot of resources shared about the new tool they launched <a class="link" href="https://www.fizzy.do?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Fizzy.do</a></p><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> shared on what license Fizzy is released</p><div class="image"><a class="image__link" href="https://x.com/dhh/status/1995893306681610256?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8786460a-39fd-43bf-97d2-f2dda9b3772e/image.png?t=1765046402"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/1995893306681610256?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://x.com/jasonfried?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Jason Fried</a> talked about the strategy of Fizzy</p><div class="image"><a class="image__link" href="https://x.com/jasonfried/status/1996245550006497591?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/394e5a89-f5c0-4cfe-b231-7b2bc13703ce/image.png?t=1765047083"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jasonfried/status/1996245550006497591?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@jasonfried</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> shared the SaaS version of Fizzy → <a class="link" href="https://github.com/basecamp/fizzy-saas?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">fizzy-saas</a></p><div class="image"><a class="image__link" href="https://x.com/dhh/status/1995901001237225628?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8bd0496b-d7ad-417c-b76f-3f18a2d40b02/image.png?t=1765136878"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/1995901001237225628?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><div class="image"><a class="image__link" href="https://github.com/basecamp/fizzy-saas/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/16501fa9-c5b6-4821-ac30-2b4428fbd6de/image.png?t=1765046572"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/basecamp/fizzy-saas/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://github.com/basecamp/fizzy-saas/</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://twitter.com/palkan_tula?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Vladimir Dementyev</a> shared that 37signals shared <a class="link" href="https://railserd.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">the Fizzy ERD diagram</a></p><div class="image"><a class="image__link" href="https://x.com/palkan_tula/status/1996210752118510065?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d31dcffe-18c0-409e-8872-e7629b25c308/image.png?t=1765046968"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/palkan_tula/status/1996210752118510065?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@palkan_tula</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/palkan_tula/status/1996210752118510065?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3081f97b-dcd5-47e7-b9c0-83ed88244810/image.png?t=1765047018"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/palkan_tula/status/1996210752118510065?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@palkan_tula</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> shared some performance stats about Fizzy test suite</p><div class="image"><a class="image__link" href="https://x.com/dhh/status/1996481961330880667?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9572e11a-3315-4c58-8e38-0891b2237a8a/image.png?t=1765047779"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/1996481961330880667?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> shared a couple of facts about working at Fizzy (read the <a class="link" href="https://threadreaderapp.com/thread/1995904938455548352.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">full thread on web)</a></p><div class="image"><a class="image__link" href="https://x.com/dhh/status/1995904938455548352\" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/33ed0e51-edbe-4d37-a9b8-75b021350c1d/image.png?t=1765135790"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/1995904938455548352?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/dhh/status/1995905459060908424?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/457782d4-1a93-4fe4-9b24-6eb60900c2d8/image.png?t=1765135848"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/1995905459060908424?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/dhh/status/1995906589241311411?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/76042991-a4d2-45b8-afa5-c09497e48c36/image.png?t=1765135873"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/1995906589241311411?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">Seems like there is an announcement to be made about activerecord-tenant: </p><div class="image"><a class="image__link" href="https://x.com/kyrylosilin/status/1995911646544326925?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0c649a37-8ef9-4d89-8b93-b367e6dc8156/image.png?t=1765135942"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kyrylosilin/status/1995911646544326925?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@kyrylosilin</a></p></span></div></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">️</span><a class="link" href="https://www.activerabbit.ai/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Alex Shapalov</a><span style="color:rgb(0, 0, 0);font-size:medium;"> shared a thread about various techniques used in Fizzy. Read </span><a class="link" href="https://threadreaderapp.com/thread/1996233380636361072.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">the full thread on web here</a><span style="color:rgb(0, 0, 0);font-size:medium;"> but here are 2 of the posts shared: </span></p><div class="image"><a class="image__link" href="https://x.com/alxshp/status/1996233384499314945?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/381de3b3-4f68-45d6-b3c2-6faee66d4547/image.png?t=1765136384"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/alxshp/status/1996233384499314945?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@alxshp</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/alxshp/status/1996233390958285024?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/599f746f-b179-4907-8ad0-66fa47450151/image.png?t=1765136429"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/alxshp/status/1996233390958285024?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@alxshp</a></p></span></div></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">️</span><a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a><span style="color:rgb(0, 0, 0);font-size:medium;"> shared about the code that make the activity timeline and the boards permanently screen to show live updates: </span></p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/1991515415802179685?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bb0d05d5-9cdb-42eb-a512-eb4b329dc74f/image.png?t=1765137140"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/1991515415802179685?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.zolkos.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Rob Zolkos</a> published a new article about <a class="link" href="https://www.zolkos.com/2025/12/03/vanilla-css-is-all-you-need?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Vanilla CSS is all you need</a></p><div class="image"><a class="image__link" href="https://www.zolkos.com/2025/12/03/vanilla-css-is-all-you-need?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8ab90075-5337-4a28-b45c-fcd1aa5be2b1/image.png?t=1765136694"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.zolkos.com/2025/12/03/vanilla-css-is-all-you-need?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Vanilla CSS is all you need</a></p></span></div></div><p class="paragraph" style="text-align:left;">Rob also published (among multiple posts about Fizzy) one interesting about <a class="link" href="https://www.zolkos.com/2025/12/02/fizzy-webhooks-what-you-need-to-know?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Fizzy Webhooks: What You Need to Know</a></p><div class="image"><a class="image__link" href="https://www.zolkos.com/2025/12/02/fizzy-webhooks-what-you-need-to-know?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3d9c5440-0800-44d9-8503-d5c43d246d4e/image.png?t=1765136809"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.zolkos.com/2025/12/02/fizzy-webhooks-what-you-need-to-know?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Fizzy Webhooks: What You Need to Know</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="http://BeautifulRuby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">BeautifulRuby.com</a> published a walkthrough video → <a class="link" href="https://www.youtube.com/watch?v=pDyF0l7JnNU&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">37 Signals Fuzzy Kan-Ban board Rails App: Read The Friendly Source Code</a></p><div class="image"><a class="image__link" href="https://www.youtube.com/watch?v=pDyF0l7JnNU&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4d91bed9-e693-4555-915a-2dbdbb398614/image.png?t=1765136995"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.youtube.com/watch?v=pDyF0l7JnNU&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://www.youtube.com/watch?v=pDyF0l7JnNU</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://twitter.com/DriftingRuby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Drifting Ruby</a><span style="color:rgb(0, 0, 0);font-size:medium;"> published new video about </span><b><a class="link" href="https://www.driftingruby.com/episodes/cool-things-in-fizzy?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Cool Things in Fizzy</a></b></p><div class="image"><a class="image__link" href="https://www.driftingruby.com/episodes/cool-things-in-fizzy?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bf4958a3-afe4-4f6e-b5ab-5178f2705ace/image.png?t=1765166604"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.driftingruby.com/episodes/cool-things-in-fizzy?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Cool Things in Fizzy</a></p></span></div></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">️</span><a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a><span style="color:rgb(0, 0, 0);font-size:medium;"> shared about the future of Turbo. Please </span><a class="link" href="https://threadreaderapp.com/thread/1990140017625514440.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">read the full post on web</a> and here I will include just a piece of it: </p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/1990140017625514440?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7096be67-a15f-4a36-8b5c-2ff13af3491f/image.png?t=1765137357"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/1990140017625514440?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.zolkos.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Rob Zolkos</a> published another article about <a class="link" href="https://www.zolkos.com/2025/12/02/the-making-of-fizzy-told-by-git?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">The Making of Fizzy, Told by Git</a></p><div class="image"><a class="image__link" href="https://www.zolkos.com/2025/12/02/the-making-of-fizzy-told-by-git?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/492d3f14-b4a0-4535-aa41-dc003778e838/image.png?t=1765166479"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.zolkos.com/2025/12/02/the-making-of-fizzy-told-by-git?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">The Making of Fizzy, Told by Git</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">❤️</span> <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> expressed his amazement about how far Rails can go in the real world</p><div class="image"><a class="image__link" href="https://x.com/dhh/status/1994954203765313948?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d86e5ff1-4e46-4001-9f56-1acaa2d93f4d/image.png?t=1765043693"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/1994954203765313948?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p id="weirdwiredarticle" class="paragraph" style="text-align:left;">💔 Last week Wired published a very weird article <a class="link" href="http://sheonhan.net/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Sheon Han</a><span style="color:rgb(0, 0, 0);font-size:medium;"> published </span><b><a class="link" href="https://www.wired.com/story/ruby-is-not-a-serious-programming-language/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby Is Not a Serious Programming Language</a></b> In case the paywall appears you can read the <a class="link" href="https://archive.is/ZzwR2?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">article here</a> </p><p class="paragraph" style="text-align:left;"><b>This has triggered some responses from the community: </b></p><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://twitter.com/robbyrussell?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Robby Russell</a> talked about the maturity of Ruby and published a great article <a class="link" href="https://robbyonrails.com/articles/2025/12/01/why-so-serious/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">“Why So Serious?”</a></p><div class="image"><a class="image__link" href="https://x.com/robbyrussell/status/1995565518074642540?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5def4a36-7208-4384-8de6-3fddfe168ad6/image.png?t=1765045659"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/robbyrussell/status/1995565518074642540?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@robbyrussell</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ <a class="link" href="https://x.com/BenjaminHouy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Benjamin Houy</a> disagreed with what Wired said about Ruby</p><div class="image"><a class="image__link" href="https://x.com/BenjaminHouy/status/1996290824347287696?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3b74be88-ed43-43d3-93bf-faa310d2436f/image.png?t=1765047384"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/BenjaminHouy/status/1996290824347287696?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@BenjaminHouy</a></p></span></div></div><p class="paragraph" style="text-align:left;">❤️ Natalie Kaminski (CEO/Co-founder at JetRockets) wrote an article <a class="link" href="https://jetrockets.com/blog/a-jetrockets-response-to-wired-s-ruby-is-not-a-serious-programming-language?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">A JetRockets Response to WIRED’s “Ruby Is Not a Serious Programming Language”</a></p><div class="image"><a class="image__link" href="https://jetrockets.com/blog/a-jetrockets-response-to-wired-s-ruby-is-not-a-serious-programming-language?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f017b3c0-e9b8-428c-bcb8-e4662d5ad6a5/image.png?t=1765167023"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://jetrockets.com/blog/a-jetrockets-response-to-wired-s-ruby-is-not-a-serious-programming-language?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">A JetRockets Response to WIRED’s “Ruby Is Not a Serious Programming Language”</a></p></span></div></div><p class="paragraph" style="text-align:left;">The <a class="link" href="https://www.reddit.com/r/programming/comments/1pbkg2a/ruby_is_not_a_serious_programming_language/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">discussion on r/programming</a> has some good replies. Here is among the best replies there: </p><div class="image"><a class="image__link" href="https://www.reddit.com/r/programming/comments/1pbkg2a/comment/nrrbq6p/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c38ce775-6da0-466b-825f-0c0d4244727f/image.png?t=1765167330"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.reddit.com/r/programming/comments/1pbkg2a/comment/nrrbq6p/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://www.reddit.com/r/programming/comments/1pbkg2a/comment/nrrbq6p/</a></p></span></div></div><p class="paragraph" style="text-align:left;">The response from Robbie Russell was also <a class="link" href="https://news.ycombinator.com/item?id=46110836&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">discussed on HackerNews</a> having (at the moment of writing the newsletter) around 170 comments. Here are some of them: </p><div class="image"><a class="image__link" href="https://news.ycombinator.com/item?id=46112300&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d12ed55c-21a7-4195-ba74-5e92937b5496/image.png?t=1765167421"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://news.ycombinator.com/item?id=46112300&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://news.ycombinator.com/item?id=46112300</a></p></span></div></div><div class="image"><a class="image__link" href="https://news.ycombinator.com/item?id=46111662&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4ffcc547-7245-4648-9d88-a26ecc918166/image.png?t=1765167541"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://news.ycombinator.com/item?id=46111662&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://news.ycombinator.com/item?id=46111662</a></p></span></div></div><p class="paragraph" style="text-align:left;"></p><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://bsky.app/profile/diaconou.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Stephen</a> announced a new repository → <a class="link" href="https://github.com/stevegeek/claude-ruby-plugins?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">claude-ruby-plugins</a> - <i>“Claude Code skills, commands, and agents for writing Ruby RBS type signatures“</i></p><div class="image"><a class="image__link" href="https://github.com/stevegeek/claude-ruby-plugins?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d0040960-ef8a-467a-b9ee-d6609be427e2/image.png?t=1765044818"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/stevegeek/claude-ruby-plugins?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://github.com/stevegeek/claude-ruby-plugins</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://bsky.app/profile/stefannibrasil.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Stefanni Brasil</a> released a new version of <a class="link" href="https://github.com/faker-ruby/faker?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">faker</a> - <i>“A library for generating fake data such as names, addresses, and phone numbers.“</i></p><div class="image"><a class="image__link" href="https://github.com/faker-ruby/faker/releases/tag/v3.5.3?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/90792405-33fd-407a-87f9-4cc3e6df6b47/image.png?t=1765044404"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/faker-ruby/faker/releases/tag/v3.5.3?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://github.com/faker-ruby/faker/releases/tag/v3.5.3</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> announced a new PR merged into <a class="link" href="https://github.com/rails/rails/pull/56258?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Rails → Add schematized json for has_json</a></p><div class="image"><a class="image__link" href="https://x.com/dhh/status/1995397106883059985?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c496ab7e-fb0a-4547-a979-2d2d560687e5/image.png?t=1765045310"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/1995397106883059985?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://x.com/kieranklaassen?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Kieran Klaassen</a> shared that <a class="link" href="https://github.com/kieranklaassen/leva?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">leva</a> will have automatic prompt generation</p><div class="image"><a class="image__link" href="https://x.com/kieranklaassen/status/1996378943885393941?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f3ae652b-dcb1-47d0-8578-f37691722cea/image.png?t=1765047656"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kieranklaassen/status/1996378943885393941?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@kieranklaassen</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a> announced an update for <a class="link" href="https://github.com/basecamp/lexxy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">lexxy</a></p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/1996986392799269072?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/84d94bbd-d051-42c4-ae29-af1acb33a20a/image.png?t=1765048184"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/1996986392799269072?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Stephen Margheim</a> shared how to bind popovertargets with their popovers without having to distinct anchor-names</p><div class="image"><a class="image__link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3m7axewrc3g2k?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/89c8cb0d-ad9e-467d-a019-2a2a5e85f082/image.png?t=1765044921"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3m7axewrc3g2k?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">fractaledmind.bsky.social</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3m7axeyo3hf2r?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/607160d8-d4c1-43a9-b712-d87d1d8e4ede/image.png?t=1765045048"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fractaledmind.bsky.social/post/3m7axeyo3hf2r?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fractaledmind.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">fractaledmind.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://x.com/dpaluy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">David Paluy </a>🇮🇱 how to handle merge conflicts of credentials.yml.enc</p><div class="image"><a class="image__link" href="https://gist.github.com/dpaluy/0b6e6f9b46e1aba6a618f9f46d19d94d?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0ee3fb2e-4198-48cb-84d5-87146ee99773/image.png?t=1765048126"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://gist.github.com/dpaluy/0b6e6f9b46e1aba6a618f9f46d19d94d?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">https://gist.github.com/dpaluy/0b6e6f9b46e1aba6a618f9f46d19d94d</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://laravel.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Taylor Otwell </a>🪐 shared what he notices about developers who write code with AI</p><div class="image"><a class="image__link" href="https://x.com/taylorotwell/status/1997009346677690491?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/77ab95d5-c021-4e8e-a60c-244e63dd6011/image.png?t=1765048739"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/taylorotwell/status/1997009346677690491?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">@taylorotwell</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🗞 </span>This Week in Rails published a new edition → <a class="link" href="https://rubyonrails.org/2025/12/5/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Schema-Enforced JSON Access, Postgres Type Decoding, and more!</a></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🗞</span><span style="color:rgb(0, 0, 0);font-size:medium;"> </span>Matt Solt published a new edition → <a class="link" href="https://rubyai.beehiiv.com/p/ruby-ai-news-december-3rd-2025?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby AI News - December 3rd, 2025</a></p><p class="paragraph" style="text-align:left;">🗞 Andrey Eremin published a new edition → <a class="link" href="https://newsletters.eremin.eu/posts/static-ruby-monthly-issue-11-december-2025?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Static Ruby Monthly | Issue 11, December 2025</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new edition → <a class="link" href="https://rubyweekly.com/issues/778?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">37signals releases the source for another SaaS app</a></p><p class="paragraph" style="text-align:left;">🗞 Hotwire Weekly published a new edition → <a class="link" href="https://www.hotwireweekly.com/archive/week-48-invokers-api-from-erb-to-javascript/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Week 48 - Invokers API, From ERB to JavaScript, and more!</a></p><p class="paragraph" style="text-align:left;">🗞 Emmanuel Hayford published a new edition → <a class="link" href="https://world.hey.com/this.week.in.rails/schema-enforced-json-access-postgres-type-decoding-and-more-fa832beb?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Schema-Enforced JSON Access, Postgres Type Decoding, and more!</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🎧</span><span style="color:rgb(0, 0, 0);font-size:medium;"> </span><span style="color:rgb(0, 0, 0);font-size:medium;">The Ruby AI Podcast published a new episode about </span><a class="link" href="https://www.buzzsprout.com/2388930/episodes/18281351-running-self-hosted-models-with-ruby-and-chris-hasinski?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Running Self-Hosted Models with Ruby and Chris Hasinski</a></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🎧 </span>Rails Business published a new episode about about <a class="link" href="https://www.buzzsprout.com/2435951/episodes/18283675-nate-berkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🎧 </span>Ruby Around The World [Ruby on Rails Interviews] published a new episode about <a class="link" href="https://www.youtube.com/watch?v=OIGc5Yup3cM&utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Bernard Banta, Chairman of African Ruby Community</a></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🎧 </span>Remote Ruby published a new episode about <a class="link" href="https://www.buzzsprout.com/2260490/episodes/18292367-docker-disasters-and-dev-container-journeys?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Docker Disasters and Dev Container Journeys</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Beautiful Ruby.Com published a new video → <a class="link" href="https://www.youtube.com/watch?v=pDyF0l7JnNU&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">37 Signals Fuzzy Kan-Ban board Rails App: Read The Friendly Source Code</a></p><p class="paragraph" style="text-align:left;">🎥 Rails Quest by Kaleb Lape published a new video → <a class="link" href="https://www.youtube.com/watch?v=qx2zu25BmOU&utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails 8 + Tailscale: Private App Deployment Made Ridiculously Simple</a></p><p class="paragraph" style="text-align:left;">🎥 CJ Avilla published a new video → <a class="link" href="https://www.youtube.com/watch?v=Q3dAjue6hGw&utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Smarter .env management with 1password</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Robby Russell published a new article about <a class="link" href="https://robbyonrails.com/articles/2025/12/01/why-so-serious/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Why So Serious?</a></p><p class="paragraph" style="text-align:left;">🆕 Aiden Fox Ivey published a new article about <a class="link" href="https://railsatscale.com/2025-11-19-adding-iongraph-support/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Adding Iongraph support to ZJIT</a></p><p class="paragraph" style="text-align:left;">🆕 Tony Yunker published a new article about <a class="link" href="https://hashrocket.com/blog/posts/why-ruby-is-the-best-language-for-advent-of-code?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Why Ruby is the Best Language for Advent of Code</a></p><p class="paragraph" style="text-align:left;">🆕 Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/custom-elements/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Building optimistic UI in Rails (and learn custom elements)</a></p><p class="paragraph" style="text-align:left;">🆕 Hiroshi Shibata published a new article about <a class="link" href="https://blog.rubygems.org/2025/12/03/upgrade-to-rubygems-bundler-4.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Upgrading to RubyGems/Bundler 4</a></p><p class="paragraph" style="text-align:left;">🆕 Adam Pope published a new article about <a class="link" href="https://stormconsultancy.co.uk/blog/ruby-on-rails/logging-outbound-emails-with-actionmailer-in-rails/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Logging outbound emails with ActionMailer</a></p><p class="paragraph" style="text-align:left;">🆕 Tejas Bubane published a new article about <a class="link" href="https://tejasbubane.github.io/posts/2025-12-04-rails-pluralize-translate/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails pluralization with translations</a></p><p class="paragraph" style="text-align:left;">🆕 DevelClan published a new article about <a class="link" href="https://develclan.com/value-objects-ruby-idiomatic-way/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Value Objects in Ruby: The Idiomatic Way</a></p><p class="paragraph" style="text-align:left;">🆕 Felice Forby published a new article about <a class="link" href="https://feliceforby.com/posts/setting-up-a-rails-8-kamal-app-with-doppler-secrets?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Setting up a Rails 8 + Kamal app with Doppler Secrets</a></p><p class="paragraph" style="text-align:left;">🆕 Jared Norman published a new article about <a class="link" href="https://jardo.dev/advent-of-eternal-champions-i?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Advent of Eternal Champions I</a></p><p class="paragraph" style="text-align:left;">🆕 Sharon Rosner published a new article about <a class="link" href="https://noteflakes.com/articles/2025-12-05-friday-update?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">OSS Friday Update - The Shape of Ruby I/O to Come</a></p><p class="paragraph" style="text-align:left;">🆕 Rob Zolkos published a new article about <a class="link" href="https://www.zolkos.com/2025/12/02/fizzy-webhooks-what-you-need-to-know?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Fizzy Webhooks: What You Need to Know</a></p><p class="paragraph" style="text-align:left;">🆕 Igor Alexandrov published a new article about <a class="link" href="https://jetrockets.com/blog/a-jetrockets-response-to-wired-s-ruby-is-not-a-serious-programming-language?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby Is Serious Business: Why Ruby on Rails Delivers Real</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">📝 Brooke Kuhlmann published a new article about <a class="link" href="https://alchemists.io/articles/hanami_with_sidekiq?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Hanami with Sidekiq</a></p><p class="paragraph" style="text-align:left;">📝 Victor Cobos published a new article about <a class="link" href="https://www.dotruby.com/articles/how-to-expose-your-rails-localhost-securely-using-cloudflare-tunnel?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to Expose Your Rails </a><a class="link" href="https://Localhost?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Localhost</a><a class="link" href="https://www.dotruby.com/articles/how-to-expose-your-rails-localhost-securely-using-cloudflare-tunnel?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow"> Securely Using Cloudflare Tunnel</a></p><p class="paragraph" style="text-align:left;">📝 Irina Nazarova published a new article about <a class="link" href="https://evilmartians.com/chronicles/vibe-coding-in-style-dot-md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Vibe coding in style.md</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">✍️ Rob Zolkos published a new article about <a class="link" href="https://www.zolkos.com/2025/12/03/vanilla-css-is-all-you-need?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">Vanilla CSS is all you need</a></p><p class="paragraph" style="text-align:left;">✍️ Stephen Margheim published a new article about <a class="link" href="https://fractaledmind.github.io/2025/12/01/ui-affordances/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Affordances: The Missing Layer in Frontend Architecture</a></p><p class="paragraph" style="text-align:left;">✍️ Shreya Shankar published a new article about <a class="link" href="https://www.sh-reya.com/blog/consumption-ai-scale/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-160" target="_blank" rel="noopener noreferrer nofollow">On the Consumption of AI-Generated Content at Scale</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=9375ac8a-c497-4995-b488-1941840ab5c2&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 159</title>
  <description>The one with BFCM deals, where Xavier Noria and Kevin Newton shared insights about how constants work in Ruby and where Alessandro Rodi introduced DevToolsController for Rails.</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4256a5ec-16a0-483d-a073-5214380d7962/cover-page-edition-159.png" length="413395" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-159</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-159</guid>
  <pubDate>Mon, 01 Dec 2025 10:58:45 +0000</pubDate>
  <atom:published>2025-12-01T10:58:45Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><div class="section" style="background-color:#fff6e6;border-radius:10px;margin:5.0px 5.0px 5.0px 5.0px;padding:10.0px 10.0px 10.0px 10.0px;"><p class="paragraph" style="text-align:left;"><i>(ad) - You can opt out of these ads by </i><b><a class="link" href="https://subscribe.shortruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow"><i>upgrading to a paid subscription</i></a></b><i> and join over 60 people who support the expenses for this newsletter</i></p></div><div class="section" style="background-color:#f7fcff;border-radius:10px;margin:0.0px 0.0px 0.0px 0.0px;padding:10.0px 10.0px 10.0px 10.0px;"><h3 class="heading" style="text-align:left;" id="earn-a-masters-in-ai-for-under-2500">Earn a master&#39;s in AI for under $2,500</h3><div class="image"><a class="image__link" href="https://www.udacity.com/masters-artificial-intelligence?promo=BLACKFRIDAY55&coupon=BLACKFRIDAY55&utm_source=affiliates&utm_medium=newsletter&utm_campaign={{publication_alphanumeric_id}}&utm_content=beehiiv&_bhiiv=opp_b1dffed1-506d-4d5e-847d-0175f9cb33c9_bbab0ea8&bhcl_id=4dfc5185-8044-41e2-a6f8-ec6af49d6a4d_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b8e20c95-3a62-4057-b744-79f83cbff8d1/B.jpg?t=1764178112"/></a></div><p class="paragraph" style="text-align:left;">AI skills aren’t optional anymore—they’re a requirement for staying competitive. Now you can earn a <a class="link" href="https://www.udacity.com/masters-artificial-intelligence?promo=BLACKFRIDAY55&coupon=BLACKFRIDAY55&utm_source=affiliates&utm_medium=newsletter&utm_campaign={{publication_alphanumeric_id}}&utm_content=beehiiv&_bhiiv=opp_b1dffed1-506d-4d5e-847d-0175f9cb33c9_bbab0ea8&bhcl_id=4dfc5185-8044-41e2-a6f8-ec6af49d6a4d_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Master of Science in Artificial Intelligence</a>, delivered by the Udacity Institute of AI and Technology and awarded by Woolf, an accredited higher education institution.</p><p class="paragraph" style="text-align:left;">During Black Friday, you can lock in the savings to earn this fully accredited master’s degree for less than $2,500. Build deep expertise in modern AI, machine learning, generative models, and production deployment—on your own schedule, with real projects that prove your skills.</p><p class="paragraph" style="text-align:left;">This offer won’t last, and it’s the most affordable way to get graduate-level training that actually moves your career forward.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.udacity.com/masters-artificial-intelligence?promo=BLACKFRIDAY55&coupon=BLACKFRIDAY55&utm_source=affiliates&utm_medium=newsletter&utm_campaign={{publication_alphanumeric_id}}&utm_content=beehiiv&_bhiiv=opp_b1dffed1-506d-4d5e-847d-0175f9cb33c9_bbab0ea8&bhcl_id=4dfc5185-8044-41e2-a6f8-ec6af49d6a4d_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Learn More</a></p></div><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://x.com/RaulOnRails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Raul Popadineti</a> launched their project <a class="link" href="https://ogpilot.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">OGPilot.com - The one-click Open Graph image generator </a></p><div class="image"><a class="image__link" href="https://ogpilot.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0168d85b-4b59-4f3e-a263-9f3fb8796652/image.png?t=1764579035"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://ogpilot.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://ogpilot.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">💸 Avo is running <a class="link" href="https://avohq.io/deals?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">a deal for BlackFriday/Cyber Monday</a>: </p><div class="image"><a class="image__link" href="https://avohq.io/deals?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7a0eb1fb-9fc3-4af4-b14a-398b36ff84e2/image.png?t=1764580526"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://avohq.io/deals?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://avohq.io/deals</a></p></span></div></div><p class="paragraph" style="text-align:left;">💸 <a class="link" href="https://twitter.com/excid3?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Chris Oliver</a> posted a new SaaS product series on GoRails. You can check it right here → <a class="link" href="https://gorails.com/series/domain-monitor-saas?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Domain Monitor SaaS Product</a></p><div class="image"><a class="image__link" href="https://gorails.com/series/domain-monitor-saas?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a5ca1252-789d-4e14-a8ab-41d4de12633f/image.png?t=1764451115"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://gorails.com/series/domain-monitor-saas?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://gorails.com/series/domain-monitor-saas</a></p></span></div></div><p class="paragraph" style="text-align:left;">💸 <a class="link" href="https://twitter.com/GoRails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Go Rails</a> shared theirs Black Friday / Cyber Monday deals → <a class="link" href="https://gorails.com/blog/black-friday-2025?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Black Friday 2025 Sale</a></p><div class="image"><a class="image__link" href="https://x.com/GoRails/status/1994431629322858730?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9ba05d30-2962-4fd1-95ef-61fccd52593f/image.png?t=1764452669"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/GoRails/status/1994431629322858730?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@GoRails</a></p></span></div></div><p class="paragraph" style="text-align:left;">💸 <a class="link" href="https://twitter.com/joemasilotti?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Joe Masilotti</a> is running a Black Friday Sale across the entire Hotwire Native suite → <a class="link" href="https://newsletter.masilotti.com/p/hotwire-native-black-friday-sale?r=9nfdo&triedRedirect=true&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Hotwire Native Black Friday Sale</a></p><div class="image"><a class="image__link" href="https://x.com/joemasilotti/status/1994082191186514251?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/936ddc23-f707-4515-8b05-164ff4ca5f16/image.png?t=1764452038"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/joemasilotti/status/1994082191186514251?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@joemasilotti</a></p></span></div></div><p class="paragraph" style="text-align:left;">💸 <a class="link" href="https://railsdesigner.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Rails Designer</a> shared a deal about <a class="link" href="https://railsdesigner.com/bfcm-2025/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Black Friday/Cyber Monday deal 2025</a></p><div class="image"><a class="image__link" href="https://railsdesigner.com/bfcm-2025?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/319ec3ca-2419-4896-8cd8-0cd2a01c93d4/image.png?t=1764521060"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://railsdesigner.com/bfcm-2025?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://railsdesigner.com/bfcm-2025</a></p></span></div></div><p class="paragraph" style="text-align:left;">💸<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><a class="link" href="https://x.com/kyrylosilin?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Kyrylo Silin</a><span style="color:rgb(0, 0, 0);font-size:medium;"> shared a deal for </span><b><a class="link" href="https://telebugs.com/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Self-hosted Sentry alternative for error tracking</a></b></p><div class="image"><a class="image__link" href="https://x.com/kyrylosilin/status/1992504698226831555?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a28fdedc-99b5-4593-9eae-0ea254791182/image.png?t=1764582590"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kyrylosilin/status/1992504698226831555?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@kyrylosilin</a></p></span></div></div><p class="paragraph" style="text-align:left;">💸 <a class="link" href="https://bsky.app/profile/bradgessler.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Brad Gessler</a> shared all Ruby Black Friday deals. You can see the entire collection right here → <a class="link" href="https://beautifulruby.com/articles/ruby-black-friday-deals-2025?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">2025 Ruby Cyber Monday & Black Friday Deals</a></p><div class="image"><a class="image__link" href="https://beautifulruby.com/articles/ruby-black-friday-deals-2025?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/43f3d47e-8f4c-4e49-9cb9-3de64f966a6d/image.png?t=1764447419"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://beautifulruby.com/articles/ruby-black-friday-deals-2025?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://beautifulruby.com/articles/ruby-black-friday-deals-2025</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/rubyconf?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Ruby Conf</a> announced <a class="link" href="https://www.youtube.com/watch?v=_vkbRlYCJY0&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">the 2026 edition</a></p><div class="image"><a class="image__link" href="https://x.com/rubyconf/status/1993458676577837370?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/039defd2-be54-4db1-a781-350e0bcf20ce/image.png?t=1764451391"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rubyconf/status/1993458676577837370?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@rubyconf</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://x.com/hummusonrails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Ben Greenberg</a> <a class="link" href="https://x.com/hummusonrails/status/1993687278774788568?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">shared</a> a bit more details about the next year edition happenig in Las Vegas and having Jason Swett and Freedom Dumlao as co-chairs: </p><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/wrocloverb?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Wroclove.Rb</a> started ticket sales for next year’s event. If you’re interested, grab a ticket from here → <a class="link" href="https://www.tickettailor.com/events/wrocloverb/1903580?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">wroclove.rb 2026</a></p><div class="image"><a class="image__link" href="https://x.com/wrocloverb/status/1993617128088326527?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c4562984-bda7-4828-bd6c-e00bd5c355fa/image.png?t=1764451436"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/wrocloverb/status/1993617128088326527?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@wrocloverb</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://x.com/BalkanRuby?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Balkan Ruby</a> is looking for speakers for their next year’s event. If you’re interested, submit your talk here → <a class="link" href="https://docs.google.com/forms/d/e/1FAIpQLSfy4Dt6DdP3uDWtqgcDJGID7x2ABKxME1c5RWSehyCgnAyorg/viewform?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Balkan Ruby 2026 CFP</a></p><div class="image"><a class="image__link" href="https://x.com/BalkanRuby/status/1993930322791059555?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0e31998e-f4b1-4a06-9ea5-01505534ed4a/image.png?t=1764451864"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/BalkanRuby/status/1993930322791059555?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@BalkanRuby</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/BalkanRuby/status/1993930322791059555?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/44ea98b4-36c5-4021-ad4e-cd597b99f408/image.png?t=1764451904"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/BalkanRuby/status/1993930322791059555?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@BalkanRuby</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://bsky.app/profile/hsbt.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Hiroshi Shibata</a> announced that <a class="link" href="https://blog.rubygems.org/2025/11/26/4.0.0.beta2-released.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">RubyGems/bundler 4.0.0.beta2</a> is available</p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3153e11c-8b97-451b-87a0-73b89147213c/image.png?t=1764446997"/></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/tobi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Tobi Lutke</a> shared some incredible performance achievements during Black Friday</p><div class="image"><a class="image__link" href="https://x.com/tobi/status/1994767758392009124?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d1d33645-b7ea-453e-b42a-859892d4c46e/image.png?t=1764501313"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/tobi/status/1994767758392009124?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@tobi</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.activerabbit.ai/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Alex Shapalov</a> summarised the numbers in context of Ruby on Rails: </p><div class="image"><a class="image__link" href="https://x.com/alxshp/status/1994940490673000940?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/93fbf4b0-7468-4eaf-9f08-1ead0a00ffb6/image.png?t=1764501132"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/alxshp/status/1994940490673000940?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@alxshp</a></p></span></div></div><p class="paragraph" style="text-align:left;">✍️ Noel Rappin published a new article about <a class="link" href="https://noelrappin.com/blog/2025/11/ruby-and-its-neighbors-lisp/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby And Its Neighbors: Lisp</a></p><div class="image"><a class="image__link" href="https://noelrappin.com/blog/2025/11/ruby-and-its-neighbors-lisp/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/da80c8f3-00fa-4ea3-901c-e15472260527/image.png?t=1764582806"/></a><div class="image__source"><span class="image__source_text"><p>Source <a class="link" href="https://noelrappin.com/blog/2025/11/ruby-and-its-neighbors-lisp/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby And Its Neighbors: Lisp</a></p></span></div></div><p class="paragraph" style="text-align:left;">✍️ Yaroslav Kurbatov published a new article about <a class="link" href="https://evilmartians.com/chronicles/unparser-real-file-lessons-migrating-ruby-tools-from-parser-to-prism?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Unparser: real life lessons migrating Ruby tools from Parser to Prism</a></p><div class="image"><a class="image__link" href="https://evilmartians.com/chronicles/unparser-real-file-lessons-migrating-ruby-tools-from-parser-to-prism?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ec1aa643-23ce-43fe-95d3-7560353a8065/image.png?t=1764582907"/></a><div class="image__source"><span class="image__source_text"><p>Source <a class="link" href="https://evilmartians.com/chronicles/unparser-real-file-lessons-migrating-ruby-tools-from-parser-to-prism?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Unparser: real life lessons migrating Ruby tools from Parser to Prism</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad) - You can opt out of these ads by </i><a class="link" href="https://subscribe.shortruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow"><i>upgrading to a paid subscription</i></a><i> and join over 60 people who support the expenses for this newsletter</i></p><div class="section" style="background-color:#f7fcff;border-radius:10px;margin:5.0px 5.0px 5.0px 5.0px;padding:5.0px 5.0px 5.0px 5.0px;"><h3 class="heading" style="text-align:left;" id="find-out-why-100-k-engineers-read-t">Find out why 100K+ engineers read The Code twice a week.</h3><div class="image"><a class="image__link" href="https://magic.beehiiv.com/v1/5f7ce6e3-9a71-416b-99a7-606c5f7e2447?email={{email}}&redirect_to=https%3A%2F%2Fcodenewsletter.ai%2Fforms%2F14166360-de71-46c4-8722-878d417fab5c&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_545096bd-48c9-4ecd-a366-055ceebfaf9d_94e90c2e&bhcl_id=854cf89d-0bb2-42e2-9810-c48af08ad610_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a15346a7-b9a1-4213-83b8-93791f7042b3/Get_curated_tech_news__top_research_papers___resources_in_2_short_weekly_emails_-_V6.jpg?t=1759254210"/></a></div><p class="paragraph" style="text-align:left;">That engineer who always knows what&#39;s next? This is their secret.</p><p class="paragraph" style="text-align:left;">Here&#39;s how you can get ahead too:</p><ul><li><p class="paragraph" style="text-align:left;">Sign up for The Code - tech newsletter read by 100K+ engineers</p></li><li><p class="paragraph" style="text-align:left;">Get latest tech news, top research papers & resources</p></li><li><p class="paragraph" style="text-align:left;">Become 10X more valuable</p></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://magic.beehiiv.com/v1/5f7ce6e3-9a71-416b-99a7-606c5f7e2447?email={{email}}&redirect_to=https%3A%2F%2Fcodenewsletter.ai%2Fforms%2F14166360-de71-46c4-8722-878d417fab5c&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_545096bd-48c9-4ecd-a366-055ceebfaf9d_94e90c2e&bhcl_id=854cf89d-0bb2-42e2-9810-c48af08ad610_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Join 100k+ engineers</a></p></div><hr class="content_break"><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;">💻 Ryan Davis share the <a class="link" href="https://zenspider.com/ruby/2025/11/minitest-v1-0-0.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">original POC that started minitest</a>, here is just a part of that 99 lines file: </p><div class="image"><a class="image__link" href="https://zenspider.com/ruby/2025/11/minitest-v1-0-0.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6266b40a-530e-48c4-9257-c813ce7b4714/image.png?t=1764578348"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://zenspider.com/ruby/2025/11/minitest-v1-0-0.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://zenspider.com/ruby/2025/11/minitest-v1-0-0.html</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://bsky.app/profile/fxn.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Xavier Noria</a> explained some characteristics of “::“ operator</p><div class="image"><a class="image__link" href="https://bsky.app/profile/fxn.bsky.social/post/3m6m3xo3ips2u?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f4e9c427-51d1-480c-8aa6-3cd595d36032/image.png?t=1764447181"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fxn.bsky.social/post/3m6m3xo3ips2u?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fxn.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">fxn.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">on the topic of constants in Ruby <a class="link" href="https://kddnewton.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Kevin Newton</a> shared insights about titlecase Unicode codepoints in Ruby: </p><div class="image"><a class="image__link" href="https://threadreaderapp.com/thread/1994988341121757307.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/eb147acd-b937-48e3-ba53-85a5a0b14d20/image.png?t=1764578732"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://threadreaderapp.com/thread/1994988341121757307.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://threadreaderapp.com/thread/1994988341121757307.html</a></p></span></div></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">️</span>️💻 <a class="link" href="https://bsky.app/profile/widefix.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Andrei Kaleshka</a> showed how to stub environment variables in tests</p><div class="image"><a class="image__link" href="https://bsky.app/profile/widefix.bsky.social/post/3m6gzjbfzns2t?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/be416fe1-bfe7-467f-8aef-9485b39468f2/image.png?t=1764446625"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/widefix.bsky.social/post/3m6gzjbfzns2t?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://widefix.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">widefix.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://bsky.app/profile/veganstraightedge.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Shane Becker</a> asked for other ways to explore an object and its methods</p><div class="image"><a class="image__link" href="https://bsky.app/profile/veganstraightedge.com/post/3m6izcz3brw2d?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f90da904-be98-48d6-a4b6-42689830b4dd/image.png?t=1764446789"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/veganstraightedge.com/post/3m6izcz3brw2d?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://veganstraightedge.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">veganstraightedge.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">Marko replied with a possible solution → <a class="link" href="https://ruby.github.io/irb/EXTEND_IRB_md.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">extend_irb</a></p><div class="image"><a class="image__link" href="https://bsky.app/profile/marcoroth.dev/post/3m6j2zadfrk2q?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/075d82b1-1cbc-41b5-96f8-05a2611b9db4/image.png?t=1764446902"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/marcoroth.dev/post/3m6j2zadfrk2q?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://bsky.app/profile/marcoroth.dev/post/3m6j2zadfrk2q</a></p></span></div></div><p class="paragraph" style="text-align:left;">Bradley also shared an alternative → <a class="link" href="https://docs.ruby-lang.org/en/3.2/IRB.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159#module-IRB-label-Commands" target="_blank" rel="noopener noreferrer nofollow">module irb: commands</a></p><div class="image"><a class="image__link" href="https://elk.zone/ruby.social/@soulcutter/115614213816147150?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ffde4c2d-9972-4e15-a68e-a516bcc3bf3b/image.png?t=1764452806"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://elk.zone/ruby.social/@soulcutter/115614213816147150?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://elk.zone/ruby.social/@soulcutter/115614213816147150</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad) - You can opt out of these ads by </i><a class="link" href="https://subscribe.shortruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow"><i>upgrading to a paid subscription</i></a><i> and join over 60 people who support the expenses for this newsletter</i></p><h3 class="heading" style="text-align:left;" id="benchmark-your-voice-ai">Benchmark Your Voice AI</h3><div class="image"><a class="image__link" href="https://deepgram.com/2025-state-of-voice-ai-report?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&_bhiiv=opp_5e7afbb5-bad8-4aea-a559-e9979f8b56b9_c0edc500&bhcl_id=72945f6b-973c-49ed-a982-643a9a635676_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/07900967-97d8-456d-bc29-a5422538d01a/2503-SOV25-report-email__2_.png?t=1762289242"/></a></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://deepgram.com/2025-state-of-voice-ai-report?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&_bhiiv=opp_5e7afbb5-bad8-4aea-a559-e9979f8b56b9_c0edc500&bhcl_id=72945f6b-973c-49ed-a982-643a9a635676_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Deepgram</a> surveyed 400 senior leaders on voice AI to map adoption, budgets, and use cases. Compare your voice AI roadmap to $100M+ enterprises and learn where to invest next - human-like agents for customer service, task automation, and order capture - plus benchmarks to guide your 2026 plan.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://deepgram.com/2025-state-of-voice-ai-report?utm_campaign={{publication_alphanumeric_id}}&utm_source=beehiiv&_bhiiv=opp_5e7afbb5-bad8-4aea-a559-e9979f8b56b9_c0edc500&bhcl_id=72945f6b-973c-49ed-a982-643a9a635676_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">See the Findings</a></p><hr class="content_break"><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://bsky.app/profile/yarotheslav.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Yaroslav Shmarov</a> shared an interesting usage of “draw“</p><div class="image"><a class="image__link" href="https://bsky.app/profile/yarotheslav.bsky.social/post/3m6phrz42kk2d?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2e8257a3-d009-4551-8227-f1b9653817de/image.png?t=1764447617"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/yarotheslav.bsky.social/post/3m6phrz42kk2d?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://yarotheslav.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">yarotheslav.bsky.social</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/yarotheslav.bsky.social/post/3m6phrz42kk2d?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/db702af3-aa56-4d81-bb31-ef3c454f0e60/image.png?t=1764447669"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/yarotheslav.bsky.social/post/3m6phrz42kk2d?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://yarotheslav.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">yarotheslav.bsky.social</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://x.com/kyrylosilin?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Kyrylo Silin</a> presented the side effects of Hotwire Turbo’s link prefetching</p><div class="image"><a class="image__link" href="https://x.com/kyrylosilin/status/1992882664487936015?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/39054bf7-f7fa-413f-83bd-621c2f08e00b/image.png?t=1764449428"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kyrylosilin/status/1992882664487936015?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@kyrylosilin</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://boringrails.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Matt Swanson</a> talked about the common mistakes developers make with Hotwire</p><div class="image"><a class="image__link" href="https://x.com/_swanson/status/1992976329780633943?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bda79423-2adb-4c85-ba4e-4ffa6016b56f/image.png?t=1764449603"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_swanson/status/1992976329780633943?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@_swanson</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/robbyrussell?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Robby Russell</a> shared his take on rails new defaults debate</p><div class="image"><a class="image__link" href="https://x.com/robbyrussell/status/1993115657957982304?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1bfebd46-a179-4b0b-85a2-e822787fdf79/image.png?t=1764449954"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/robbyrussell/status/1993115657957982304?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@robbyrussell</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared new insights about Puma</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/1993726965795398040?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d76db593-ff94-44bd-8bbe-6d3b9d6bc29c/image.png?t=1764450226"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/1993726965795398040?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> announced a new documentation PR → <a class="link" href="https://github.com/rails/rails/pull/56238?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">[RF Docs] Active Support Instrumentation</a></p><div class="image"><a class="image__link" href="https://x.com/rails/status/1994060218263576828?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4c16cc28-06d2-4dcb-9297-ebfa72a1286e/image.png?t=1764450353"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rails/status/1994060218263576828?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@rails</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://mensfeld.pl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Maciej Mensfeld</a> built a self-learning platform for coding skills and agents → <a class="link" href="https://github.com/mensfeld/craftdesk?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">craftdesk</a></p><div class="image"><a class="image__link" href="https://x.com/maciejmensfeld/status/1993721649838113150?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4b8d811e-18f1-46e7-a00c-bea6e5846a89/image.png?t=1764450033"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/maciejmensfeld/status/1993721649838113150?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@maciejmensfeld</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates</h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://www.fullstackruby.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Jared White</a> published a new gem Bridgetown::Foundations sharing <a class="link" href="https://www.fullstackruby.dev/the-art-of-code/2025/11/25/dont-make-me-think-testing-intuitive-expectations/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">about expectations</a>: </p><div class="image"><a class="image__link" href="https://www.bridgetownrb.com/docs/plugins/foundation-gem?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4b57f742-244c-4d97-95fa-077144d614ae/image.png?t=1764522701"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.bridgetownrb.com/docs/plugins/foundation-gem?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://www.bridgetownrb.com/docs/plugins/foundation-gem</a></p></span></div></div><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/76e0ea9b-0411-4de4-8c36-3341a1953bf8/image.png?t=1764522593"/></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://twitter.com/stevediaconou?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Stephen</a> announced a new gem → <a class="link" href="https://github.com/stevegeek/typed_operation?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">typed_operation</a> - <i>“Command pattern, which is callable, and can be partially applied, curried and has typed parameters. Authorization to execute via action_policy if desired.“</i></p><div class="image"><a class="image__link" href="https://github.com/stevegeek/typed_operation?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/791a8767-35a7-4102-a5bc-5f7b86e98a1d/image.png?t=1764450481"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/stevegeek/typed_operation?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://github.com/stevegeek/typed_operation</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://twitter.com/mario_chavez?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Mario Alberto Chávez</a> announced a Ruby on Rails skill → <a class="link" href="https://github.com/maquina-app/rails-upgrade-skill?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">rails-upgrade-skill</a> - <i>“Claude Skill to upgrade a Rails application“</i></p><div class="image"><a class="image__link" href="https://github.com/maquina-app/rails-upgrade-skill?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/885377bd-3d1e-4f27-9e88-9ed92694ae62/image.png?t=1764450761"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/maquina-app/rails-upgrade-skill?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://github.com/maquina-app/rails-upgrade-skill</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/hmontazeri?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Hamed Montazeri</a> published a new gem <b><a class="link" href="https://github.com/hmontazeri/rails-assessment?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">rails-assessment</a></b><span style="color:rgb(0, 0, 0);font-size:medium;"> </span><span style="color:rgb(0, 0, 0);">- </span><span style="color:rgb(0, 0, 0);"><i>&quot;Rails::Assessment is a mountable Rails 8 engine that renders configurable, themeable assessments driven by YAML or Ruby DSL definitions.&quot;</i></span></p><div class="image"><a class="image__link" href="https://github.com/hmontazeri/rails-assessment?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ef7a7408-583c-4632-a4b6-8e8a729ccf6d/image.png?t=1764579640"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/hmontazeri/rails-assessment?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://github.com/hmontazeri/rails-assessment</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 eth3rnit3 published a new project <a class="link" href="https://github.com/Eth3rnit3/FerrumMCP?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">FerrumMCP</a> -<i> “A Model Context Protocol (MCP) server that provides web automation capabilities through Ferrum, with optional BotBrowser integration for advanced anti-detection features”</i> </p><div class="image"><a class="image__link" href="https://github.com/Eth3rnit3/FerrumMCP?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d50507a3-8763-46e4-8665-dd5e4117ab35/image.png?t=1764578120"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/Eth3rnit3/FerrumMCP?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://github.com/Eth3rnit3/FerrumMCP</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/marcuxyz?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Marcus Almeida</a> published a new gem <b><a class="link" href="https://github.com/marcuxyz/curlify?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">curlify</a></b><span style="color:rgb(0, 0, 0);font-size:medium;"> </span><span style="color:rgb(0, 0, 0);">- </span><span style="color:rgb(0, 0, 0);"><i>&quot;Convert Ruby HTTP request and client objects into their equivalent curl command. Useful for debugging and sharing HTTP requests.&quot;</i></span></p><div class="image"><a class="image__link" href="https://github.com/marcuxyz/curlify?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/993243dc-c540-4d13-9a00-cbca6ae903e5/image.png?t=1764579729"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/marcuxyz/curlify?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://github.com/marcuxyz/curlify</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/dpaluy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">David Paluy</a> launched <b><a class="link" href="https://github.com/dpaluy/railstart?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">railstart</a></b><span style="color:rgb(0, 0, 0);font-size:medium;"> </span><span style="color:rgb(0, 0, 0);">- </span><span style="color:rgb(0, 0, 0);"><i>&quot;Interactive CLI wizard for Rails app generation with customizable config&quot;</i></span></p><div class="image"><a class="image__link" href="https://x.com/dpaluy/status/1992431276071219380?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2bfe0e2a-9a8d-4ef8-b565-71aec64567f6/image.png?t=1764581300"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dpaluy/status/1992431276071219380?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@dpaluy</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://bilalbudhani.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Bilal Budhani</a> made <a class="link" href="https://github.com/BilalBudhani/Logspect?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Logspect</a> open source</p><div class="image"><a class="image__link" href="https://github.com/BilalBudhani/Logspect?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/544373b0-58db-4fc9-9acd-1f72354637cd/image.png?t=1764450823"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/BilalBudhani/Logspect?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://github.com/BilalBudhani/Logspect</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/coorasse?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Alessandro Rodi</a> made a new PR for Rails → <a class="link" href="https://github.com/rails/rails/pull/56245?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Introduce DevToolsController for chrome workspaces</a></p><div class="image"><a class="image__link" href="https://github.com/rails/rails/pull/56245?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/07a328b9-bcd0-46b1-98d8-7a29538dad25/image.png?t=1764501452"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/rails/rails/pull/56245?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">https://github.com/rails/rails/pull/56245</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><a class="link" href="http://magicllama.ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Steve Ike</a> shared a takeaway from Ilya Sutskever podcast: ON THE FRONTIER OF AI</p><div class="image"><a class="image__link" href="https://x.com/steve_ike_/status/1993451475431727110?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1dd349b6-0e5f-4f66-9358-91d63b3e5e4f/image.png?t=1764451156"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/steve_ike_/status/1993451475431727110?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@steve_ike_</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/steve_ike_/status/1993451475431727110?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fad506c2-48a2-499d-8fb1-c678925d04e4/image.png?t=1764451320"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/steve_ike_/status/1993451475431727110?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@steve_ike_</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared an important advice about generated code by LLMs</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/1994088586858385451?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e4826fa5-43ee-475c-8cff-d55b74a1dd48/image.png?t=1764452312"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/1994088586858385451?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new edition about <a class="link" href="https://rubyweekly.com/issues/777?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">A modern Web-based Ruby regular expression editor</a></p><p class="paragraph" style="text-align:left;">🗞 This Week in Rails published a new edition about <a class="link" href="https://rubyonrails.org/2025/11/28/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Active Support Instrumentation Documentation, QueryIntent#execute! and more!</a></p><p class="paragraph" style="text-align:left;">🗞 Women On Rails Newsletter - International Version published a new article about <a class="link" href="https://womenonrailsinternational.substack.com/p/newsletter-wor-68-ruby-4?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow"> Newsletter WoR #68: Ruby 4.0 will be released this year, developers are shunning Next.js, a new role in AI, how we code in 2025...</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🎧</span><span style="color:rgb(0, 0, 0);font-size:medium;"> </span>Indie Rails published a new podcast episode → <a class="link" href="https://www.indierails.com/68?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Brian Casel - Teaching Devs to Build with AI</a></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🎧 </span>The Bike Shed published a new podcast episode → <a class="link" href="https://bikeshed.thoughtbot.com/484?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">484: The Season 1 Recap</a></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🎧 Remote Ruby published a new podcast episode →</span> <a class="link" href="https://www.buzzsprout.com/2260490/episodes/18258052-san-francisco-ruby-conference-recap?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">San Francisco Ruby Conference Recap</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 helsinkiruby.fi published new videos:</p><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.youtube.com/watch?v=WsD_848tfgI&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Revisiting Booleans in Ruby by Sarah Lima</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.youtube.com/watch?v=FMujxof3VLI&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Matti Paksula: Docker – Build the Perfect Home for Ruby</a></p></li></ul><p class="paragraph" style="text-align:left;">🎥 SupeRails published a new video about <a class="link" href="https://www.youtube.com/watch?v=DrUSwXmmwG4&utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Gem SimpleForm - the ultimate component library for Ruby on Rails forms. Episode 242</a></p><p class="paragraph" style="text-align:left;">🎥 Ruby on AI published a new video → <a class="link" href="https://www.youtube.com/watch?v=58kr1ROauZY&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">I wasted 2 years on Python. I&#39;m back to Ruby</a></p><p class="paragraph" style="text-align:left;">🎥 Go Rails published a new article about <a class="link" href="https://gorails.com/episodes/rails-8-1-markdown-renderer-and-mime-type?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Markdown Renderer & MIME Type in Rails 8.1</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Noel Rappin published a new article about <a class="link" href="https://noelrappin.com/blog/2025/11/ruby-and-its-neighbors-lisp/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby And Its Neighbors: Lisp</a></p><p class="paragraph" style="text-align:left;">🆕 Yaroslav Kurbatov published a new article about <a class="link" href="https://evilmartians.com/chronicles/unparser-real-file-lessons-migrating-ruby-tools-from-parser-to-prism?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Unparser: real life lessons migrating Ruby tools from Parser to Prism</a></p><p class="paragraph" style="text-align:left;">🆕 Sam Ruby published a new article about <a class="link" href="https://intertwingly.net/blog/2025/11/27/Ruby2JS-Prism-Support.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Ruby2JS Gets Prism Support - Enabling Shared Ruby/JavaScript Logic</a></p><p class="paragraph" style="text-align:left;">🆕 Jared White published a new article about <a class="link" href="https://www.fullstackruby.dev/the-art-of-code/2025/11/25/dont-make-me-think-testing-intuitive-expectations/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Don’t Make Me Think Principle, Testing, and Intuitive Expectations</a></p><p class="paragraph" style="text-align:left;">🆕 Julian Rubisch published a new article about <a class="link" href="https://blog.appsignal.com/2025/11/26/completing-integrating-and-publishing-our-game-with-dragonruby.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Completing, Integrating, and Publishing Our Game with DragonRuby</a></p><p class="paragraph" style="text-align:left;">🆕 Simon Chiu published a new article about <a class="link" href="https://sendbroadcast.net/blog/self-hosting-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Building Self-Hosting Rails Applications: Design Decisions & Why</a></p><p class="paragraph" style="text-align:left;">🆕 Dan Croak published a new article about <a class="link" href="https://dancroak.com/ruby/test?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Custom test framework</a></p><p class="paragraph" style="text-align:left;">🆕 Vishnu M published a new article about <a class="link" href="https://bigbinary.com/blog/debugging-stack-overflow-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Debugging a Stack Overflow in Rails 7.2.1.1</a></p><p class="paragraph" style="text-align:left;">🆕 Sharon Rosner published a new article about <a class="link" href="https://noteflakes.com/articles/2025-11-28-friday-update?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">OSS Friday Update - The Fiber Scheduler is Taking Shape</a></p><p class="paragraph" style="text-align:left;">🆕 Sam Ruby published a new article about <a class="link" href="https://intertwingly.net/blog/2025/11/25/ERB-Stimulus-Offline.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">From ERB to JavaScript - Server Computes, Hydration Joins, Templates Filter</a></p><p class="paragraph" style="text-align:left;">🆕 José Valim published a new article about <a class="link" href="https://tidewave.ai/blog/improving-web-accessibility-with-trace-augmented-generation?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Improving web accessibility with trace-augmented generation</a></p><p class="paragraph" style="text-align:left;">🆕 <span style="color:rgb(0, 0, 0);">łukasz Reszke</span> published a new article about <a class="link" href="https://blog.arkency.com/making-race-condition-tests-deterministic-with-cyclicbarrier-and-seam/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Making race condition tests deterministic with Concurrent::CyclicBarrier and seam</a></p><p class="paragraph" style="text-align:left;">🆕 Dennis Martinez published a new article about <a class="link" href="https://dev-tester.com/speed-up-your-rails-testing-workflow-with-local-ci/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Speed Up Your Rails Testing Workflow with Local CI</a></p><p class="paragraph" style="text-align:left;">🆕 Ed Toro published a new article about <a class="link" href="https://testdouble.com/insights/power-up-scripts-for-rails-apps-part-3-kubernetes?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Power up scripts for Rails apps Part 3: Kubernetes</a></p><p class="paragraph" style="text-align:left;">🆕 Trésor Bireke published a new article about <a class="link" href="https://feed.thoughtbot.com/link/24077/17216253/querying-encrypted-data-in-rails-using-deterministic-encryption?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Querying encrypted data in Rails using Deterministic Encryption</a></p><p class="paragraph" style="text-align:left;">🆕 Bastin published a new article about <a class="link" href="https://blog.saeloun.com/2025/11/25/rails-8-activestorage-blob-open-without-block/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails 8 enhances ActiveStorage::Blob#open to work without a block</a></p><p class="paragraph" style="text-align:left;">🆕 David Morales published a new article about <a class="link" href="https://develclan.com/single-responsibility-principle/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Single Responsibility Principle</a></p><p class="paragraph" style="text-align:left;">🆕 Jon Sully published a new article about <a class="link" href="https://judoscale.com/blog/process-utilization-in-rails-how-we-actually-track-that?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Process Utilization: How We Actually Track That</a></p><p class="paragraph" style="text-align:left;">🆕 J. Scott Johnson published a new article about <a class="link" href="https://new.fuzzyblog.io/2025/11/25/rails-rake-tasks-namespaces-can-make-shorter-tasks/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Namespaces Can Make Shorter Rake Tasks</a></p><p class="paragraph" style="text-align:left;">🆕 Amol Joshi<span style="color:rgb(0, 0, 0);font-size:medium;"> published a new article about </span><b><a class="link" href="https://blog.saeloun.com/2025/11/27/sql-warnings-ignored-error-codes-rails/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to Clean Up Your Rails Logs: Ignoring Benign SQL Warnings</a></b> published a new article about <a class="link" href="https://blog.saeloun.com/2025/11/28/customizing-rails-migrations-with-execution-strategies/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Customizing Rails Migrations with Execution Strategies</a></p><p class="paragraph" style="text-align:left;">🆕 Jorge Bejar published a new article about <a class="link" href="https://www.wyeworks.com/blog/2025/11/26/tips-for-effective-prototyping-rails-claude-code/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Tips for effective prototyping with Rails 8 and Claude Code</a></p><p class="paragraph" style="text-align:left;">🆕 Jack Rosa published a new article about <a class="link" href="https://hashrocket.com/blog/posts/how-to-rev-up-your-rails-development-with-mcp?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How To Rev Up Your Rails Development with MCP</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">📝 Amol Joshi published a new article about <a class="link" href="https://blog.saeloun.com/2025/11/28/customizing-rails-migrations-with-execution-strategies/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">Customizing Rails Migrations with Execution Strategies</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">✍️ Rachael Wright-Munn published a new article about <a class="link" href="https://www.chael.codes/blog/2025/11/19/sf-ruby-conference.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">SF Ruby Conference 2025</a></p><p class="paragraph" style="text-align:left;">✍️ Adrian Marin published a new article about <a class="link" href="https://blog.adrianthedev.com/sf-ruby-2025-and-the-thousand-people-framework?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">SF Ruby 2025 and the Thousand People Framework</a></p><p class="paragraph" style="text-align:left;">✍️ Rob Zolkos published a new article about <a class="link" href="https://www.zolkos.com/2025/11/26/mermaid-validation-skill-for-claude-code?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-159" target="_blank" rel="noopener noreferrer nofollow">A Mermaid Validation Skill for Claude Code</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=c07a8855-106c-4593-a09d-7438f012b5f3&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 158</title>
  <description>The one where Ruby releases 4.0.0.preview2, Maedi proposes a new supported syntax for defining types, and 12 podcast episodes are published</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8ee44adb-9081-4ccd-a9b7-e29028298257/cover-page-edition-158.png" length="375846" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-158</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-158</guid>
  <pubDate>Mon, 24 Nov 2025 13:18:01 +0000</pubDate>
  <atom:published>2025-11-24T13:18:01Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><div class="section" style="background-color:#fffae9;border-bottom-left-radius:10px;border-bottom-right-radius:10px;border-top-left-radius:10px;border-top-right-radius:10px;margin:0.0px 0.0px 0.0px 0.0px;padding:10.0px 10.0px 10.0px 10.0px;"><p class="paragraph" style="text-align:left;">A note from Lucian Ghinda, the curator of this newsletter.</p><p class="paragraph" style="text-align:left;">We just reached 6000+ subscribers 🎉 To celebrate this milestone, we want to focus the next edition on <b>Ruby Developer Experience. </b>I want to create a comprehensive edition with tools and resources that improve the lives of Ruby developers.</p><p class="paragraph" style="text-align:left;">If you know about any tool (gem, project, library, service, product) or resource (book, course, YouTube channel) or any other kind of project that improves the Ruby developer experience, please submit it here: <a class="link" href="https://github.com/ShortRuby/submit?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">https://github.com/ShortRuby/submit</a></p><p class="paragraph" style="text-align:left;">A few things to keep in mind:</p><ul><li><p class="paragraph" style="text-align:left;">It is ok to submit your own project.</p></li><li><p class="paragraph" style="text-align:left;">If you want to offer any discount for the readers, that is welcome too.</p></li><li><p class="paragraph" style="text-align:left;">Rails tools/resources/books are of course welcomed (a Ruby on Rails developer is a Ruby developer)</p></li></ul><p class="paragraph" style="text-align:left;">Looking forward to your submissions.</p></div><div class="button" style="text-align:center;"><a target="_blank" rel="noopener nofollow noreferrer" class="button__link" style="" href="{{live_url}}"><span class="button__text" style=""> Read online </span></a></div><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://bsky.app/profile/getajobmike.ruby.social.ap.brid.gy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Mike Perham</a> launched a new initiative → <a class="link" href="https://gem.coop/fellowship/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">the gem fellowship</a></p><div class="image"><a class="image__link" href="https://gem.coop/fellowship/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/62d0eb40-a59d-425b-90cc-1aa966157343/image.png?t=1763799947"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://gem.coop/fellowship/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">https://gem.coop/fellowship/</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 Dave Thomas launched a discount of <a class="link" href="https://media.pragprog.com/newsletters/2025-11-19.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">50% for Pragmatic Bookshelf books</a> → visit <a class="link" href="https://pragprog.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow"> pragprog.com</a></p><div class="image"><a class="image__link" href="https://media.pragprog.com/newsletters/2025-11-19.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d36a7bae-19f1-4308-9257-498598064199/image.png?t=1763983045"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://media.pragprog.com/newsletters/2025-11-19.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">https://media.pragprog.com/newsletters/2025-11-19.html</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><h3 class="heading" style="text-align:left;" id="84-deploy-gen-ai-use-cases-in-under">84% Deploy Gen AI Use Cases in Under Six Months – Real-Time Web Access Makes the Difference</h3><div class="image"><a class="image__link" href="https://brightdata.com/ai?brnd-mkt_newsletter_beehiiv_v2sc_{{publication_alphanumeric_id}}=&hs_signup=1&_bhiiv=opp_11839502-d3ba-4a54-a806-6391f7871367_c0b1664b&bhcl_id=018ebd0c-6d9b-4731-a1f3-98e983e283ee_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/90eac353-ddfe-4609-85e2-981512608161/banner_2a.png?t=1762463896"/></a></div><p class="paragraph" style="text-align:left;">Your product is only as good as the data it’s built on. Outdated, blocked, or missing web sources force your team to fix infrastructure instead of delivering new features. </p><p class="paragraph" style="text-align:left;"><a class="link" href="https://brightdata.com/ai?brnd-mkt_newsletter_beehiiv_v2sc_{{publication_alphanumeric_id}}=&hs_signup=1&_bhiiv=opp_11839502-d3ba-4a54-a806-6391f7871367_c0b1664b&bhcl_id=018ebd0c-6d9b-4731-a1f3-98e983e283ee_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Bright Data</a> connects your AI agents to public web data in real time with reliable APIs. That means you spend less time on maintenance and more time building. No more chasing after unexpected failures or mismatches your agents get the data they need, when they need it. </p><p class="paragraph" style="text-align:left;">Teams using <a class="link" href="https://brightdata.com/ai?brnd-mkt_newsletter_beehiiv_v2sc_{{publication_alphanumeric_id}}=&hs_signup=1&_bhiiv=opp_11839502-d3ba-4a54-a806-6391f7871367_c0b1664b&bhcl_id=018ebd0c-6d9b-4731-a1f3-98e983e283ee_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Bright Data</a> consistently deliver stable and predictable products, accelerate feature development, and unlock new opportunities with continuous, unblocked web access.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://brightdata.com/ai?brnd-mkt_newsletter_beehiiv_v2sc_{{publication_alphanumeric_id}}=&hs_signup=1&_bhiiv=opp_11839502-d3ba-4a54-a806-6391f7871367_c0b1664b&bhcl_id=018ebd0c-6d9b-4731-a1f3-98e983e283ee_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Power Your AI</a></p><hr class="content_break"><p class="paragraph" style="text-align:left;"></p><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><a class="link" href="https://x.com/railscamp_USA?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Rails Camp Usa</a> has opened early bird registration with only 30 tickets left. Hurry up and grab a ticket for yourself, right here → <a class="link" href="https://west.railscamp.us/2026?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">RailsCamp26</a></p><div class="image"><a class="image__link" href="https://x.com/railscamp_USA/status/1990072541231108290?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f3299110-26e9-4f28-bb02-3d6d18f533c9/image.png?t=1763800738"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/railscamp_USA/status/1990072541231108290?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@railscamp_USA</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/railscamp_USA/status/1990072541231108290?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a08ba8f5-8072-4e11-ae7e-39f6860f1d8f/image.png?t=1763800762"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/railscamp_USA/status/1990072541231108290?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@railscamp_USA</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://x.com/tropical_rb?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Tropical.Rb</a> announced that tickets sales have started. If you’re interested, you can see the tickets available here → <a class="link" href="https://www.sympla.com.br/evento/tropical-on-rails-2026-the-brazilian-rails-conference/3181423?share_id=copiarlink&referrer=t.co&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Tropical on Rails 2026 | The Brazilian Rails Conference</a></p><div class="image"><a class="image__link" href="https://x.com/tropical_rb/status/1990438690955665694?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0c2b39b0-12f6-44d3-b73d-f817cd0be0d3/image.png?t=1763801137"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/tropical_rb/status/1990438690955665694?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@tropical_rb</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://twitter.com/wrocloverb?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Wroclove.Rb</a> is looking for speakers for their next year’s event. If you’re interested, submit your talk here → <a class="link" href="https://wrocloverb.com/speakers/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">CFP 2026</a></p><div class="image"><a class="image__link" href="https://x.com/wrocloverb/status/1990881789938663849?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1655bc3b-7963-42ec-a12a-54fb1f829e8b/image.png?t=1763802325"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/wrocloverb/status/1990881789938663849?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@wrocloverb</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://x.com/ruby_african?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">African Ruby Community</a> is looking for speakers for their next year’s event. If you’re interested, submit your talk here → <a class="link" href="https://www.papercall.io/ruby-conf-africa-2026?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">CFP Ruby Conf 2026</a></p><div class="image"><a class="image__link" href="https://x.com/ruby_african/status/1991406408743411988?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/26743a06-b95b-4067-aef5-a514c4ab1c91/image.png?t=1763803451"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/ruby_african/status/1991406408743411988?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@ruby_african</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="http://rubycon.it?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Rubycon Italy</a> is looking for speakers for their next year’s event. If you’re interested, submit your talk here → <a class="link" href="https://rubycon.it/cfp?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">CFP RubyconItaly</a></p><div class="image"><a class="image__link" href="https://x.com/rubyconitaly/status/1991576012736590160?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0be608e8-d79e-4d69-bdc4-bd232a27d9be/image.png?t=1763805412"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rubyconitaly/status/1991576012736590160?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@rubyconitaly</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://rubyconf.at?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Ruby Conf Austria</a> is looking for speakers for their next year’s event. If you’re interested to submit your talk, hurry up, there are few days left → <a class="link" href="https://www.papercall.io/rubyconfaustria2026?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">RubyConf Austria 2026</a></p><div class="image"><a class="image__link" href="https://x.com/RubyConfAT/status/1992188650914787461?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/31f37df4-6821-42b3-b08d-fbf335494b15/image.png?t=1763842733"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/RubyConfAT/status/1992188650914787461?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@RubyConfAT</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉 Ruby 4.0.0 preview2 has been released. <a class="link" href="https://www.ruby-lang.org/en/news/2025/11/17/ruby-4-0-0-preview2-released/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Check out the blog post for more details.</a></p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c2275b19-56e0-4b02-be3c-e720487a9fe8/image.png?t=1763801686"/></div><p class="paragraph" style="text-align:left;">👉️ <a class="link" href="https://twitter.com/hsbt?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Hiroshi Shibata</a> announced two new releases → <a class="link" href="https://github.com/ruby/rubygems/releases/tag/bundler-v4.0.0.beta1?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">bundler-v4.0.0.beta1</a> & <a class="link" href="https://github.com/ruby/rubygems/releases/tag/v4.0.0.beta1?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">v4.0.0.beta1</a></p><div class="image"><a class="image__link" href="https://x.com/hsbt/status/1991415368242573376?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0955b9b5-c36b-4105-908f-cce8a59097a7/image.png?t=1763803593"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/hsbt/status/1991415368242573376?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@hsbt</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉️ <a class="link" href="https://twitter.com/KnuX?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Ivo Anjo</a> shared a blog post about their effort at Datadog to optimize Ruby performance. Here’s the blog post for more detailed insights → <a class="link" href="https://www.datadoghq.com/blog/ruby-performance-optimization/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Optimizing Ruby performance: Observations from thousands of real-world services</a></p><div class="image"><a class="image__link" href="https://www.datadoghq.com/blog/ruby-performance-optimization/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c4de875a-4433-4f5c-a3e9-e3b037927976/image.png?t=1763805629"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.datadoghq.com/blog/ruby-performance-optimization/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">https://www.datadoghq.com/blog/ruby-performance-optimization/</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><h3 class="heading" style="text-align:left;" id="choose-the-right-ai-tools"> Choose the Right AI Tools</h3><div class="image"><a class="image__link" href="https://www.mindstream.news/subscribe?utm_medium=incentivized-signup&utm_source=beehiivads&utm_campaign={{publication_alphanumeric_id}}&utm_term=Version-F&_bhiiv=opp_95b0b31c-1a45-4158-a1a4-45f354df0c51_8c74c9cb&bhcl_id=63e0be1e-b9f1-464b-ba9d-12cef83fa224_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e303bd0c-2d63-4250-a70b-feec2097a787/Free_vs_Paid_Opt2_HD_1200x628__1_.png?t=1753305767"/></a></div><p class="paragraph" style="text-align:left;">With thousands of AI tools available, how do you know which ones are worth your money? Subscribe to <a class="link" href="https://www.mindstream.news/subscribe?utm_medium=incentivized-signup&utm_source=beehiivads&utm_campaign={{publication_alphanumeric_id}}&utm_term=Version-F&_bhiiv=opp_95b0b31c-1a45-4158-a1a4-45f354df0c51_8c74c9cb&bhcl_id=63e0be1e-b9f1-464b-ba9d-12cef83fa224_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Mindstream</a> and get our expert guide comparing 40+ popular AI tools. Discover which free options rival paid versions and when upgrading is essential. Stop overspending on tools you don&#39;t need and find the perfect AI stack for your workflow.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://www.mindstream.news/subscribe?utm_medium=incentivized-signup&utm_source=beehiivads&utm_campaign={{publication_alphanumeric_id}}&utm_term=Version-F&_bhiiv=opp_95b0b31c-1a45-4158-a1a4-45f354df0c51_8c74c9cb&bhcl_id=63e0be1e-b9f1-464b-ba9d-12cef83fa224_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Subscribe to Get Your Free Comparison</a></p><hr class="content_break"><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">️</span>️💻 <a class="link" href="https://predkelis.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Elvinas Predkelis</a> shared how he attached icons to Rails models</p><div class="image"><a class="image__link" href="https://x.com/predkelis/status/1990690444184088855?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/670a5d99-6ea0-47ba-a044-c12fd0313460/image.png?t=1763801801"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/predkelis/status/1990690444184088855?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@predkelis</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a> shared a code sample on how to reflect any changes in the data without having to refresh </p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/1991515415802179685?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b2f9802a-ce19-4907-94cd-4ef0201ad5b3/image.png?t=1763841614"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/1991515415802179685?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/1991515415802179685?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2415c81e-5773-433f-b008-331ed7ac3e75/image.png?t=1763841636"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/1991515415802179685?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/1991515415802179685?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c19324e4-af58-4880-aae9-204294200220/image.png?t=1763841650"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/1991515415802179685?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a> shared an interesting approach to extract partials just like methods</p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/1991798165381759256?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/63118e53-3547-4ea3-a16e-cbbb4cda310a/image.png?t=1763842155"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/1991798165381759256?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><p class="paragraph" style="text-align:left;">️<a class="link" href="https://x.com/rafaelsales?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Raf</a> replied</p><div class="image"><a class="image__link" href="https://x.com/rafaelsales/status/1991828240391114921?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a530f986-c689-4ea2-9182-5679efb54d3b/image.png?t=1763842234"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rafaelsales/status/1991828240391114921?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@rafaelsales</a></p></span></div></div><p class="paragraph" style="text-align:left;">Jorge responded back with a convention from 37Signals</p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/1991833062741844460?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4b09eaa7-ac85-4c8c-a598-c2dd5fe23baa/image.png?t=1763842302"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/1991833062741844460?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/jkostolansky?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Juraj Kostolanský</a> posted a code sample on how to have an array or hash without blank items</p><div class="image"><a class="image__link" href="https://x.com/jkostolansky/status/1990832861776146631?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/32c82f1e-e51c-4f87-a71a-987acd7ca306/image.png?t=1763904165"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jkostolansky/status/1990832861776146631?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@jkostolansky</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/yarotheslav?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Yaroslav Shmarov</a> shared different ways to write a simple button using Rails UI libraries</p><div class="image"><a class="image__link" href="https://x.com/yarotheslav/status/1992276153600483656?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/412b2bed-e0d2-4816-a67d-1b732ea3366c/image.png?t=1763904246"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/yarotheslav/status/1992276153600483656?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@yarotheslav</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">📐 <a class="link" href="https://maedi.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Maedi Prichard</a> published a new gem <b><a class="link" href="https://codeberg.org/low_ruby/low_type/src/branch/main?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">low_type</a></b><span style="color:rgb(0, 0, 0);font-size:medium;"> </span><span style="color:rgb(0, 0, 0);">- </span><span style="color:rgb(0, 0, 0);"><i>&quot;An elegant and simple way to define types in Ruby, only when you need them” </i></span><span style="color:rgb(0, 0, 0);">that proposes an interesting way to implement some kind of type definitions: </span></p><div class="image"><a class="image__link" href="https://github.com/low-rb/low_type?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/20321eac-d120-4574-ae0d-20e2737e0a04/image.png?t=1763983910"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/low-rb/low_type?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">https://github.com/low-rb/low_type</a></p></span></div></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">️</span>📐️ <a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a> shared some thoughts on Turbo. Here is just a part of his post, to get all the details, <a class="link" href="https://threadreaderapp.com/thread/1990140017625514440.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">please read the full thread</a></p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/1990140017625514440?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/868ff09b-890f-4806-a96d-30ea8aed96b5/image.png?t=1763801019"/></a><div class="image__source"><span class="image__source_text"><p>theSource: <a class="link" href="https://x.com/jorgemanru/status/1990140017625514440?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/BramJetten?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Bram Jetten</a> shared how Ruby has received some performance improvements lately</p><div class="image"><a class="image__link" href="https://x.com/BramJetten/status/1991438683229286849?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f13da4a4-0bd8-4038-93b3-a8ec83ca0f41/image.png?t=1763803879"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/BramJetten/status/1991438683229286849?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@BramJetten</a></p></span></div></div><p class="paragraph" style="text-align:left;">️️He received some replies:</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/1991457691882123313?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f3f2fe1a-ec6a-4828-81f4-dfacbfbf90f3/image.png?t=1763804599"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/1991457691882123313?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/jan_mtrj/status/1991525395599159756?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9a61bd4b-098f-41ff-b245-21f06041c90a/image.png?t=1763804962"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jan_mtrj/status/1991525395599159756?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@jan_mtrj</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/AlpuhaP/status/1991532880942756007?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/72481353-d09a-4830-a52e-df1aa1f44c55/image.png?t=1763805260"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/AlpuhaP/status/1991532880942756007?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@AlpuhaP</a></p></span></div></div><p class="paragraph" style="text-align:left;">📐 <a class="link" href="https://twitter.com/_st0012?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Stan Lo</a> shared how Ruby’s developer experience evolved recently</p><div class="image"><a class="image__link" href="https://x.com/_st0012/status/1991453567744634911?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/71c33c3f-3a2d-44f4-8167-e6e2a3d3007a/image.png?t=1763804372"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_st0012/status/1991453567744634911?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@_st0012</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/_st0012/status/1991453567744634911?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/63a219e3-1e2b-4e0d-99c3-505758d347c4/image.png?t=1763804391"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_st0012/status/1991453567744634911?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@_st0012</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/_st0012/status/1991453567744634911?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/90539703-eec6-4946-92c7-30e446eb7e38/image.png?t=1763804432"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_st0012/status/1991453567744634911?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@_st0012</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://glaucocustodio.github.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Glauco Custódio</a> shared a new feature in Rails 8.1. For more details, check his blog post → <a class="link" href="https://glaucocustodio.github.io/2025/11/20/new-in-rails-8.1-bring-your-favorite-editor-to-error-pages/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">New in Rails 8.1: Bring Your Favorite Editor to Error Pages</a></p><div class="image"><a class="image__link" href="https://x.com/glaucocustodio/status/1991462716079501743?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/39e7ce4d-28e6-4968-ade9-24b739d851f0/image.png?t=1763804658"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/glaucocustodio/status/1991462716079501743?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@glaucocustodio</a></p></span></div></div><div class="image"><a class="image__link" href="https://glaucocustodio.github.io/2025/11/20/new-in-rails-8.1-bring-your-favorite-editor-to-error-pages/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0eee38f7-0ec0-448a-8cfb-6232446855aa/image.png?t=1763804752"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://glaucocustodio.github.io/2025/11/20/new-in-rails-8.1-bring-your-favorite-editor-to-error-pages/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">https://glaucocustodio.github.io/2025/11/20/new-in-rails-8.1-bring-your-favorite-editor-to-error-pages/</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://bsky.app/profile/joel.drapper.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Joel Drapper</a> shared some words on Slim and Haml. This is just a part of his thread, <a class="link" href="https://skywriter.blue/pages/did:plc:uqrryaveb7djvaatfljbdhcb/post/3m62mohla6c25?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">we recommend to read it entirely on Skywriter</a>.</p><div class="image"><a class="image__link" href="https://skywriter.blue/pages/did:plc:uqrryaveb7djvaatfljbdhcb/post/3m62mohla6c25?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/dea4d44c-deb6-4cad-ade8-e2a9d58fb63f/image.png?t=1763903857"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/joel.drapper.me/post/3m62mohla6c25?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://joel.drapper.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">joel.drapper.me</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 <a class="link" href="http://seafoam.media?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Rhiannon Payne</a> launched a new YouTube series → Ruby Around The World. If you want to see his first video from his journey, check it right here → <a class="link" href="https://www.youtube.com/watch?v=TQBUNn-qJp8&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Japan is the Heart of Ruby, But Feels Far From Rails</a></p><div class="image"><a class="image__link" href="https://x.com/rhiannon_io/status/1990805093558726925?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c200f7de-f802-497a-9af0-e2125ab9964c/image.png?t=1763841230"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rhiannon_io/status/1990805093558726925?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@rhiannon_io</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="http://stuyam.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Stuart</a> announced a new gem → <a class="link" href="https://github.com/stuyam/hotwire_native_version_gate?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">hotwire_native_version_gate</a> - <i>“Easy version gating for Hotwire Native Apps in Rails“</i></p><div class="image"><a class="image__link" href="https://x.com/StuYam/status/1990858858768544197?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8149bf4f-0b17-48ef-b111-abc8a42025be/image.png?t=1763802113"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/StuYam/status/1990858858768544197?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@StuYam</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/sebyx07?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Sebyx07</a> published a new gem <b><a class="link" href="https://github.com/sebyx07/better_structure_sql?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">better_structure_sql</a></b><span style="color:rgb(0, 0, 0);font-size:medium;"> </span><span style="color:rgb(0, 0, 0);">- </span><span style="color:rgb(0, 0, 0);"><i>&quot;Pure Ruby database schema dumper for Rails applications supporting PostgreSQL, MySQL, and SQLite. Generates clean, deterministic structure.sql files without pg_dump/mysqldump/sqlite3 CLI dependencies. Supports both single-file and multi-file output for massive schemas with tens of thousands of database objects. Includes schema versioning with ZIP storage and web UI for browsing versions. &quot;</i></span></p><div class="image"><a class="image__link" href="https://github.com/sebyx07/better_structure_sql?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f14026ec-a727-474f-8aa0-1dd2c3320095/image.png?t=1763957771"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/sebyx07/better_structure_sql?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">https://github.com/sebyx07/better_structure_sql</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><a class="link" href="https://x.com/kieranklaassen?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Kieran Klaassen</a><span style="color:rgb(0, 0, 0);font-size:medium;"> announced a new version of </span><b><a class="link" href="https://github.com/kieranklaassen/blazer-ai?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">blazer-ai: AI-powered natural language to SQL generation for Blazer using RubyLLM</a></b></p><div class="image"><a class="image__link" href="https://x.com/kieranklaassen/status/1992477748066169167?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cdb7daa0-4b7a-4ef6-91e3-d21d64012e2b/image.png?t=1763979595"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/kieranklaassen/status/1992477748066169167?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@kieranklaassen</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://bsky.app/profile/diaconou.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Stephen</a> announced an update for <a class="link" href="https://github.com/stevegeek/encoded_id?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">encoded_id</a> - <i>“Turn numeric or hex IDs into reversible and human friendly obfuscated strings. Also supports Rails ActiveRecord models“</i></p><div class="image"><a class="image__link" href="https://github.com/stevegeek/encoded_id/releases/tag/v1.0.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/74074432-cac8-4f95-b199-27e3a07322de/image.png?t=1763800107"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/stevegeek/encoded_id/releases/tag/v1.0.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">https://github.com/stevegeek/encoded_id/releases/tag/v1.0.0</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://github.com/muriloduarte?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Murilo Duarte</a> made an improvement for Rails → <a class="link" href="https://github.com/rails/rails/pull/56128?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Enhance rate limiting to support dynamic to: and within: options</a></p><div class="image"><a class="image__link" href="https://github.com/rails/rails/pull/56128?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/335d2c14-659d-425d-83ea-bc56c51e57ac/image.png?t=1763805117"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/rails/rails/pull/56128?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">https://github.com/rails/rails/pull/56128</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><a class="link" href="https://x.com/techNmak?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Tech With Mak</a> made a post about how random UUIDs affect database performance. Here is just a part of his post, <a class="link" href="https://threadreaderapp.com/thread/1990451715188097101.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">make sure to read the thread completely.</a></p><div class="image"><a class="image__link" href="https://x.com/techNmak/status/1990451715188097101?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0a2e622e-45dc-4ac4-b8c1-a8cc5d4ee0be/image.png?t=1763801318"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/techNmak/status/1990451715188097101?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@techNmak</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://x.com/ThePrimeagen?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">The Primeagen</a> shared his perspective on how practicing programming and becoming an expert remains crucial in this AI era</p><div class="image"><a class="image__link" href="https://x.com/ThePrimeagen/status/1991346714972688819?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f8d05d27-d79c-4532-8c54-1c53ea7ef95c/image.png?t=1763803151"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/ThePrimeagen/status/1991346714972688819?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@ThePrimeagen</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/jorgemanru?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Jorge Manrubia</a> talked a little bit about refactoring</p><div class="image"><a class="image__link" href="https://x.com/jorgemanru/status/1991505520553767010?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/459a8e94-b49a-4702-ab53-99d3ae8f581d/image.png?t=1763804833"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/jorgemanru/status/1991505520553767010?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">@jorgemanru</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 Kent Beck published an article about <a class="link" href="https://tidyfirst.substack.com/p/why-does-development-slow?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Why Does Development Slow?</a></p><div class="image"><a class="image__link" href="https://tidyfirst.substack.com/p/why-does-development-slow?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/38e1046e-00f8-472d-9e92-a07098711ba8/image.png?t=1763984152"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://tidyfirst.substack.com/p/why-does-development-slow?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">https://tidyfirst.substack.com/p/why-does-development-slow</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 Ruby On Rails published a new edition → <a class="link" href="https://rubyonrails.org/2025/11/21/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">This Week in Rails: November 21, 2025</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new article about <a class="link" href="https://rubyweekly.com/issues/776?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">An early look at Ruby 4.0 and RubyGems 4.0</a></p><p class="paragraph" style="text-align:left;">🗞 Matt Solt published a new edition → <a class="link" href="https://rubyai.beehiiv.com/p/ruby-ai-news-november-19th-2025?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby AI News - November 19th, 2025</a></p><p class="paragraph" style="text-align:left;">🗞 Joe Masilotti published a new edition → <a class="link" href="https://newsletter.masilotti.com/p/hotwire-native-deep-dive-push-notifications?r=9nfdo&utm_campaign=post&utm_medium=web" target="_blank" rel="noopener noreferrer nofollow">Hotwire Native deep dive: Push Notifications</a></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🗞</span><span style="color:rgb(0, 0, 0);font-size:medium;"> </span>Hotwire Weekly<span style="color:rgb(0, 0, 0);font-size:medium;"> published a new edition → </span><b><a class="link" href="https://www.hotwireweekly.com/archive/week-47-hotwire-native-deep-dive-hotwire-native-version-gates/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Week 47 - Hotwire Native Deep Dive, Version Gates, and more! • Buttondown</a></b></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 On Rails published a new podcast episode → <a class="link" href="https://www.buzzsprout.com/2462975/episodes/18215229?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Kayla Reopelle: What Your Rails App Is Trying To Tell You</a></p><p class="paragraph" style="text-align:left;">🎧 Errol Schmidt published a new podcast episode → <a class="link" href="https://www.youtube.com/watch?v=ZWLDwjPjshI&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Technology for Humans: Carlos Lopes</a></p><p class="paragraph" style="text-align:left;">🎧 Pabs published a new podcast episode → <b><a class="link" href="https://open.spotify.com/episode/6jhKLVhHuJJnTdrTbHfTRc?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">25 - On Taste with Sandjiv and Mathieu - A Junior, A Senior and I</a></b></p><p class="paragraph" style="text-align:left;">🎧 Jason Swett published a new podcast episode → <a class="link" href="https://www.codewithjason.com/podcast/18213581-275-irina-nazarova-organizer-of-sf-ruby-conference/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Code with Jason Podcast: 275 - Irina Nazarova, Organizer of SF Ruby Conference</a></p><p class="paragraph" style="text-align:left;">🎧 The Ruby AI Podcast published a new podcast episode → <a class="link" href="https://www.therubyaipodcast.com/2388930/episodes/18211122-the-latent-spark-carmine-paolino-on-ruby-s-ai-reboot?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Latent Spark: Carmine Paolino on Ruby’s AI Reboot</a></p><p id="code-and-the-coding-coders-who-code" class="paragraph" style="text-align:left;">🎧️ Code and the Coding Coders who Code it published a new podcast episode → <a class="link" href="https://podcast.drbragg.dev/episodes/episode-59-scott-werner/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Episode 59 - Scott Werner</a></p><p class="paragraph" style="text-align:left;">🎧 The Bike Shed published a new edpisode → <a class="link" href="https://bikeshed.thoughtbot.com/483?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">483: Comparing notes on note-taking</a></p><p class="paragraph" style="text-align:left;">🎧 Ruby Around The World published a new episode → <a class="link" href="https://www.youtube.com/watch?v=TQBUNn-qJp8&utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Japan is the Heart of Ruby, But Feels Far From Rails | OKURA Masafumi, Organizer of Kaigi on Rails</a></p><p class="paragraph" style="text-align:left;">🎧 Remote Ruby published a new episode → <a class="link" href="https://www.buzzsprout.com/2260490/episodes/18207528-rails-business-with-brendan-buckingham-and-ryan-frisch?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Rails Business with Brendan Buckingham and Ryan Frisch</a></p><p class="paragraph" style="text-align:left;">🎧 Rails Business published a new episode → <a class="link" href="https://www.buzzsprout.com/2435951/episodes/18228402-communicating-project-requirements?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Communicating Project Requirements</a></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🎧</span><span style="color:rgb(0, 0, 0);font-size:medium;"> </span>Errol Schmidt<span style="color:rgb(0, 0, 0);font-size:medium;"> published a new episode → </span><b><a class="link" href="https://greg.molnar.io/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ethical hacker, Ruby Developer, Rails developer | Greg Molnar</a></b></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🎧 </span>Ruby Rogues published a new episode → <a class="link" href="https://www.spreaker.com/episode/the-new-era-of-rails-markdown-offline-mode-and-smarter-dev-tools-ruby-681--68711620?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The New Era of Rails: Markdown, Offline Mode, and Smarter Dev Tools - RUBY 681</a></p><h3 class="heading" style="text-align:left;" id="slides">📚️ Slides</h3><p class="paragraph" style="text-align:left;">📚️ Stan Lo published his slides from RubyWorldConf → <a class="link" href="https://github.com/st0012/slides/blob/main/2025-11-06-ruby-world-conference/RubyPrize%202025.pdf?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Ruby DX - Past & Future</a></p><p class="paragraph" style="text-align:left;">📚️ Jeremy Evans published his slides from San Francisco Ruby Conference → <b><a class="link" href="https://code.jeremyevans.net/presentations/sfruby2025/index.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Thin CLIent Approach</a></b></p><p class="paragraph" style="text-align:left;">📚️ Vladimir Dementyev published his slides from San Francisco Ruby Conference → <a class="link" href="https://evilmartians.com/events/vladimir-dementyev-keynote-sf-ruby-conference?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Keynote: Rails X</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 SupeRails published a new video → <a class="link" href="https://www.youtube.com/watch?v=9HlEU-PENic&utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Friendly Show: How to get a Ruby Passport?</a></p><p class="paragraph" style="text-align:left;">🎥 BeautifulRuby.com published a new “walking podcast“ video → <a class="link" href="https://www.youtube.com/watch?v=DcqgcMxas7o&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Adrian Marin, founder of Avo, talks about the business of selling software to developers</a></p><p class="paragraph" style="text-align:left;">🎥 Ryan Singer published a new video → <a class="link" href="https://www.youtube.com/watch?v=Holk0GsGYfY&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">End-to-End with Shape Up: A Real-World Case Study</a></p><p class="paragraph" style="text-align:left;">🎥 SupeRails published a new video → <a class="link" href="https://www.youtube.com/watch?v=kglKNHoQRGU&utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby on Rails #241 CSS Container queries. Breakpoints based on parent container width, not browser</a></p><p class="paragraph" style="text-align:left;">🎥 Go Rails published a new video → <a class="link" href="https://gorails.com/episodes/module-extend-self?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Module extend self</a></p><p class="paragraph" style="text-align:left;">🎥 Thoughtbot published a new video → <a class="link" href="https://www.youtube.com/watch?v=yW9I_YkQQkc&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Pair programming with AI</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Justin Searls published a new article about <a class="link" href="https://justin.searls.co/posts/tdd-is-more-important-than-ever/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">TDD is more important than ever</a></p><p class="paragraph" style="text-align:left;">🆕 Pat Shaughnessy published a new article about <a class="link" href="https://patshaughnessy.net/2025/11/17/compiling-ruby-to-machine-language?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Compiling Ruby To Machine Language</a></p><p class="paragraph" style="text-align:left;">🆕 Obie Fernandez published a new article about <a class="link" href="https://obie.medium.com/ruby-was-ready-from-the-start-4b089b17babb?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Ruby Was Ready From The Start</a></p><p class="paragraph" style="text-align:left;">🆕 Kevin Murphy published a new article about <a class="link" href="https://kevinjmurphy.com/posts/dont-rest-on-your-laurels/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Don&#39;t REST on your Laurels</a></p><p class="paragraph" style="text-align:left;">🆕 Giménez Silva Germán Alberto published a new article about <a class="link" href="https://rubystacknews.com/2025/11/18/mastering-rubys-object-model-and-metaprogramming-in-rails/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby isn’t “just elegant”—it’s a powerhouse.</a></p><p class="paragraph" style="text-align:left;">🆕 Nikhil published a new article about <a class="link" href="https://www.railscarma.com/blog/how-to-create-and-work-with-date-objects-in-ruby-on-rails/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to Create and Work With Date Objects in Ruby on Rails</a></p><p class="paragraph" style="text-align:left;">🆕 André Arko published a new article about <a class="link" href="https://andre.arko.net/2025/11/20/operating-rails/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Operating Rails: what about after you deploy?</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">📝 Dennis Paagman published a new article about <a class="link" href="https://paagman.dev/rails-local-ci-with-heroku/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Making sure local CI is green before deploying to Heroku</a></p><p class="paragraph" style="text-align:left;">📝 Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/update-favicon-badge-turbo-stream/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Update favicon with badge using custom turbo streams in Rails</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">✍️ Josef Strzibny published a new article about <a class="link" href="https://strzibny.name/blog/comparing-programming-language-communities-on-reddit?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Comparing programming communities on Reddit</a></p><p class="paragraph" style="text-align:left;">✍️ Bozhidar Batsov published a new article about <a class="link" href="https://batsov.com/articles/2025/11/16/burst-driven-development-my-approach-to-oss-projects-maintenance/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">Burst-driven Development: My Approach to OSS Projects Maintenance</a></p><p class="paragraph" style="text-align:left;">✍️ Pabs published a new article about <a class="link" href="https://blog.codemanship.dev/my-code-is-a-liar?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-158" target="_blank" rel="noopener noreferrer nofollow">My code is a liar</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=b30d5bd5-b87f-4828-ba3a-02f046cea703&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Five Ruby Links #3</title>
  <description>First steps into game development with DragonRuby, discover Ruby&#39;s Smalltalk neighbors, Hunt a Ruby memory bug, See arguments against RSpec shared examples, and color Deterministic Mesh Dradient Avatars with Ruby</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d9406d2-d91d-4fbe-ab30-7f83b5dee57a/five-ruby-links-03.png" length="290093" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/five-ruby-links-03</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/five-ruby-links-03</guid>
  <pubDate>Tue, 11 Nov 2025 13:53:32 +0000</pubDate>
  <atom:published>2025-11-11T13:53:32Z</atom:published>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Five Ruby Links]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">If I were to recommend five articles published last week to read, here is what I would recommend:</p><p id="1-julian-rubisch-published-a-new-ar" class="paragraph" style="text-align:left;">1️⃣Julian Rubisch published a new article about <a class="link" href="https://blog.appsignal.com/2025/11/05/an-introduction-to-game-development-with-dragonruby.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">An Introduction to Game Development with DragonRuby</a></p><p class="paragraph" style="text-align:left;">This is a great exploration about how Ruby can be used outside of web apps and I always wanted to try Dragon Ruby. This post gives you enough information to get you excited to have fun with Dragon Ruby. </p><div class="image"><a class="image__link" href="https://blog.appsignal.com/2025/11/05/an-introduction-to-game-development-with-dragonruby.html?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3aae1e54-68ae-406f-b1ae-1278e49880a8/image.png?t=1762855870"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://blog.appsignal.com/2025/11/05/an-introduction-to-game-development-with-dragonruby.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">An Introduction to Game Development with DragonRuby</a></p></span></div></div><p id="1-there-is-no-such-thing-as-a-globa" class="paragraph" style="text-align:left;">2️⃣ Noel Rappin published a new article about <a class="link" href="https://noelrappin.com/blog/2025/11/ruby-and-its-neighbors-smalltalk/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby And Its Neighbors: Smalltalk</a></p><p class="paragraph" style="text-align:left;">I liked very much to read this exploration about Smalltalk and understand more from Noel who used it professionally. It covers ome very nice innovations that Smalltalk had and this deep dive into Smalltalk helped me understand more about what Ruby borrowed from there. </p><div class="image"><a class="image__link" href="https://noelrappin.com/blog/2025/11/ruby-and-its-neighbors-smalltalk/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2d2802ab-f2f0-486f-a21b-172a16f12bfd/image.png?t=1762856007"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://noelrappin.com/blog/2025/11/ruby-and-its-neighbors-smalltalk/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby And Its Neighbors: Smalltalk</a></p></span></div></div><p id="3-maciej-mensfeld-published-a-new-a" class="paragraph" style="text-align:left;">3️⃣ Maciej Mensfeld published a new article about <a class="link" href="https://mensfeld.pl/2025/11/ruby-ffi-gc-bug-hash-becomes-string/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">When Your Hash Becomes a String: Hunting Ruby’s Million-to-One Memory Bug</a></p><p class="paragraph" style="text-align:left;">This reads like an professional investigator looking at a very suspicious problem and taking us along the way. I enjoyed going with Maciej on this trip and finding clues along the way and learning a bit more about Ruby memory model. </p><div class="image"><a class="image__link" href="https://mensfeld.pl/2025/11/ruby-ffi-gc-bug-hash-becomes-string/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a64d27e9-5e79-4fd9-91f7-30a3a03a7ad3/image.png?t=1762856204"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://mensfeld.pl/2025/11/ruby-ffi-gc-bug-hash-becomes-string/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">When Your Hash Becomes a String: Hunting Ruby’s Million-to-One Memory Bug</a></p></span></div></div><p class="paragraph" style="text-align:left;">4️⃣ Jason Swett published an article about <a class="link" href="https://www.saturnci.com/rspec-shared-examples.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-3" target="_blank" rel="noopener noreferrer nofollow">RSpec shared examples unmasked</a></p><p class="paragraph" style="text-align:left;">Jason goes over BetterSpec recommendation for using shared examples and builds up an argument for why in testing DRY might not be a good principle to follow. </p><div class="image"><a class="image__link" href="https://www.saturnci.com/rspec-shared-examples.html?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/712e8a3a-41f7-40cd-b869-95095cd78d8b/Xnapper-2025-11-11-15.41.42.png?t=1762868547"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.saturnci.com/rspec-shared-examples.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RSpec shared examples unmasked</a></p></span></div></div><p class="paragraph" style="text-align:left;">5️⃣ Avo published a new article about <a class="link" href="https://avohq.io/blog/deterministic-mesh-gradient-avatars-in-rails?utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Deterministic Mesh Gradient Avatars in Rails</a></p><p class="paragraph" style="text-align:left;">Avo continues to publish on their blog deep dive good tutorials and this one is no exception. Using ChunkyPNG and a bit of math you will generate some very nice mesh gradient avatars with Ruby. </p><div class="image"><a class="image__link" href="https://avohq.io/blog/deterministic-mesh-gradient-avatars-in-rails?utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/53ccb96b-7188-4d01-b8c0-938887849642/image.png?t=1762868863"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://avohq.io/blog/deterministic-mesh-gradient-avatars-in-rails?utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Deterministic Mesh Gradient Avatars in Rails</a></p></span></div></div><p class="paragraph" style="text-align:left;">You can find a lot more articles to read in the full edition of Short Ruby Newsletter at <a class="link" href="https://newsletter.shortruby.com/p/edition-156?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-3" target="_blank" rel="noopener noreferrer nofollow">https://newsletter.shortruby.com/p/edition-156</a></p><p class="paragraph" style="text-align:left;"></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=115e9c93-8d35-4980-aea7-6d17edde0129&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 156</title>
  <description>The one where Ruby 4.0 is announced, where Namespace is renamed to Ruby::Box and deep_freeze is under discussion</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1559fd97-efec-4943-91ee-e03d5604b169/cover-page-edition-156.png" length="333509" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-156</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-156</guid>
  <pubDate>Mon, 10 Nov 2025 13:03:13 +0000</pubDate>
  <atom:published>2025-11-10T13:03:13Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="read-newsletters-not-spam">Read newsletters, not spam</h3><div class="image"><a class="image__link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub={{campaign_id}}&aff_sub2=Concept4_Static1&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Primary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_content={{campaign_id}}&utm_term=&utm_ads={{ad_copy_id}}&_bhiiv=opp_19da2608-d772-4359-9bb2-5062c0295604_598ab766&bhcl_id=acf90163-91db-48cb-8872-812ad98b9c8b_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/23eb0543-34f4-41a8-89d6-ca33308b40c7/04.png?t=1761177536"/></a></div><p class="paragraph" style="text-align:left;">Tired of newsletters vanishing into Gmail’s promotion tab — or worse, being buried under ad spam?</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub={{campaign_id}}&aff_sub2=Concept4_Static1&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Primary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_content={{campaign_id}}&utm_term=&utm_ads={{ad_copy_id}}&_bhiiv=opp_19da2608-d772-4359-9bb2-5062c0295604_598ab766&bhcl_id=acf90163-91db-48cb-8872-812ad98b9c8b_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Proton Mail</a> keeps your subscriptions organized without tracking or filtering tricks. No hidden tabs. No data profiling. Just the content you signed up for, delivered where you can actually read it.</p><p class="paragraph" style="text-align:left;">Built for privacy and clarity, Proton Mail is a better inbox for newsletter lovers and information seekers alike.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub={{campaign_id}}&aff_sub2=Concept4_Static1&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Primary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_content={{campaign_id}}&utm_term=&utm_ads={{ad_copy_id}}&_bhiiv=opp_19da2608-d772-4359-9bb2-5062c0295604_598ab766&bhcl_id=acf90163-91db-48cb-8872-812ad98b9c8b_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Newsletters without the noise</a></p><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://bsky.app/profile/russolsen.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Russ Olsen</a> announced the launch of <a class="link" href="https://pragprog.com/titles/eruby2/eloquent-ruby-second-edition/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Eloquent Ruby, 2nd edition</a>.</p><div class="image"><a class="image__link" href="https://pragprog.com/titles/eruby2/eloquent-ruby-second-edition/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/0a42be89-61f2-4060-adc8-8decb18f11cb/image.png?t=1762621432"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://pragprog.com/titles/eruby2/eloquent-ruby-second-edition/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">https://pragprog.com/titles/eruby2/eloquent-ruby-second-edition/</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://twitter.com/kirill_shevch?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Kirill Shevchenko</a> shared his new project he is working on → <a class="link" href="https://postnhost.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">PostnHost</a></p><div class="image"><a class="image__link" href="https://postnhost.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3309f415-edff-446a-b9ea-44bcd02ea1ff/image.png?t=1762680941"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://postnhost.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">https://postnhost.com</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📆<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><a class="link" href="https://twitter.com/inazarova?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Irina Nazarova</a><span style="color:rgb(0, 0, 0);font-size:medium;"> reminded us that </span><a class="link" href="https://sfruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">SFRuby</a><span style="color:rgb(0, 0, 0);font-size:medium;"> is happening next week and shared from higlights from the conference: </span></p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d7c6f151-b2ee-4987-98ca-df8325c95fcf/image.png?t=1762750292"/></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="http://www.meetup.com/vienna-rb/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Vienna.Rb</a> has shared their new event that will take place on December 3rd. Secure your spot right here → <a class="link" href="https://www.meetup.com/vienna-rb/events/311836381/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Ruby Christmas Edition</a></p><div class="image"><a class="image__link" href="https://x.com/viennarb/status/1985788429557493914?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3f8d4365-2412-40d4-a092-09f2ee693c07/image.png?t=1762678881"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/viennarb/status/1985788429557493914?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">@viennarb</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉️ <a class="link" href="https://github.com/matz?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Yukihiro Matsumoto</a> announced that the next version of Ruby is <a class="link" href="https://github.com/ruby/ruby/commit/6d81969b475262aba251e99b518181bdf7c5a523?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Ruby 4.0.0</a></p><div class="image"><a class="image__link" href="https://github.com/ruby/ruby/commit/6d81969b475262aba251e99b518181bdf7c5a523?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f935483d-1a03-4734-b142-301404ea2286/image.png?t=1762621794"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/ruby/ruby/commit/6d81969b475262aba251e99b518181bdf7c5a523?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">https://github.com/ruby/ruby/commit/6d81969b475262aba251e99b518181bdf7c5a523</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://bsky.app/profile/noelrappin.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Noel Rappin</a> shared that they are starting working on a beta edition of Programming Ruby 4.0 </p><div class="image"><a class="image__link" href="https://bsky.app/profile/noelrappin.com/post/3m57j3ge3ts2p?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/556fee6a-25eb-4cf4-b4bb-ac81115f9bc5/image.png?t=1762718981"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/noelrappin.com/post/3m57j3ge3ts2p?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://noelrappin.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">noelrappin.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉️ Ruby’s <a class="link" href="https://github.com/ruby/ruby/pull/15075?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Rename Namespace to Ruby::Box</a> PR, was merged to master</p><div class="image"><a class="image__link" href="https://github.com/ruby/ruby/pull/15075?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/13ded2d3-859f-4364-9a71-a2ede0312cbd/image.png?t=1762680587"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/ruby/ruby/pull/15075?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">https://github.com/ruby/ruby/pull/15075</a></p></span></div></div><p class="paragraph" style="text-align:left;">This was started by <a class="link" href="https://bugs.ruby-lang.org/issues/21385?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">a feature request</a> made by Xavier Noria who made very good arguments for renaming <code>namespace</code> to something else: </p><div class="image"><a class="image__link" href="https://bugs.ruby-lang.org/issues/21385?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8e6a526f-b423-4000-90cd-2c9e77314359/image.png?t=1762778646"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bugs.ruby-lang.org/issues/21385?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">https://bugs.ruby-lang.org/issues/21385</a></p></span></div></div><p class="paragraph" style="text-align:left;">The proposal that was finally accepted by Matz was suggested by Satoshi Tagomori: </p><div class="image"><a class="image__link" href="https://bugs.ruby-lang.org/issues/21385?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156#note-26" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/55509dbb-6195-4d38-8166-b91619a03039/image.png?t=1762778696"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bugs.ruby-lang.org/issues/21385?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156#note-26" target="_blank" rel="noopener noreferrer nofollow">https://bugs.ruby-lang.org/issues/21385#note-26</a></p></span></div></div><p class="paragraph" style="text-align:left;">What could be interesting to keep in mind from that conversation is that Matz <a class="link" href="https://bugs.ruby-lang.org/issues/21385?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156#note-12" target="_blank" rel="noopener noreferrer nofollow">noted</a>: </p><div class="blockquote"><blockquote class="blockquote__quote"><p class="paragraph" style="text-align:left;">FYI, I consider this namespace thing as a low level API. And I have a plan to provide higher level API in the future.</p><figcaption class="blockquote__byline"> Source: <a class="link" href="https://bugs.ruby-lang.org/issues/21385?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156#note-12" target="_blank" rel="noopener noreferrer nofollow">https://bugs.ruby-lang.org/issues/21385#note-12</a></figcaption></blockquote></div><p class="paragraph" style="text-align:left;">👉️ <a class="link" href="https://paolino.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Carmine Paolino</a> announced a new version of <a class="link" href="https://github.com/crmne/ruby_llm?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">RubyLLm</a></p><div class="image"><a class="image__link" href="https://github.com/crmne/ruby_llm/releases/tag/1.9.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fa7e7aba-aefa-4d26-b660-56aa9dee2a9d/image.png?t=1762677350"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/crmne/ruby_llm/releases/tag/1.9.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">https://github.com/crmne/ruby_llm/releases/tag/1.9.0</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">️</span>💻 <a class="link" href="https://bsky.app/profile/hansschnedlitz.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Hans Schnedlitz</a> shared that StimulusJS supports keyboard event filters out of the box</p><div class="image"><a class="image__link" href="https://bsky.app/profile/hansschnedlitz.com/post/3m4sqlxo5gz2h?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/40767801-f0eb-41a4-9682-34ef7a9e4016/image.png?t=1762621102"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/hansschnedlitz.com/post/3m4sqlxo5gz2h?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://hansschnedlitz.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">hansschnedlitz.com</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><h3 class="heading" style="text-align:left;" id="free-email-without-sacrificing-your">Free email without sacrificing your privacy</h3><div class="image"><a class="image__link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub={{campaign_id}}&aff_sub2=Concept5_Static4&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Secondary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_content={{campaign_id}}&utm_term=&utm_ads={{ad_copy_id}}&_bhiiv=opp_93aead74-082a-485f-a2e6-681caabf6167_598ab766&bhcl_id=2e5aef1e-54bf-4e6b-b028-6086b71c8335_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cef29929-5513-470a-b87c-9a720481dbbb/05_4__1_.png?t=1758502690"/></a></div><p class="paragraph" style="text-align:left;">Gmail tracks you. Proton doesn’t. Get private email that puts your data — and your privacy — first.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub={{campaign_id}}&aff_sub2=Concept5_Static4&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Secondary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_content={{campaign_id}}&utm_term=&utm_ads={{ad_copy_id}}&_bhiiv=opp_93aead74-082a-485f-a2e6-681caabf6167_598ab766&bhcl_id=2e5aef1e-54bf-4e6b-b028-6086b71c8335_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Ditch the Gmail data grab</a></p><hr class="content_break"><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://x.com/bradgessler?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Brad Gessler</a> shared how to define a page model collection in <a class="link" href="https://beautifulruby.com/sitepress?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Sitepress</a> easier</p><div class="image"><a class="image__link" href="https://x.com/bradgessler/status/1986245693099680138?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/25d5e653-c50c-4b22-ab4f-b6fd66259c2a/image.png?t=1762679788"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/bradgessler/status/1986245693099680138?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">@bradgessler</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://aviflombaum.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Avi Flombaum</a> shared how you can save time in test fixtures</p><div class="image"><a class="image__link" href="https://x.com/aviflombaum/status/1986428309308063976?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c0e3767a-a94f-487b-95f6-6e76933ac19d/image.png?t=1762681050"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/aviflombaum/status/1986428309308063976?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">@aviflombaum</a></p></span></div></div><p class="paragraph" style="text-align:left;">️<a class="link" href="https://x.com/bradgessler?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Brad Gessler</a> replied with:</p><div class="image"><a class="image__link" href="https://x.com/bradgessler/status/1986565967892390325?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/67ce7e53-a8f0-4ea2-a2f3-a8ce69dd69e1/image.png?t=1762681114"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/bradgessler/status/1986565967892390325?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">@bradgessler</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://x.com/zilasino?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Zil N</a> shared how to use the tap method</p><div class="image"><a class="image__link" href="https://x.com/zilasino/status/1985424156184224138?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/094cca08-5e0e-476b-9ca6-0a37b5c5e40a/image.png?t=1762678019"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/zilasino/status/1985424156184224138?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">@zilasino</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://nts.strzibny.name?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Josef Strzibny</a> shared about the new release of <a class="link" href="https://kamalmanual.com/handbook/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Kamal Handbook 2.1</a></p><div class="image"><a class="image__link" href="https://x.com/strzibnyj/status/1985622032965423514?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e633caa5-b2f2-4b72-9dc8-37f42b9266a0/image.png?t=1762678346"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/strzibnyj/status/1985622032965423514?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">@strzibnyj</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/inazarova?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Irina Nazarova</a> shared exciting news about CactusAI</p><div class="image"><a class="image__link" href="https://x.com/inazarova/status/1986144395247427766?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/981c3291-a941-418d-8dc4-c611804f8415/image.png?t=1762679633"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/inazarova/status/1986144395247427766?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">@inazarova</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡<a class="link" href="https://x.com/okuramasafumi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Okura Masafumi</a> shared that Stan Lo won the Ruby Prize 2025:</p><div class="image"><a class="image__link" href="https://x.com/okuramasafumi/status/1986288039711416769?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/34db2cee-00d8-42d0-853c-e2bfeb565b99/image.png?t=1762680376"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/okuramasafumi/status/1986288039711416769?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">@okuramasafumi</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 Charles Nutter re-submitted with more arguments a proposal for <a class="link" href="https://bugs.ruby-lang.org/issues/21665?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Feature #21665 (Open): Revisit Object#deep_freeze to support non-Ractor use cases</a></p><div class="image"><a class="image__link" href="https://bugs.ruby-lang.org/issues/21665?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/06f78756-562d-4187-bd17-b731cf28b770/image.png?t=1762717370"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bugs.ruby-lang.org/issues/21665?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">https://bugs.ruby-lang.org/issues/21665</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 Brandon Weaver submitted a couple of proposals to add pattern matching capabilities to some core classes <a class="link" href="https://bugs.ruby-lang.org/issues/21675?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Feature #21675 (Open): Advent of Pattern Matching</a></p><div class="image"><a class="image__link" href="https://bugs.ruby-lang.org/issues/21675?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b317345b-4a51-49b0-8ab0-d1550722a299/image.png?t=1762718754"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bugs.ruby-lang.org/issues/21675?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">https://bugs.ruby-lang.org/issues/21675</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">❤️ </span><a class="link" href="https://ruby.social/@jorgealvarez?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Jorge Alvarez</a><span style="color:rgb(0, 0, 0);font-size:medium;"> shared about using Rub to get an unfair advantage for entrepreneurs: </span></p><div class="image"><a class="image__link" href="https://ruby.social/@jorgealvarez/115519974193011753?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bb196ee6-7a9e-4a00-9e54-ccef9a6f0073/image.png?t=1762761219"/></a><div class="image__source"><span class="image__source_text"><p><a class="link" href="https://ruby.social/@jorgealvarez/115519974193011753?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Source: jorgealvarez@ruby.social</a></p></span></div></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">❤️ </span><a class="link" href="https://news.ycombinator.com/user?id=bjclark&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">bjclark</a><span style="color:rgb(0, 0, 0);"> shared about Ruby performance: </span></p><div class="image"><a class="image__link" href="https://news.ycombinator.com/item?id=45858657&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/86f5b4bb-d7fd-4954-954b-8b0f31bdac7c/image.png?t=1762761554"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://news.ycombinator.com/item?id=45858657&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Hacker News comment</a></p></span></div></div><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">❤️ </span><a class="link" href="https://news.ycombinator.com/user?id=skrebbel&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">skrebbel</a> shared about how elegant Ruby is: </p><div class="image"><a class="image__link" href="https://news.ycombinator.com/item?id=45850389&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/270f536d-b34a-4de4-a6a8-a6e41c328cb4/image.png?t=1762761729"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://news.ycombinator.com/item?id=45850389&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Hacker News comment</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://x.com/bradgessler?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Brad Gessler</a> announced a new release of <a class="link" href="https://github.com/sitepress/markdown-rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">markdown-rails</a> - <i>“Markdown as a static templating language for Rails views and partials“</i></p><div class="image"><a class="image__link" href="https://x.com/bradgessler/status/1985520550530482508?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/261c10f8-dc37-4d94-8d01-73ba7a9a5df3/image.png?t=1762678158"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/bradgessler/status/1985520550530482508?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">@bradgessler</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;">(ad)</p><h3 class="heading" style="text-align:left;" id="factbased-news-without-bias-awaits-">Fact-based news without bias awaits. Make 1440 your choice today.</h3><p class="paragraph" style="text-align:left;">Overwhelmed by biased news? Cut through the clutter and get straight facts with your daily <a class="link" href="https://l.join1440.com/bh?utm_source=beehiiv&utm_medium=cpc&utm_campaign={{publication_alphanumeric_id}}&utm_content=prospecting_humans&_bhiiv=opp_22228622-aa20-4cf6-a941-8d7834a44810_1b75ca79&bhcl_id=c1888163-934e-4cf7-bcbb-208cdd4713b6_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">1440</a> digest. From politics to sports, join millions who start their day informed.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://l.join1440.com/bh?utm_source=beehiiv&utm_medium=cpc&utm_campaign={{publication_alphanumeric_id}}&utm_content=prospecting_humans&_bhiiv=opp_22228622-aa20-4cf6-a941-8d7834a44810_1b75ca79&bhcl_id=c1888163-934e-4cf7-bcbb-208cdd4713b6_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Sign up now!</a></p><hr class="content_break"><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://bsky.app/profile/jensimmons.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Jen Simmons</a> shared that Safari 26.1 has arrived.</p><div class="image"><a class="image__link" href="https://bsky.app/profile/jensimmons.bsky.social/post/3m4qzlrsppc2z?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c43efef7-52c5-463c-931c-e13766d47baa/image.png?t=1762621023"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/jensimmons.bsky.social/post/3m4qzlrsppc2z?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://jensimmons.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">jensimmons.bsky.social</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 This Week in Rails published a new edition → <a class="link" href="https://rubyonrails.org/2025/11/7/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Keep your passwords secure, one way or the other</a></p><p class="paragraph" style="text-align:left;">🗞 Andrey Eremin published a new edition → <a class="link" href="https://newsletters.eremin.eu/posts/static-ruby-monthly-issue-10-october-2025?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Static Ruby Monthly | Issue 10, October 2025</a></p><p class="paragraph" style="text-align:left;">🗞 Matt Solt published a new edition → <a class="link" href="https://rubyai.beehiiv.com/p/ruby-ai-news-november-4th-2025?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby AI News - November 4th, 2025</a></p><p class="paragraph" style="text-align:left;">🗞 Ruby Weekly published a new edition → <a class="link" href="https://rubyweekly.com/issues/774?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Another epic bug hunt</a></p><p class="paragraph" style="text-align:left;">🗞 Hotwire Weekly published a new article about <a class="link" href="https://www.hotwireweekly.com/archive/week-45-debugging-hotwire-native-css-highlights-api/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Week 45 - Debugging Hotwire Native, CSS Highlights API, and more!</a></p><p class="paragraph" style="text-align:left;">🗞 Women On Rails Newsletter - International Version published a new article about 🎊<a class="link" href="https://womenonrailsinternational.substack.com/p/newsletter-wor-67-celebrating-5-years?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow"> Newsletter WoR #67: Celebrating 5 years!</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 Ruby On Rails published a new podcast episode → <a class="link" href="https://www.buzzsprout.com/2462975/episodes/18061147?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Miguel Conde & Peter Compernolle: Inside Gusto’s Rails Biolith</a></p><p class="paragraph" style="text-align:left;">🎧 The Bike Shed published a new podcast episode → <a class="link" href="https://bikeshed.thoughtbot.com/481?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Bike Shed: 481: Dev Horror Stories</a></p><p class="paragraph" style="text-align:left;">🎧 The Ruby AI Podcast published a new episode →<a class="link" href="https://www.buzzsprout.com/2388930/episodes/18130646-building-futures-ai-careers-the-rails-ahead-with-avi-flombaum?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow"> Building Futures: AI, Careers & the Rails Ahead with Avi Flombaum</a></p><p class="paragraph" style="text-align:left;">🎧 Jared Normal published a new episode → <a class="link" href="https://shows.acast.com/dead-code/episodes/brut-al-death-with-david-bryant-copeland?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Brut-al Death (with David Bryant Copeland)</a></p><p class="paragraph" style="text-align:left;">🎧 Rails Business published a new episode → <a class="link" href="https://www.buzzsprout.com/2435951/episodes/18144058-stephen-anderson?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Stephen Anderson</a></p><p class="paragraph" style="text-align:left;"></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Anton Tkachov published a new video → <a class="link" href="https://www.youtube.com/watch?v=I0UOJYxOcBA&t=501s&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">&quot;Perfect is too Expensive&quot;-Peter | &quot;Schemas to UUID rows&quot;-Prarthana | @ Prism Spaces | October 2025</a></p><p class="paragraph" style="text-align:left;">🎥 Dave Kimura published a new video → <a class="link" href="https://www.driftingruby.com/episodes/failover-requests?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Failover Requests</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Julian Rubisch published a new article about <a class="link" href="https://blog.appsignal.com/2025/11/05/an-introduction-to-game-development-with-dragonruby.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">An Introduction to Game Development with DragonRuby</a></p><p class="paragraph" style="text-align:left;">🆕 Noel Rappin published a new article about <a class="link" href="https://noelrappin.com/blog/2025/11/ruby-and-its-neighbors-smalltalk/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby And Its Neighbors: Smalltalk</a></p><p class="paragraph" style="text-align:left;">🆕 <span style="color:rgb(0, 0, 0);">Vinay Keerthi</span><span style="color:rgb(0, 0, 0);font-size:medium;"> published an article about </span><b><a class="link" href="https://tech.stonecharioteer.com/posts/2025/ruby-symbols/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">A Soiree into Symbols in Ruby | Stonecharioteer on Tech</a></b></p><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://bsky.app/profile/intertwingly.net?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Sam Ruby</a> published a new article about <a class="link" href="https://intertwingly.net/blog/2025/11/04/TurboCable.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">TurboCable - Real-Time Rails Without External Dependencies</a></p><p class="paragraph" style="text-align:left;">🆕 Avo published a new article about <a class="link" href="https://avohq.io/blog/deterministic-mesh-gradient-avatars-in-rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Deterministic Mesh Gradient Avatars in Rails</a></p><p class="paragraph" style="text-align:left;">🆕 Maciej Mensfeld published a new article about <a class="link" href="https://mensfeld.pl/2025/11/ruby-ffi-gc-bug-hash-becomes-string/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">When Your Hash Becomes a String: Hunting Ruby’s Million-to-One Memory Bug</a></p><p class="paragraph" style="text-align:left;">🆕 Pat Shaughnessy published a new article about <a class="link" href="https://patshaughnessy.net/2025/11/3/compiling-a-call-to-a-block?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Compiling a Call to a Block</a></p><p class="paragraph" style="text-align:left;">🆕 Devel Morales published a new article about <a class="link" href="https://develclan.com/n-plus-1-problem-active-record/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The N+1 Query Problem in Active Record</a></p><p class="paragraph" style="text-align:left;">🆕 Bruno Sutic published a new article about <a class="link" href="https://brunosutic.com/blog/ruby-friendly-attributes-pattern?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Friendly Attributes Pattern</a></p><p class="paragraph" style="text-align:left;">🆕 Joel Drapper published a new article about <a class="link" href="https://joel.drapper.me/p/morphlex/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Better DOM Morphing with Morphlex</a></p><p class="paragraph" style="text-align:left;">🆕 Joe Masilotti published a new article about<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><b><a class="link" href="https://newsletter.masilotti.com/p/ruby-already-solved-my-problem?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby already solved my problem</a></b></p><p class="paragraph" style="text-align:left;">🆕 <span style="color:rgb(0, 0, 0);">Jason Swett</span><span style="color:rgb(0, 0, 0);font-size:medium;"> published an article about </span><b><a class="link" href="https://www.saturnci.com/rspec-shared-examples.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RSpec shared examples unmasked</a></b></p><p class="paragraph" style="text-align:left;">🆕 Shivam Chahar published a new article about <a class="link" href="https://www.shivamchahar.com/posts/rails-8-1-resilient-jobs-better-logs-local-ci?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails 8.1: Resilient Jobs, Better Logs, and Local CI</a></p><p class="paragraph" style="text-align:left;">🆕 Richard Schneeman published a new article about <a class="link" href="https://www.heroku.com/blog/upgrade-to-puma-7-and-unlock-the-power-of-fair-scheduled-keep-alive/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Upgrade to Puma 7 and Unlock the Power of Fair Scheduled Keep-alive</a></p><p class="paragraph" style="text-align:left;">🆕 Stuart published a new article about <a class="link" href="https://stuyam.com/blog/load-more-with-pagy-and-turbo?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">&quot;Load More&quot; with Pagy and Turbo</a></p><p class="paragraph" style="text-align:left;">🆕 Paweł Świątkowski published a new article about <a class="link" href="https://katafrakt.me/2025/11/04/eglot-ruby-lsp-standardrb/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Eglot, Ruby LSP and StandardRB</a></p><p class="paragraph" style="text-align:left;">🆕 Javier Cervantes published a new article about <a class="link" href="https://www.rubynewbie.org/compelling-reasons-to-learn-ruby-today?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Compelling reasons to learn Ruby today</a></p><p class="paragraph" style="text-align:left;">🆕 William Kennedy published a new article about <a class="link" href="https://williamkennedy.ninja/hotwire-native/2025/11/03/debugging-hotwire-native-native-logging/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Debugging Hotwire Native - Native Logging</a></p><p class="paragraph" style="text-align:left;">🆕 Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/saas/one-codebase-two-products/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Two products, one Rails codebase</a></p><p class="paragraph" style="text-align:left;">🆕 Ruby Central published a new article about <a class="link" href="https://rubycentral.org/news/ruby-central-update-friday-11-7-25/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby Central Update Friday 11/7/25</a></p><p class="paragraph" style="text-align:left;">🆕 <span style="color:rgb(0, 0, 0);">Filipa Mendonça-Vieira</span><span style="color:rgb(0, 0, 0);font-size:medium;"> published an article about </span><b><a class="link" href="https://okayfail.com/2025/in-praise-of-dhh.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">In Praise of dhh</a></b></p><p class="paragraph" style="text-align:left;">🆕 Lucian Ghinda published a new article about <a class="link" href="https://allaboutcoding.ghinda.com/rspec-and-let-understanding-the-potential-pitfalls?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">RSpec and </a><code>let!</code><a class="link" href="https://allaboutcoding.ghinda.com/rspec-and-let-understanding-the-potential-pitfalls?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">: Understanding the Potential Pitfalls</a></p><p class="paragraph" style="text-align:left;">🆕 Joey Wang published a new article about <a class="link" href="https://joeywang.github.io//posts/improving-performance-with-load_async-in-rails8/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Improving Performance with load_async in Rails 8: A Deep Dive into Asynchronous Record Loading</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p id="steve-polito-published-a-new-articl" class="paragraph" style="text-align:left;">📝 Steve Polito published a new article about <a class="link" href="https://feed.thoughtbot.com/link/24077/17206142/join-code-system-design?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to design a join code system</a></p><p id="rails-designer-published-a-new-arti" class="paragraph" style="text-align:left;">📝 Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/update-page-title-turbo/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Update page title counter with custom turbo streams in Rails</a></p><p id="pawe-witkowski-published-a-new-arti" class="paragraph" style="text-align:left;">📝 Paweł Świątkowski published a new article about <a class="link" href="https://katafrakt.me/2025/11/06/integrating-pagy-with-hanami-2025/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-156" target="_blank" rel="noopener noreferrer nofollow">Integrating Pagy with Hanami (2025 edition)</a></p><p class="paragraph" style="text-align:left;">📝 Moncef Belyamani published a new article about <a class="link" href="https://www.rubyonmac.dev/certificate-verify-failed-unable-to-get-certificate-crl-openssl-ssl-sslerror?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to fix the new error &quot;certificate verify failed (unable to get certificate CRL)&quot;</a></p><p class="paragraph" style="text-align:left;">📝 Richard Schneeman published a new article about <a class="link" href="https://www.heroku.com/blog/learn-how-to-lower-heroku-dyno-latency-keep-alive/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Learn How to Lower Heroku Dyno Latency through Persistent Connections (Keep-alive)</a></p><p class="paragraph" style="text-align:left;">📝 Josef Strzibny published a new article about <a class="link" href="https://deploymentfromscratch.com/blog/local-docker-registry-kamal?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to use local Docker registry in Kamal</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">Everyday Rails published a new article about <a class="link" href="https://leftofthe.dev/2025/11/09/legacy-code-overview-llm.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">My go-to prompt for legacy code exploration</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=0c67a63a-905d-4321-9de5-9ee12bfc102e&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Five Ruby Links #2</title>
  <description>Find out everything about frozen string literals from Jean Boussier, parsing Ruby code from Pat Shaughnessy, code highlighting in Rails from Avo, single-purpose classes from Szymon Fiedler, and a zero-downtime database migration from Denis Lifanov</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d9073b4b-6e25-4b14-92c7-42b92a9b8ba2/five-ruby-links-02.png" length="297986" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/five-ruby-links-02</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/five-ruby-links-02</guid>
  <pubDate>Tue, 04 Nov 2025 08:21:32 +0000</pubDate>
  <atom:published>2025-11-04T08:21:32Z</atom:published>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Five Ruby Links]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">If I were to recommend five articles published last week to read, here is what I would recommend:</p><p id="1-jean-boussier-published-an-articl" class="paragraph" style="text-align:left;">1️⃣ Jean Boussier published an article about <a class="link" href="https://byroot.github.io/ruby/performance/2025/10/28/string-literals.html?utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Frozen String Literals: Past, Present, Future?</a></p><p class="paragraph" style="text-align:left;">This is a very good deep dive into frozen strings, the history of the feature, and how it got implemented in Ruby, and what the possible future plans are with it.</p><div class="image"><a class="image__link" href="https://byroot.github.io/ruby/performance/2025/10/28/string-literals.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/dd6a0c9b-6cc5-498d-ab94-2b31d9326451/image.png?t=1762198204"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://byroot.github.io/ruby/performance/2025/10/28/string-literals.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" target="_blank" rel="noopener noreferrer nofollow">Frozen String Literals: Past, Present, Future?</a></p></span></div></div><p id="1-there-is-no-such-thing-as-a-globa" class="paragraph" style="text-align:left;">Make sure to also read this amazing Gist <a class="link" href="https://gist.github.com/fxn/bf4eed2505c76f4fca03ab48c43adc72?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" target="_blank" rel="noopener noreferrer nofollow">“Ruby: The future of frozen string literals” </a>written by Xavier Noria. If you read these 2 resources, should know everything there is to know about frozen string literals in Ruby. </p><p id="1-there-is-no-such-thing-as-a-globa" class="paragraph" style="text-align:left;">2️⃣ Pat Shaughnessy published an article about <a class="link" href="https://patshaughnessy.net/2025/10/27/parsing-how-ruby-understands-your-code?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" target="_blank" rel="noopener noreferrer nofollow">Parsing: How Ruby Understands Your Code</a></p><p class="paragraph" style="text-align:left;">This is a great article that shows how the Ruby parser is going through the source code and it takes you through a journey about how Ruby makes sense of the syntax and the internal representation of it. </p><div class="image"><a class="image__link" href="https://patshaughnessy.net/2025/10/27/parsing-how-ruby-understands-your-code?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cd98269c-01e7-4230-9bce-92b2ab01c339/Xnapper-2025-11-03-21.33.10.png?t=1762198411"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://patshaughnessy.net/2025/10/27/parsing-how-ruby-understands-your-code?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" target="_blank" rel="noopener noreferrer nofollow">Parsing: How Ruby Understands Your Code</a></p></span></div></div><p id="3-avo-published-a-new-article-about" class="paragraph" style="text-align:left;">3️⃣ Avo published a new article about <a class="link" href="https://avohq.io/blog/code-highlighting-with-rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" target="_blank" rel="noopener noreferrer nofollow">Code highlighting with Rails</a></p><p class="paragraph" style="text-align:left;">Again a very good tutorial from Avo about how to configure code highlighting in Rails. A lot of projects/organisations have technical blogs that can be built using Rails and it is great to see various ways of how to show good syntax highlighting: </p><div class="image"><a class="image__link" href="https://avohq.io/blog/code-highlighting-with-rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a608de96-16b1-4aa4-a7c5-f1cfd96a7284/image.png?t=1762198792"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://avohq.io/blog/code-highlighting-with-rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" target="_blank" rel="noopener noreferrer nofollow">Code highlighting with Rails</a></p></span></div></div><p class="paragraph" style="text-align:left;">4️⃣ Szymon Fiedler published a new article about<a class="link" href="https://blog.arkency.com/the-joy-of-a-single-purpose-class-from-string-mutation-to-message-composition?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" target="_blank" rel="noopener noreferrer nofollow"> The Joy of a Single-Purpose Class: From String Mutation to Message Composition</a></p><p class="paragraph" style="text-align:left;">Szymon here discusses fixing deprecation messages related to string mutations and demonstrates an OOP refactoring focused on simplicity and efficiency.</p><div class="image"><a class="image__link" href="https://blog.arkency.com/the-joy-of-a-single-purpose-class-from-string-mutation-to-message-composition/?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/34d53a76-5668-46b7-bd75-ab78a4f80d9f/image.png?t=1762199131"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://blog.arkency.com/the-joy-of-a-single-purpose-class-from-string-mutation-to-message-composition/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Joy of a Single-Purpose Class: From String Mutation to Message Composition</a></p></span></div></div><p class="paragraph" style="text-align:left;">5️⃣ Denis Lifanov published a new article about <a class="link" href="https://evilmartians.com/chronicles/migrating-whop-from-postgresql-to-planetscale-zero-downtime?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" target="_blank" rel="noopener noreferrer nofollow">Migrating Whop from PostgreSQL to PlanetScale MySQL with 0 downtime </a></p><p class="paragraph" style="text-align:left;">Denis from Evil Martians writes a very good article about migrating from PostgreSQL to PlanetScale MySQL for Whop. It shows the step by step process of migrating 750GB of production data while also keeping the development of new features running and without any downtime to the users. </p><div class="image"><a class="image__link" href="https://evilmartians.com/chronicles/migrating-whop-from-postgresql-to-planetscale-zero-downtime?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/55cc807c-da7a-4c36-b431-612192a491af/image.png?t=1762199343"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://evilmartians.com/chronicles/migrating-whop-from-postgresql-to-planetscale-zero-downtime?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" target="_blank" rel="noopener noreferrer nofollow">Migrating Whop from PostgreSQL to PlanetScale MySQL with 0 downtime</a></p></span></div></div><p class="paragraph" style="text-align:left;">You can find a lot more articles to read in the full edition of Short Ruby Newsletter at <a class="link" href="https://newsletter.shortruby.com/p/edition-155?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=five-ruby-links-2" target="_blank" rel="noopener noreferrer nofollow">https://newsletter.shortruby.com/p/edition-155</a></p><p class="paragraph" style="text-align:left;"></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=5056b3fb-937d-44f2-8529-ea835f1dcc7c&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 155</title>
  <description>The one with Rails 8.1.1 release, where Jean Boussier does a deep dive into frozen string literals, where San Francisco Ruby is two weeks away, and Tropical On Rails launched the tickets. </description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5033bd4a-7feb-49c0-b9f9-2e47f952e15d/cover-page-edition-155.png" length="358708" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-155</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-155</guid>
  <pubDate>Mon, 03 Nov 2025 11:15:02 +0000</pubDate>
  <atom:published>2025-11-03T11:15:02Z</atom:published>
    <dc:creator>Lucian Ghinda</dc:creator>
    <dc:creator>Vladut Cosmin</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:center;"><b>In partnership with</b></p><div class="image"><a class="image__link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3c6f9a95-fe23-449d-b20a-6ed4d03f6755/Asset_1_2x-8.png?t=1761973690"/></a><div class="image__source"><span class="image__source_text"><p>This edition is sponsored by <a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Undercover CI</a>, the Ruby coverage toolkit ready for the vibe coding era.</p></span></div></div><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><div class="image"><a class="image__link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8271b1d5-ee5c-4a96-b783-5838ab796f2b/image.png?t=1761973327"/></a><div class="image__source"><span class="image__source_text"><p><a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">undercover-ci.com</a> - Ruby test coverage ready for the vibe coding era</p></span></div></div><p class="paragraph" style="text-align:left;"><b>Undercover CI for GitHub</b> finds untested code in your pull requests. Fill gaps that slip through percentage metrics. Ship confidently. Thrive in the vibe coding era.</p><p class="paragraph" style="text-align:left;"><b>Get started on </b><a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow"><b>undercover-ci.com</b></a> or check out the <b><a class="link" href="https://github.com/twitchy-tortoise/undercover-test/pull/57/checks?check_run_id=37501520147&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">demo pull request</a></b>. Get 50% off your first month by entering <code>SHORTRUBY</code> at checkout (valid till end of December).</p><div class="button" style="text-align:center;"><a target="_blank" rel="noopener nofollow noreferrer" class="button__link" style="" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155"><span class="button__text" style=""> Start with Undercover CI </span></a></div><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><a class="link" href="https://brunosutic.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Bruno Sutic</a> launched <a class="link" href="http://RailsBilling.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">RailsBilling.com</a> - Gem for Billing Subscriptions</p><div class="image"><a class="image__link" href="https://railsbilling.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/629e2cf6-c5b1-4caf-871d-198ad3e3135a/image.png?t=1762158742"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://railsbilling.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">https://railsbilling.com</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📅 <a class="link" href="http://sfruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">San Francisco Ruby Conference</a> announced a great <a class="link" href="https://sfruby.com/scholarship/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">opportunity for student and recent graduates</a>. There are still <a class="link" href="https://sfruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">late ticket available</a> if you want to join. </p><div class="image"><a class="image__link" href="https://x.com/sfrubyconf/status/1984382828134744438?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3b3f8428-ec99-4189-b9f3-7dc838ee3974/image.png?t=1762117570"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/sfrubyconf/status/1984382828134744438?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@sfrubyconf</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://x.com/tropical_rb?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Tropical.Rb</a> announced the tickets sales for the 2026 edition. Book your please right here → <a class="link" href="https://www.sympla.com.br/evento/tropical-on-rails-2026-the-brazilian-rails-conference/3181423?share_id=copiarlink&referrer=t.co&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Tropical on Rails 2026 | The Brazilian Rails Conference</a></p><div class="image"><a class="image__link" href="https://x.com/tropical_rb/status/1984237321177473402?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/333af03b-f26f-42cd-812b-ecae136f0dac/image.png?t=1762117456"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/tropical_rb/status/1984237321177473402?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@tropical_rb</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://x.com/railscamp_USA?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Rails Camp Usa</a> is looking on sponsors for the next year event</p><div class="image"><a class="image__link" href="https://x.com/railscamp_USA/status/1983327277137179142?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3ad7b650-1350-46d2-aa9a-d87920dc00bf/image.png?t=1762117383"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/railscamp_USA/status/1983327277137179142?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@railscamp_USA</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉️ <a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> announced new releases. If you want to read more about that, check out the blog post → <a class="link" href="https://rubyonrails.org/2025/10/29/new-rails-releases-and-end-of-support-announcement?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">New Rails Releases and End of Support Announcement</a></p><div class="image"><a class="image__link" href="https://x.com/rails/status/1983343208567619666?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a8816f27-f1e4-4069-9711-b3f5d5d71eca/image.png?t=1762158812"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rails/status/1983343208567619666?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@rails</a></p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:left;"><i>(ad)</i></p><div class="image"><a class="image__link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f1c4a759-824b-431f-a01d-355ed0f3510f/image.png?t=1761973608"/></a><div class="image__source"><span class="image__source_text"><p>Undercover understands your code structure and displays actionable warnings without unnecessary noise. <a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">https://undercover-ci.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">The Undercover gem integrates with coding agents like Claude Code and your CI pipeline: shift left, wire up local coverage checks for fast feedback, catch gaps directly in GitHub PRs to ensure consistency and ship confidently.</p><p class="paragraph" style="text-align:left;"><b>Get 50% off your first month</b> with code <code>SHORTRUBY</code> at checkout (valid till end of December). Learn more and get started at <a class="link" href="https://undercover-ci.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">undercover-ci.com</a>.</p><hr class="content_break"><p class="paragraph" style="text-align:left;">👉 Jean Boussier published a new article about <a class="link" href="https://byroot.github.io/ruby/performance/2025/10/28/string-literals.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Frozen String Literals: Past, Present, Future?</a></p><div class="image"><a class="image__link" href="https://byroot.github.io/ruby/performance/2025/10/28/string-literals.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1ba4361a-f9b0-4dfe-a242-5a94ee7e93c2/image.png?t=1762166866"/></a><div class="image__source"><span class="image__source_text"><p>Source <a class="link" href="https://byroot.github.io/ruby/performance/2025/10/28/string-literals.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Frozen String Literals: Past, Present, Future?</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><p class="paragraph" style="text-align:left;">️️💻 <a class="link" href="https://bsky.app/profile/fpsvogel.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Felipe Vogel</a> shared interesting insights about metaprogramming in Ruby:</p><div class="image"><a class="image__link" href="https://bsky.app/profile/fpsvogel.bsky.social/post/3m4dubxwgmk24?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8c7c43b1-1867-4556-8e21-bb6fdc6a0010/image.png?t=1762158910"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fpsvogel.bsky.social/post/3m4dubxwgmk24?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fpsvogel.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">fpsvogel.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://bsky.app/profile/janko.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Janko Marohnić</a> shared a code sample about implementing Go To Definition for render calls: </p><div class="image"><a class="image__link" href="https://bsky.app/profile/janko.io/post/3m45rkrrmks24?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fe913f96-f668-436d-b775-21b7844832f5/image.png?t=1762159005"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/janko.io/post/3m45rkrrmks24?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://janko.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">janko.io</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/janko.io/post/3m45v7snwbs24?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4a7254fb-0d47-4748-94b2-8a18ded97db9/image.png?t=1762081702"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/janko.io/post/3m45v7snwbs24?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://janko.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">janko.io</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/adrianthedev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Adrian Marin</a> shared a code snippet to help you debug queries in the console</p><div class="image"><a class="image__link" href="https://x.com/adrianthedev/status/1982749151147565104?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cf6b3d3c-ad1b-4ba0-b4e7-0cf9988b86d9/image.png?t=1762118479"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/adrianthedev/status/1982749151147565104?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@adrianthedev</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/adrienpoly?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Adrien Poly</a> advised us to not hard-restrict Rails versions</p><div class="image"><a class="image__link" href="https://x.com/adrienpoly/status/1983995562753192206?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6bd31155-ffd3-4587-b76e-6419cb786f7d/image.png?t=1762118742"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/adrienpoly/status/1983995562753192206?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@adrienpoly</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://paolino.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Carmine Paolino</a> announced a new params DSL change that supports full JSON Schmea via RubyLLM::Schema. For more details → <a class="link" href="https://rubyllm.com/tools/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155#params-dsl" target="_blank" rel="noopener noreferrer nofollow">Tools</a></p><div class="image"><a class="image__link" href="https://x.com/paolino/status/1984245099098997092?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7c5db704-ee18-4a8b-acea-3e1f060da811/image.png?t=1762118868"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/paolino/status/1984245099098997092?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@paolino</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐️ <a class="link" href="https://bsky.app/profile/jpcamara.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">JP Camara</a> made a thread with some conclusion he got after reading <a class="link" href="https://dansvetlov.me/sidekiq-internals/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">How does Sidekiq really work?</a>. You can <a class="link" href="https://skywriter.blue/pages/did:plc:achtidyaoifu3apnu5dh5nwq/post/3m4mhfg6t7k23?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">read the whole thread on Skywriter</a></p><div class="image"><a class="image__link" href="https://skywriter.blue/pages/did:plc:achtidyaoifu3apnu5dh5nwq/post/3m4mhfg6t7k23?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b9d68cf2-8eb2-4157-ab3b-fe36ad9f1230/image.png?t=1762159237"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://skywriter.blue/pages/did:plc:achtidyaoifu3apnu5dh5nwq/post/3m4mhfg6t7k23?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@jpcamara.com</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://bsky.app/profile/marcoroth.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Marco Roth</a> shared an update about the new version of Herb v0.8.0</p><div class="image"><a class="image__link" href="https://bsky.app/profile/marcoroth.dev/post/3m4laov6i3k2v?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7211e573-99f0-44cd-8b19-76af0c97b57a/image.png?t=1762082872"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/marcoroth.dev/post/3m4laov6i3k2v?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://marcoroth.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">marcoroth.dev</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a><span style="color:rgb(0, 0, 0);font-size:medium;"> shared</span> about deploying changes with Kamal</p><div class="image"><a class="image__link" href="https://x.com/dhh/status/1982428890254778790?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/605b99b7-dd34-45e5-a891-79b68e360ec4/image.png?t=1762158449"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/1982428890254778790?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/joemasilotti?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Joe Masilotti</a> announced a new bridge component → <a class="link" href="https://github.com/joemasilotti/bridge-components/blob/main/docs/components/nfc.md?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">NFC Component</a></p><div class="image"><a class="image__link" href="https://x.com/joemasilotti/status/1983554768799953241?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e56da797-b1e1-4cd7-9997-00a55a3d3d27/image.png?t=1762118663"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/joemasilotti/status/1983554768799953241?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@joemasilotti</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 A discussion <a class="link" href="https://www.reddit.com/r/ruby/comments/1omlwty/what_prevents_more_widespread_adoption_of/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">on Reddit about what prevents more widespread adoption</a> of Ruby/Rails. Read the replies there (129 at the moment of adding it to the newsletter): </p><div class="image"><a class="image__link" href="https://www.reddit.com/r/ruby/comments/1omlwty/what_prevents_more_widespread_adoption_of/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b8a869a7-734a-4a11-9b11-a62389e78318/image.png?t=1762158521"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.reddit.com/r/ruby/comments/1omlwty/what_prevents_more_widespread_adoption_of/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Reddit</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://mensfeld.pl?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Maciej Mensfeld</a> open sourced his gem → <a class="link" href="https://github.com/mensfeld/llm-docs-builder?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">llm-docs-builder</a> - <i>“Transform and optimize your markdown documentation for Large Language Models (LLMs) and RAG systems. Generate llms.txt automatically.“</i></p><div class="image"><a class="image__link" href="https://github.com/mensfeld/llm-docs-builder?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c9b5c2a8-cd36-4574-801b-07cab217972a/image.png?t=1762086476"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/mensfeld/llm-docs-builder?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">https://github.com/mensfeld/llm-docs-builder</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://bsky.app/profile/joshuay03.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Joshua Young</a> announced a new gem → <a class="link" href="https://github.com/joshuay03/ractor-pool?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">ractor-pool</a> - <i>“A thread-safe, lock-free pool of Ractor workers with a coordinator pattern for distributing work“</i></p><div class="image"><a class="image__link" href="https://github.com/joshuay03/ractor-pool?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4fd9a2e0-b231-457a-8298-d8845d392c4d/image.png?t=1762082389"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/joshuay03/ractor-pool?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">https://github.com/joshuay03/ractor-pool</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/camertron?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Cameron Dutro</a> created a new gem → <a class="link" href="https://livecomponent.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">live_component</a> (see Github repo here)</p><div class="image"><a class="image__link" href="https://livecomponent.org/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/24a18496-700c-4a5d-961b-e9133ead0dda/image.png?t=1762082527"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://livecomponent.org/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">https://livecomponent.org/</a></p></span></div></div><p id="paulo-arruda-published-a-new-gem-sw" class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/parruda?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Paulo Arruda</a> published a new gem → <a class="link" href="https://github.com/parruda/swarm?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">swarm</a> - <i>“Ruby gems for general-purpose AI agent systems: automation, research, data processing, customer support, content creation. SwarmSDK provides single-process orchestration, persistent memory with semantic search, node workflows, and hooks. SwarmMemory/SwarmCLI included. Claude Swarm v1 for dev teams.“</i></p><div class="image"><a class="image__link" href="https://github.com/parruda/swarm?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/15fd12ae-3976-4937-b146-ccecc3ebf782/image.png?t=1762115756"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/parruda/swarm?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">https://github.com/parruda/swarm</a></p></span></div></div><p id="gamage-built-a-new-gem-zaxcel-a-rub" class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/chamod-gamage?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Gamage</a> built a new gem → <a class="link" href="https://github.com/angellist/zaxcel?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">zaxcel</a> - <i>“A Ruby DSL for building Excel spreadsheets programmatically“</i></p><div class="image"><a class="image__link" href="https://github.com/angellist/zaxcel?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a2490323-fdf8-4599-bafe-fa0e1092f5f7/image.png?t=1762115888"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/angellist/zaxcel?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">https://github.com/angellist/zaxcel</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://scottwernerd.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Scott Werner</a> announced a new gem → <a class="link" href="https://github.com/works-on-your-machine/touring_test?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">touring_test</a> - <i>“A Cucumber extension to enable agentic computer use”</i></p><div class="image"><a class="image__link" href="https://github.com/works-on-your-machine/touring_test?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bb59b5a4-e7cd-43e4-9e66-d2d5d784bba0/image.png?t=1762116318"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/works-on-your-machine/touring_test?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">https://github.com/works-on-your-machine/touring_test</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 Abdelkader Boudih published a new tool called <code>ore</code><a class="link" href="https://github.com/contriboss/ore-light?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow"> - Ore Light is the streamlined distribution of Ore – focused on fast gem installation, Bundler compatibility, and a welcoming feature set for new teams. It keeps Bundler in the loop while accelerating the painful parts with modern Go tooling</a>.</p><div class="image"><a class="image__link" href="https://github.com/contriboss/ore-light?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f4c921a6-739e-4d0f-b6c7-3e757775b762/image.png?t=1762156922"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/contriboss/ore-light?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">https://github.com/contriboss/ore-light</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/_st0012?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Stan Lo</a> made a new PR for <a class="link" href="https://github.com/ruby/rdoc?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">rdoc</a> → <a class="link" href="https://github.com/ruby/rdoc/pull/1432?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">New theme: &quot;Aliki&quot;</a></p><div class="image"><a class="image__link" href="https://github.com/ruby/rdoc/pull/1432?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/26b73cc2-27c2-4368-bb33-7001cc3c5d96/image.png?t=1762086253"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/ruby/rdoc/pull/1432?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">https://github.com/ruby/rdoc/pull/1432</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://twitter.com/jeremyevans0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Jeremy Evans</a> announced a new version of <a class="link" href="https://github.com/jeremyevans/sequel?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">sequel</a> - <i>“Sequel: The Database Toolkit for Ruby“</i></p><div class="image"><a class="image__link" href="https://github.com/jeremyevans/sequel/discussions/2341?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5d45544c-1373-4f4a-af0f-1a284b20336a/image.png?t=1762116819"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/jeremyevans/sequel/discussions/2341?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">https://github.com/jeremyevans/sequel/discussions/2341</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/fatkodima?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Dima Fatko</a> shared a tip for CircleCI users</p><div class="image"><a class="image__link" href="https://x.com/fatkodima/status/1982888349032669610?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1f6100cd-1b53-42e2-80ad-b09dcef997f3/image.png?t=1762117689"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/fatkodima/status/1982888349032669610?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@fatkodima</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://allaboutcoding.ghinda.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Lucian Ghinda</a> made a thread about the implication of LLMs in writing tests. This is just a part of the thread, <a class="link" href="https://x.com/lucianghinda/status/1983088878706958632?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">you can read it entirely on X</a></p><div class="image"><a class="image__link" href="https://x.com/lucianghinda/status/1983088878706958632?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6ddb47fc-9e9c-4750-ba38-7ac5d13b7d3a/image.png?t=1762117761"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/lucianghinda/status/1983088878706958632?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@lucianghinda</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/srbaker?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Steven R. Baker</a> made a post about modern software practices </p><div class="image"><a class="image__link" href="https://x.com/srbaker/status/1983868629331452043?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d4fc5a74-e642-4fd8-96b2-9e78ffb38c21/image.png?t=1762117871"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/srbaker/status/1983868629331452043?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@srbaker</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/PlanetScale?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Planet Scale</a> introduced a new plan → <a class="link" href="https://planetscale.com/blog/5-dollar-planetscale?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">$5 PlanetScale</a></p><div class="image"><a class="image__link" href="https://x.com/PlanetScale/status/1983913951739179499?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6675bcb4-6972-4fc3-9938-7fa499fefed7/image.png?t=1762117942"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/PlanetScale/status/1983913951739179499?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@PlanetScale</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://igor-alexandrov.github.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Igor Alexandrov</a> shared how to copy data from one Docker volume to another</p><div class="image"><a class="image__link" href="https://x.com/igor_alexandrov/status/1984250661253304457?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4fbbd514-f81f-449b-9787-679434bf8b8a/image.png?t=1762117990"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/igor_alexandrov/status/1984250661253304457?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@igor_alexandrov</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/robbyrussell?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Robby Russell</a> told his take on craftsmanship on the actual AI era</p><div class="image"><a class="image__link" href="https://x.com/robbyrussell/status/1984303948103323685?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/78c49d49-c30c-4bdd-9960-1e92db8559e0/image.png?t=1762118046"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/robbyrussell/status/1984303948103323685?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@robbyrussell</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="http://claude.ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Claude</a> shared that Claude Code’s native installer is now generally available</p><div class="image"><a class="image__link" href="https://x.com/claudeai/status/1984304957353243061?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/18896191-b169-42a7-bb6e-fcb6214bce4e/image.png?t=1762118136"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/claudeai/status/1984304957353243061?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@claudeai</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/adamwathan?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Adam Wathan</a> reminded us that Tailwind CSS was released 8 years ago</p><div class="image"><a class="image__link" href="https://x.com/adamwathan/status/1984419918213771393?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b22b9fe5-b5eb-49ba-9fbd-3f34c2ac9981/image.png?t=1762118216"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/adamwathan/status/1984419918213771393?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">@adamwathan</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;">🗞 Ruby on Rails published a new edition → <a class="link" href="https://rubyonrails.org/2025/10/31/this-week-in-rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Summary report on CI run and more</a></p><p class="paragraph" style="text-align:left;">🗞️ Ruby Weekly published a new edition → <a class="link" href="https://rubyweekly.com/issues/773?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Breaking the ice with frozen string literals</a></p><p class="paragraph" style="text-align:left;">🗞️ Hotwire Weekly published a new edition → <a class="link" href="https://www.hotwireweekly.com/archive/week-44-debugging-bridge-components-rethinking-css-with-roux?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Week 44 - Debugging Bridge Components, Rethinking CSS with Roux, and more!</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 Pablo published a new podcast episode → <a class="link" href="https://open.spotify.com/episode/2YszJNnj0inMxkhl1asfUo?si=05d72aa13a1e49f3&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">24 - on Misunderstood concepts in tech (sort of) with Steven and Dave</a></p><p class="paragraph" style="text-align:left;">🎧️ The Bike Shed published a new podcast episode → <a class="link" href="https://bikeshed.thoughtbot.com/480?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">480: The President&#39;s Doctor with Jared Turner</a></p><p class="paragraph" style="text-align:left;">🎧️ reinteractive published a new podcast episode → <a class="link" href="https://www.youtube.com/watch?v=sXy-A__KLY0&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Technology for Humans: Ben Curtis</a></p><p class="paragraph" style="text-align:left;">🎧️ Code with Jason published a new podcast episode → <a class="link" href="https://www.codewithjason.com/podcast/17923366-272-anthony-eden-founder-of-dnsimple/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">272 - Anthony Eden, Founder of DNSimple</a></p><p class="paragraph" style="text-align:left;">🎧️ Ruby Rogues published a new podcast episode → <a class="link" href="https://www.spreaker.com/episode/inside-the-rubygems-controversy-transparency-trust-and-the-future-of-ruby-central-ruby-679--68374092?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Inside the RubyGems Controversy: Transparency, Trust, and the Future of Ruby Central - RUBY 679</a></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(34, 34, 34);font-family:Helvetica, Arial, sans-serif;font-size:18px;">🎧 A Junior, a senior and I published a new podcast episode →</span><span style="text-decoration:underline;"><a class="link" href="https://creators.spotify.com/pod/profile/junior-senior-i/episodes/23---On-Bootcamps-with-Aslihan-and-Sami-e39uju4?utm_source=shortrubynews&utm_medium=referral&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow" style="color: rgb(3, 7, 18)"> </a></span><b><a class="link" href="https://podcasters.spotify.com/pod/show/junior-senior-i/episodes/24---on-Misunderstood-concepts-in-tech-sort-of-with-Steven-and-Dave-e3a53i9?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">24 - on Misunderstood concepts in tech (sort of) with Steven and Dave</a></b></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Brandon Weaver published a new video → <a class="link" href="https://www.youtube.com/watch?v=IQQtnttsI5A&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Rocky Mountain Ruby 2025 - We Who Remember Magic</a></p><p class="paragraph" style="text-align:left;">🎥 Rocky Mountain Ruby Conference published their video recordings from this year event → <a class="link" href="https://www.rubyevents.org/events/rocky-mountain-ruby-2025?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Rocky Mountain Ruby 2025</a></p><p class="paragraph" style="text-align:left;">🎥 The Expert Bench published a new video → <a class="link" href="https://www.youtube.com/watch?v=jphaSlu_aTw&utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">From Breaking PHP to Protecting Rails | Greg Molnar Story</a></p><p class="paragraph" style="text-align:left;">🎥 Dave Kimura published a new video → <a class="link" href="https://www.driftingruby.com/episodes/failover-requests?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Failover Requests</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Jean Boussier published a new article about <a class="link" href="https://byroot.github.io/ruby/performance/2025/10/28/string-literals.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Frozen String Literals: Past, Present, Future?</a></p><p class="paragraph" style="text-align:left;">🆕 Pat Shaughnessy published a new article about <a class="link" href="https://patshaughnessy.net/2025/10/27/parsing-how-ruby-understands-your-code?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Parsing: How Ruby Understands Your Code</a></p><p class="paragraph" style="text-align:left;">🆕 Avo published a new article about <a class="link" href="https://avohq.io/blog/code-highlighting-with-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Code highlighting with Rails</a></p><p class="paragraph" style="text-align:left;">🆕 Szymon Fiedler published a new article about <a class="link" href="https://blog.arkency.com/the-joy-of-a-single-purpose-class-from-string-mutation-to-message-composition/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The Joy of a Single-Purpose Class: From String Mutation to Message Composition</a></p><p class="paragraph" style="text-align:left;">🆕 Denis Lifanov published a new article about <a class="link" href="https://evilmartians.com/chronicles/migrating-whop-from-postgresql-to-planetscale-zero-downtime?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Migrating Whop from PostgreSQL to PlanetScale MySQL with 0 downtime</a></p><p class="paragraph" style="text-align:left;">🆕 Julio Lucero published a new article about <a class="link" href="https://fastruby.io/blog/Middleware-in-Rails.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Middleware in Rails</a></p><p class="paragraph" style="text-align:left;">🆕 David Morales published a new article about <a class="link" href="https://develclan.com/testing-ruby-from-scratch-minitest-rspec/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Testing in Ruby: From Scratch to Minitest and RSpec</a></p><p class="paragraph" style="text-align:left;">🆕 This Week in Rails published a new article about <a class="link" href="https://rubyonrails.org/2025/10/29/new-rails-releases-and-end-of-support-announcement?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">New Rails Releases and End of Support Announcement</a></p><p class="paragraph" style="text-align:left;">🆕 Ruby Central published a new article about <a class="link" href="https://rubycentral.org/news/ruby-central-update-friday-10-31-25/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Ruby Central Update Friday 10/31/25</a></p><p class="paragraph" style="text-align:left;">🆕 Stuart published a new article about <a class="link" href="https://stuyam.com/blog/targeting-hotwire-native-with-tailwind?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Targeting Hotwire Native with Tailwind</a></p><p class="paragraph" style="text-align:left;">🆕 Julio Lucero published a new article about <a class="link" href="https://www.fastruby.io/blog/Middleware-in-Rails.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Middleware in Rails</a></p><p class="paragraph" style="text-align:left;">🆕 Aaron Sumner published a new article about <a class="link" href="https://leftofthe.dev/2025/10/27/left-of-the-dev-everyday-rails.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Everyday Rails is now Left of the Dev</a></p><p class="paragraph" style="text-align:left;">🆕 Carmatec published a new article about <a class="link" href="https://www.carmatec.com/blog/understanding-rubys-redo-retry-break-and-next/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Basics of Ruby&#39;s Redo, Retry and Next</a></p><p class="paragraph" style="text-align:left;">🆕 Mateus Pereira published a new article about <a class="link" href="https://pearprogramming.blog/ruby/rails/activerecord/2025/10/30/a-matter-of-order/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Sharing this in case someone is having similar problems as I did</a></p><p class="paragraph" style="text-align:left;">🆕 Ashish published a new article about <a class="link" href="https://www.railscarma.com/blog/understanding-present-blank-nil-and-empty-in-ruby/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to use .nil? .empty? .blank? .present?</a></p><p class="paragraph" style="text-align:left;">🆕 Evgeny Zhdanov published a new article about <a class="link" href="https://zhisme.com/articles/you-dont-need-types-in-ruby/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">You Don’t Need Types in Ruby</a></p><p class="paragraph" style="text-align:left;">🆕 Brooke Kuhlmann published a new article about <a class="link" href="https://alchemists.io/articles/hanami_logging?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Hanami Logging</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">📝 Adam McCrea published a new article about <a class="link" href="https://judoscale.com/blog/priced-out-of-heroku?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Dealing With Heroku Memory Limits and Background Jobs</a></p><p class="paragraph" style="text-align:left;">📝 Jeffery Morhous published a new article about <a class="link" href="https://www.honeybadger.io/blog/new-in-kamal-2/?utm_source=bluesky&utm_medium=social" target="_blank" rel="noopener noreferrer nofollow">Kamal 2: Deploying multiple apps</a></p><p class="paragraph" style="text-align:left;">📝 Rails Designer published a new article about <a class="link" href="https://railsdesigner.com/extending-kanban-rails-hotwire/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">Extending the Kanban board (using Rails and Hotwire)</a></p><p class="paragraph" style="text-align:left;">📝 Visnupriya published a new article about <a class="link" href="https://www.spritle.com/blog/how-to-supercharge-your-rails-app-with-mcp-server-and-copilot-for-ai-driven-translation/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to Supercharge Your Rails App with MCP Server and Copilot for AI-Driven Translation</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">✍️ Loïc Delmaire published a new article about <a class="link" href="https://substack.com/home/post/p-177082924?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-155" target="_blank" rel="noopener noreferrer nofollow">How I use AI to code: a practical guide</a></p><p class="paragraph" style="text-align:left;">✍️ Dennis Martinez published a new article about <a class="link" href="https://dennmart.com/articles/using-kamal-local-registry-for-simpler-deployments/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Using Kamal&#39;s Local Registry for Simpler Deployments</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=883a23cf-f796-47a3-acda-b6f90e0c65c6&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Short Ruby Newsletter - edition 154</title>
  <description>The one where Rails 8.1.0 is released, where Ruby 3.3.10 is patched, where Scott Harvey launched Rails Pulse project and Brad Gessler launches Phlex on Rails course</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/920672ca-6545-42c1-b9e8-bd5b51559403/cover-page-edition-154.png" length="333402" type="image/png"/>
  <link>https://newsletter.shortruby.com/p/edition-154</link>
  <guid isPermaLink="true">https://newsletter.shortruby.com/p/edition-154</guid>
  <pubDate>Mon, 27 Oct 2025 10:32:18 +0000</pubDate>
  <atom:published>2025-10-27T10:32:18Z</atom:published>
    <dc:creator>Vladut Cosmin</dc:creator>
    <dc:creator>Lucian Ghinda</dc:creator>
    <category><![CDATA[Newsletter]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><h2 class="heading" style="text-align:left;">Table of Contents</h2><ul><li><p class="paragraph" style="text-align:left;"><a class="link" href="#launches-and-discounts" rel="noopener noreferrer nofollow">🚀 Launches and discounts</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#events" rel="noopener noreferrer nofollow">📅 Events</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#all-about-code-and-ruby" rel="noopener noreferrer nofollow">👉 All about Code and Ruby</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#gems-libraries-tools-and-updates" rel="noopener noreferrer nofollow">🧰 Gems, Libraries, Tools and Updates </a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#related-but-not-rubyspecific" rel="noopener noreferrer nofollow">🤝 Related (but not Ruby-specific)</a></p></li><li><p class="paragraph" style="text-align:left;"><a class="link" href="#more-content" rel="noopener noreferrer nofollow">More content: 📚 🗞 🎧 🎥 ✍🏾</a></p></li></ul><hr class="content_break"><h3 class="heading" style="text-align:left;" id="free-email-without-sacrificing-your">Free email without sacrificing your privacy</h3><div class="image"><a class="image__link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub={{campaign_id}}&aff_sub2=Concept5_Static4&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Primary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_content={{campaign_id}}&utm_term=&utm_ads={{ad_copy_id}}&_bhiiv=opp_6d852fbb-84e5-45c8-873e-0ffda5f9b0f1_598ab766&bhcl_id=6aea215b-4646-4304-a70e-67bf4ef792c3_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6da8e8a0-68cf-4320-848e-66443adc888b/05_4.png?t=1758502660"/></a></div><p class="paragraph" style="text-align:left;">Gmail is free, but you pay with your data. <a class="link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub={{campaign_id}}&aff_sub2=Concept5_Static4&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Primary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_content={{campaign_id}}&utm_term=&utm_ads={{ad_copy_id}}&_bhiiv=opp_6d852fbb-84e5-45c8-873e-0ffda5f9b0f1_598ab766&bhcl_id=6aea215b-4646-4304-a70e-67bf4ef792c3_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Proton Mail</a> is different.</p><p class="paragraph" style="text-align:left;">We don’t scan your messages. We don’t sell your behavior. We don’t follow you across the internet.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub={{campaign_id}}&aff_sub2=Concept5_Static4&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Primary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_content={{campaign_id}}&utm_term=&utm_ads={{ad_copy_id}}&_bhiiv=opp_6d852fbb-84e5-45c8-873e-0ffda5f9b0f1_598ab766&bhcl_id=6aea215b-4646-4304-a70e-67bf4ef792c3_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Proton Mail</a> gives you full-featured, private email without surveillance or creepy profiling. It’s email that respects your time, your attention, and your boundaries.</p><p class="paragraph" style="text-align:left;">Email doesn’t have to cost your privacy.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://go.getproton.me/aff_ad?campaign_id=2576&aff_id=12271&aff_type=ho&aff_sub={{campaign_id}}&aff_sub2=Concept5_Static4&aff_sub3={{publication_alphanumeric_id}}&aff_sub4=Primary&utm_campaign=us-en-2c-mail-gro_dis-g_acq-mofu_free_beehiiv_test&utm_source=beehiiv.com&utm_medium=dis_ad&utm_content={{campaign_id}}&utm_term=&utm_ads={{ad_copy_id}}&_bhiiv=opp_6d852fbb-84e5-45c8-873e-0ffda5f9b0f1_598ab766&bhcl_id=6aea215b-4646-4304-a70e-67bf4ef792c3_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Ditch the Gmail data grab</a></p><hr class="content_break"><h2 class="heading" style="text-align:left;" id="launches-and-discounts">🚀 Launches and discounts</h2><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="http://scottharvey.co?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Scott Harvey</a> launched <a class="link" href="https://railspulse.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Rails Pulse</a></p><div class="image"><a class="image__link" href="https://railspulse.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/56dd35ca-de00-4593-a71d-ab4c6e6f476e/image.png?t=1761480840"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://railspulse.com/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://railspulse.com/</a></p></span></div></div><p class="paragraph" style="text-align:left;">🚀 <a class="link" href="https://bsky.app/profile/bradgessler.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Brad Gessler</a> launched <a class="link" href="https://beautifulruby.com/articles/phlex-on-rails-launch?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Phlex on Rails course is completed and launched</a></p><div class="image"><a class="image__link" href="https://beautifulruby.com/phlex?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/15dcd28a-f4b1-47a5-9886-6df991a32520/image.png?t=1761497098"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://beautifulruby.com/phlex?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://beautifulruby.com/phlex</a></p></span></div></div><p class="paragraph" style="text-align:left;"></p><h2 class="heading" style="text-align:left;" id="events">📅 Events</h2><p class="paragraph" style="text-align:left;">📆 <a class="link" href="https://sfruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">SFRuby</a> is happening in less than 1 month. Buy your ticket at <a class="link" href="https://sfruby.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">sfruby.com</a></p><div class="image"><a class="image__link" href="https://evilmartians.com/chronicles/why-we-are-excited-about-sf-ruby-conference?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a36ade6f-d659-451a-93a7-11f810289637/image.png?t=1761505062"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://evilmartians.com/chronicles/why-we-are-excited-about-sf-ruby-conference?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://evilmartians.com/chronicles/why-we-are-excited-about-sf-ruby-conference</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://bsky.app/profile/drbragg.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Drew Bragg</a> announced a new meetup → “How FastRuby.io Built an Automated, AI-Enhanced Roadmap for Rails Upgrades”. Hurry up and book your place here → <a class="link" href="https://www.meetup.com/phillyrb/events/311362494/?eventOrigin=group_upcoming_events&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Philly.rb 2025</a></p><div class="image"><a class="image__link" href="https://www.meetup.com/phillyrb/events/311362494/?eventOrigin=group_upcoming_events&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5a4fd36e-efb3-452d-897e-7b16b92c6ac4/image.png?t=1761477387"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.meetup.com/phillyrb/events/311362494/?eventOrigin=group_upcoming_events&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://www.meetup.com/phillyrb/events/311362494/?eventOrigin=group_upcoming_events</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://x.com/railscamp_USA?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Rails Camp Usa</a> announced early-bird registration starting next week!</p><div class="image"><a class="image__link" href="https://x.com/railscamp_USA/status/1981875755039773115?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/e8159883-c6d3-433f-8373-a96417660c13/image.png?t=1761480525"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/railscamp_USA/status/1981875755039773115?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@railscamp_USA</a></p></span></div></div><div class="image"><a class="image__link" href="https://west.railscamp.us/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5fa71930-2e45-434f-a932-c5e5f5965659/image.png?t=1761480495"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://west.railscamp.us/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://west.railscamp.us/</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="http://railsgirls.com/cali?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Rails Girls Cali</a> announced a new event that will be happening on November 7-8</p><div class="image"><a class="image__link" href="https://x.com/RGCaliOficial/status/1981016256091443203?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ee6f0e1c-c7d9-41e9-88f0-16e65301602d/image.png?t=1761480190"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/RGCaliOficial/status/1981016256091443203?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@RGCaliOficial</a></p></span></div></div><p class="paragraph" style="text-align:left;">📅 <a class="link" href="https://bsky.app/profile/wnb-rb.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">WNB.rb (Women and Non-Binary Rubyists)</a> announced a new online event → Rails Upgrades and Music Composition. Join the Discord community to be part of this event → <a class="link" href="https://discord.com/invite/fFT3wmvJFt?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">WNB.rb Discord</a></p><div class="image"><a class="image__link" href="https://discord.com/invite/fFT3wmvJFt?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8a219e5f-0d89-4c84-b01a-a2429f985d09/image.png?t=1761477100"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/wnb-rb.dev/post/3m3uttr7puq27?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://wnb-rb.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">wnb-rb.dev</a></p></span></div></div><p class="paragraph" style="text-align:left;">📆 Thoughbot published the <a class="link" href="https://feed.thoughtbot.com/link/24077/17191603/announcing-the-thoughtbot-open-summit-2025-full-schedule?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">the thoughtbot Open Summit 2025 full schedule</a></p><div class="image"><a class="image__link" href="https://thoughtbot.com/events/open-summit?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c84c0cae-25c7-4fe9-9c68-257d2dc46db9/image.png?t=1761505298"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://thoughtbot.com/events/open-summit?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://thoughtbot.com/events/open-summit</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="all-about-code-and-ruby">👉 All about Code and Ruby</h2><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://bsky.app/profile/nagachika.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">nagachika</a> announced the release of a new Ruby version → <a class="link" href="https://www.ruby-lang.org/en/news/2025/10/23/ruby-3-3-10-released/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Ruby 3.3.10</a></p><div class="image"><a class="image__link" href="https://www.ruby-lang.org/en/news/2025/10/23/ruby-3-3-10-released/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/21550807-9852-4a53-b3a5-5ba9bd564ab1/image.png?t=1761476662"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://www.ruby-lang.org/en/news/2025/10/23/ruby-3-3-10-released/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://www.ruby-lang.org/en/news/2025/10/23/ruby-3-3-10-released/</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Rafael Franca announced the release of <a class="link" href="https://rubyonrails.org/2025/10/22/rails-8-1?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Rails 8.1</a></p><div class="image"><a class="image__link" href="https://rubyonrails.org/2025/10/22/rails-8-1?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d0fc89da-32fc-4f98-98ee-fb1f2fb36dea/image.png?t=1761482065"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubyonrails.org/2025/10/22/rails-8-1?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://rubyonrails.org/2025/10/22/rails-8-1</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉️ <a class="link" href="https://www.gregnavis.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Greg Navis</a> also posted a thread about this release, going through the new additions. Feel free to <a class="link" href="https://threadreaderapp.com/thread/1980903167475773543.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">read the entire thread on Thread reader</a>.</p><div class="image"><a class="image__link" href="https://threadreaderapp.com/thread/1980903167475773543.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/11f6bc70-e72b-49ab-905c-10f6f448832b/image.png?t=1761482363"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://threadreaderapp.com/thread/1980903167475773543.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://threadreaderapp.com/thread/1980903167475773543.html</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 <a class="link" href="https://twitter.com/yukihiro_matz?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Yukihiro Matz</a> shared the Ruby 30th Anniversary – <a class="link" href="https://docs.google.com/forms/d/e/1FAIpQLSc8FRavBYyUtjiagi3ZzJ3Pxq5EJJ75U911zBlcO-czNylFUA/viewform?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Message Submission Form</a></p><div class="image"><a class="image__link" href="https://x.com/yukihiro_matz/status/1982090367328780342?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/42c98a63-33d3-403e-bbd1-959b31d23d02/image.png?t=1761485664"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/yukihiro_matz/status/1982090367328780342?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@yukihiro_matz</a></p></span></div></div><p class="paragraph" style="text-align:left;">👉 Charles Oliver Nutter published a new article about <a class="link" href="https://headius.github.io/2025/10/packaging-ruby-apps-with-warbler-jar-files.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Packaging Ruby Apps with Warbler: Executable JAR Files</a></p><div class="image"><a class="image__link" href="https://blog.headius.com/2025/10/packaging-ruby-apps-with-warbler-jar-files.html?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/52375c00-ffc9-47eb-90fd-7eeb0a4dee34/image.png?t=1761504907"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://blog.headius.com/2025/10/packaging-ruby-apps-with-warbler-jar-files.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://blog.headius.com/2025/10/packaging-ruby-apps-with-warbler-jar-files.html</a></p></span></div></div><p class="paragraph" style="text-align:left;">You should also read the followup here about packaging a <a class="link" href="https://blog.headius.com/2025/10/warbled-sidekiq.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Sidekiq Background Job Server</a></p><p class="paragraph" style="text-align:left;">👉 Josef Šimánek published a new tool <a class="link" href="https://rubyelders.com/writings/2025-10-ruby-butler-1.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby Butler: Time to Rethink RubyGems and Bundler</a></p><div class="image"><a class="image__link" href="https://rubyelders.com/writings/2025-10-ruby-butler-1.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7a174617-edc5-4a0e-948f-06f6c352e0df/image.png?t=1761505633"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubyelders.com/writings/2025-10-ruby-butler-1.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://rubyelders.com/writings/2025-10-ruby-butler-1.html</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="code-samples">💻 Code Samples</h3><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="background-color:#fff8d8;"><span style="color:rgb(0, 0, 0);font-family:Palatino,"Palatino Linotype","Palatino LT STD",Georgia,serif;">[This is an ad from the curator of this newsletter]</span></span></p><p class="paragraph" style="text-align:left;">Hello, Rubyists! </p><p class="paragraph" style="text-align:left;">If you love coding but sometimes find writing tests to be a chore, I have something for you. My <a class="link" href="https://goodenoughtesting.com/learn/reliable-test-case-generation-with-ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">upcoming workshop</a> (happening on Friday, 31 October from 16:00 UTC) focuses on using AI to help you generate reliable test cases. </p><div class="image"><a class="image__link" href="https://goodenoughtesting.com/learn/reliable-test-case-generation-with-ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/12a2f1b5-133a-4a86-99eb-bcf2f90ae98e/image.png?t=1761508922"/></a><div class="image__source"><span class="image__source_text"><p>Join <a class="link" href="https://goodenoughtesting.com/learn/reliable-test-case-generation-with-ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://goodenoughtesting.com/learn/reliable-test-case-generation-with-ai</a></p></span></div></div><p class="paragraph" style="text-align:left;">However, <b>this isn&#39;t just about relying on AI to do everything for you, it&#39;s about understanding the process.</b> We&#39;ll explore which aspects of testing can be safely and effectively delegated to an LLM (large language model) and which parts you should continue to handle yourself. </p><p class="paragraph" style="text-align:left;">In other words, <b>it&#39;s about finding the right balance.</b> You&#39;ll learn h<b>ow to let AI manage the repetitive or standardized testing tasks</b>, allowing you to concentrate on the interesting and fun aspects of your code with confidence. If this sounds appealing to you, come <a class="link" href="https://goodenoughtesting.com/learn/reliable-test-case-generation-with-ai?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">join the workshop!</a> </p><hr class="content_break"><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">️</span>️💻 <a class="link" href="https://twitter.com/rails?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Ruby On Rails</a> shared a code sample with <code>after_discard</code> callback in practice</p><div class="image"><a class="image__link" href="https://x.com/rails/status/1980293904298631461?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/86fee56e-ae84-463d-886e-e68e3d1352b2/image.png?t=1761481655"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/rails/status/1980293904298631461?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@rails</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://bsky.app/profile/adrianthedev.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Adrian Marin</a> shared how you can clear the cache on development environment easier</p><div class="image"><a class="image__link" href="https://bsky.app/profile/adrianthedev.com/post/3m3rjreunjj2c?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/caf08568-8eba-495a-bd10-82c967976701/image.png?t=1761476384"/></a><div class="image__source"><span class="image__source_text"><p>1Source: <a class="link" href="https://bsky.app/profile/adrianthedev.com/post/3m3rjreunjj2c?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://adrianthedev.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">adrianthedev.com</a></p></span></div></div><p class="paragraph" style="text-align:left;">💻 <a class="link" href="https://bsky.app/profile/joel.drapper.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Joel Drapper</a> shared a code sample about adding runtime assertions with method signatures</p><div class="image"><a class="image__link" href="https://bsky.app/profile/joel.drapper.me/post/3m3mgr5sipc2e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6ee4874a-c2a8-45f5-8f5e-34449050eec4/image.png?t=1761476191"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/joel.drapper.me/post/3m3mgr5sipc2e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://joel.drapper.me?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">joel.drapper.me</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://deepakmahakale.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Deepak Mahakale</a> shared how you can fetch secrets from Rails credentials</p><div class="image"><a class="image__link" href="https://x.com/deepakmahakale/status/1980864851032613324?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4a881634-48bd-4ed0-b5e0-660d34c055ef/image.png?t=1761482201"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/deepakmahakale/status/1980864851032613324?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@deepakmahakale</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/headius?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Charles Oliver Nutter</a> shared that you can use threads and frozen objects on JRuby</p><div class="image"><a class="image__link" href="https://x.com/headius/status/1980885085566996683?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/afaa5e9f-502e-4b04-b5f3-e884fce5216e/image.png?t=1761482912"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/headius/status/1980885085566996683?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@headius</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/headius/status/1980885085566996683?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7b8e5844-7a4a-48b8-9ad7-46b12ff2b795/image.png?t=1761482918"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/headius/status/1980885085566996683?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@headius</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://twitter.com/RubyCademy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Ruby Cademy</a> shared how <code>ActiveRecord::Base#pluck</code> supports hash values as arguments</p><div class="image"><a class="image__link" href="https://x.com/RubyCademy/status/1981111365205901674?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/63bd1615-63a4-48bd-bd24-5bea4de8b8e2/image.png?t=1761483462"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/RubyCademy/status/1981111365205901674?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@RubyCademy</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://x.com/_m27e?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Zeke Gabrielse</a> showed a code that playing with design to implement static typing: </p><div class="image"><a class="image__link" href="https://x.com/_m27e/status/1981404698084008442?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/50d50e58-8fda-45ad-9fd3-e04e4949a502/image.png?t=1761484101"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_m27e/status/1981404698084008442?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@_m27e</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://focustask.app?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Vojtech Rinik</a> shared a code sample of a controller that is responsible to validate request and response and generate OpenAPI schema</p><div class="image"><a class="image__link" href="https://x.com/_vojto/status/1981692436666572871?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2f0ef492-237a-47ab-a83e-f99e576c77b3/image.png?t=1761485310"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/_vojto/status/1981692436666572871?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@_vojto</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://x.com/hschnedlitz?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Hans Schnedlitz</a> shared a helping tip to find the gem responsible for these deprecation warnings in Rails 8.1</p><div class="image"><a class="image__link" href="https://x.com/hschnedlitz/status/1981714318367359427?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/33c53cac-8e4b-43f8-bc5e-e802f0350023/image.png?t=1761485399"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/hschnedlitz/status/1981714318367359427?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@hschnedlitz</a></p></span></div></div><p class="paragraph" style="text-align:left;">️💻 <a class="link" href="https://mhenrixon.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Mika Henriksson</a> adviced us about avoiding unnecessary database records in Rails tests1</p><div class="image"><a class="image__link" href="https://x.com/mhenrixon/status/1982120147855761886?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/78201270-4801-48ba-8a91-cd398cb2366f/image.png?t=1761485887"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mhenrixon/status/1982120147855761886?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@mhenrixon</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/mhenrixon/status/1982120147855761886?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b492b439-b14f-452a-a7c5-42f36e6db0c5/image.png?t=1761485906"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/mhenrixon/status/1982120147855761886?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@mhenrixon</a></p></span></div></div><hr class="content_break"><h3 class="heading" style="text-align:left;" id="8-weeks-actionable-ai-skills-mba-st">8 Weeks. Actionable AI Skills. MBA-Style Networking.</h3><div class="image"><a class="image__link" href="https://wallstreetprep.business.columbia.edu/ai-certification/?utm_source=beehiiv&utm_medium=referrals&utm_campaign={{publication_alphanumeric_id}}&utm_content=post_sec_FD_AI_1&_bhiiv=opp_bef68f02-bf5e-406c-b166-289ecb407561_82d13f97&bhcl_id=70110399-1418-4c30-a26e-dc124a1d1555_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3820ea37-06d5-479d-8ee6-902259e26b78/image.png?t=1760559092"/></a></div><p class="paragraph" style="text-align:left;">The 8-week <a class="link" href="https://wallstreetprep.business.columbia.edu/ai-certification/?utm_source=beehiiv&utm_medium=referrals&utm_campaign={{publication_alphanumeric_id}}&utm_content=post_sec_FD_AI_1&_bhiiv=opp_bef68f02-bf5e-406c-b166-289ecb407561_82d13f97&bhcl_id=70110399-1418-4c30-a26e-dc124a1d1555_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">AI for Business & Finance Certificate Program</a> helps you:</p><ul><li><p class="paragraph" style="text-align:left;">Build AI confidence with role-specific use cases</p></li><li><p class="paragraph" style="text-align:left;">Learn directly from leaders at top financial firms</p></li><li><p class="paragraph" style="text-align:left;">Build a lifetime network that continues to open doors long after the program ends</p></li></ul><p class="paragraph" style="text-align:left;">Earn your certificate from Columbia Business School Executive Education—program starts November 10.</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://wallstreetprep.business.columbia.edu/ai-certification/?utm_source=beehiiv&utm_medium=referrals&utm_campaign={{publication_alphanumeric_id}}&utm_content=post_sec_FD_AI_1&_bhiiv=opp_bef68f02-bf5e-406c-b166-289ecb407561_82d13f97&bhcl_id=70110399-1418-4c30-a26e-dc124a1d1555_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Enroll Today</a></p><hr class="content_break"><h3 class="heading" style="text-align:left;" id="thinking-about-code-design">📐 Thinking about Code Design</h3><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://bsky.app/profile/fxn.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Xavier Noria</a> shared an interesting debug technique</p><div class="image"><a class="image__link" href="https://bsky.app/profile/fxn.bsky.social/post/3m3ub5biwks2n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/69d01ee9-c8ae-4d07-86e7-9226e0085362/image.png?t=1761476728"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/fxn.bsky.social/post/3m3ub5biwks2n?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://fxn.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">fxn.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://bsky.app/profile/alexis.bernard.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Alexis Bernard</a> shared his take on how beneficial is to always create a model</p><div class="image"><a class="image__link" href="https://bsky.app/profile/alexis.bernard.io/post/3m3uodlnd4s27?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/770dae9e-2869-4a31-8f48-7cb91d800c4f/image.png?t=1761539408"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/alexis.bernard.io/post/3m3uodlnd4s27?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://alexis.bernard.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">alexis.bernard.io</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://bsky.app/profile/baweaver.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Brandon Weaver</a> asked about dealing with larger-scale synthetic testing data creation:</p><div class="image"><a class="image__link" href="https://bsky.app/profile/baweaver.bsky.social/post/3m3vwmh2kyc2q?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/bcc7929a-e6e5-4f33-8ad2-064407f33594/image.png?t=1761477500"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/baweaver.bsky.social/post/3m3vwmh2kyc2q?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://baweaver.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">baweaver.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">He got some suggestions:</p><p class="paragraph" style="text-align:left;"><a class="link" href="https://github.com/stevegeek/fixtures_from_factories?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">fixtures_from_factories</a> → <i>Build sets of Fixtures for your Rails app, using your test suite&#39;s FactoryBot factories</i></p><p class="paragraph" style="text-align:left;"><a class="link" href="https://github.com/kaspth/oaken?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">oaken</a> → <i>Oaken upgrades your development seeds, lets you reuse them in tests & blends the best of fixtures & factories into one cohesive whole.</i></p><div class="image"><a class="image__link" href="https://bsky.app/profile/diaconou.com/post/3m3wbg3qljc27?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/43340d58-5381-4e70-8a5b-4b414ab4aaf6/image.png?t=1761477671"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/diaconou.com/post/3m3wbg3qljc27?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://bsky.app/profile/diaconou.com/post/3m3wbg3qljc27</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/thomascannon.me/post/3m3wn6ybd422x?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c618abc4-a5fc-4441-bc56-ae14fea9b2a9/image.png?t=1761477767"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/thomascannon.me/post/3m3wn6ybd422x?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://bsky.app/profile/thomascannon.me/post/3m3wn6ybd422x</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/jrvs.uk/post/3m3vzz26xys25?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/be3da2b6-bd30-4dd7-a9e3-56d1d4251356/image.png?t=1761477809"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/jrvs.uk/post/3m3vzz26xys25?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://bsky.app/profile/jrvs.uk/post/3m3vzz26xys25</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://x.com/itsdavidramos?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">David Alejandro</a> shared how you can use the <a class="link" href="https://github.com/ioquatix/agent-context?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">agent-context</a> gem</p><div class="image"><a class="image__link" href="https://x.com/itsdavidramos/status/1980054210520793471?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8f063d62-63bc-4585-ad71-05b6f62c06f4/image.png?t=1761481585"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/itsdavidramos/status/1980054210520793471?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@itsdavidramos</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared his take on framework choice</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/1980514295130780062?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cd4f366c-e002-43be-8f05-6f91d3e237a0/image.png?t=1761481740"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/1980514295130780062?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://twitter.com/pragdave?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Dave Thomas</a> quoted a fact from an upcoming Elixir book</p><div class="image"><a class="image__link" href="https://x.com/pragdave/status/1980652396117434718?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/54800b37-01ca-432a-b7ba-6a2670c6e8c1/image.png?t=1761481906"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/pragdave/status/1980652396117434718?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@pragdave</a></p></span></div></div><p class="paragraph" style="text-align:left;">️Then an interesting conversation between him and Uncle Bob Martin started</p><div class="image"><a class="image__link" href="https://x.com/unclebobmartin/status/1980977890545049774?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/88a5e6f6-8ecd-4c92-92fd-89e174c44b8c/image.png?t=1761482551"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/unclebobmartin/status/1980977890545049774?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@unclebobmartin</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/pragdave/status/1980990332696469872?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b874e346-579d-4df2-9020-78fb569ef613/image.png?t=1761482586"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/pragdave/status/1980990332696469872?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@pragdave</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/unclebobmartin/status/1980994448013066699?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/27cce560-eb0a-4f15-a8d0-22fb85939f30/image.png?t=1761482721"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/unclebobmartin/status/1980994448013066699?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@unclebobmartin</a></p></span></div></div><p class="paragraph" style="text-align:left;">📐 <a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> posted that Rails “DIYstack“ hasn’t yet solved some issues from the data layer</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/1980680991049150931?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/463c6c36-48ae-4ebf-8027-1e95b9e6c115/image.png?t=1761481976"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/1980680991049150931?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><p class="paragraph" style="text-align:left;">️️<a class="link" href="http://selleo.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Wojtek Wrona</a> replied with:</p><div class="image"><a class="image__link" href="https://x.com/wojtodzio/status/1981020056403231131?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/42104d5e-0923-41a7-b17f-57bd98dd391a/image.png?t=1761483350"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/wojtodzio/status/1981020056403231131?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@wojtodzio</a></p></span></div></div><p class="paragraph" style="text-align:left;">📐 <a class="link" href="https://brankopetric.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Branko</a> shared how splitting a monolith into microservices was a mistake in his case</p><div class="image"><a class="image__link" href="https://x.com/brankopetric00/status/1980994428341751964?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a8af9ac1-72f8-4848-a70e-670841b1199a/image.png?t=1761483107"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/brankopetric00/status/1980994428341751964?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@brankopetric00</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="http://stuyam.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Stuart</a> shared that Rails 8.1 sorts columns for each table in schema.rb alphabetically</p><div class="image"><a class="image__link" href="https://x.com/StuYam/status/1980995888995790893?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/27ed32f5-3ed6-4461-a896-c0c51430decc/image.png?t=1761483224"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/StuYam/status/1980995888995790893?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@StuYam</a></p></span></div></div><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://fractaledmind.github.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Stephen Margheim</a> shared he is preparing a talk about the definition of a “type“, addressing some questions to his community</p><div class="image"><a class="image__link" href="https://x.com/fractaledmind/status/1981122110518153590?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7df197cb-01c9-440e-b1bc-c56e4a4aacd2/image.png?t=1761483572"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/fractaledmind/status/1981122110518153590?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@fractaledmind</a></p></span></div></div><p class="paragraph" style="text-align:left;">He got some replies:</p><div class="image"><a class="image__link" href="https://x.com/yatish_me/status/1981125852546134151?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f6e4ce72-3920-42eb-a936-fe23e9a6c26f/image.png?t=1761483732"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/yatish_me/status/1981125852546134151?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@yatish_me</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/joelquen/status/1981361545935269959?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/03ddba71-5890-4b1e-a1ac-28a2769e6ece/image.png?t=1761483760"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/joelquen/status/1981361545935269959?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@joelquen</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/joelquen/status/1981362715974058289?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/02e2dfbc-430b-4339-ad6f-f77760ec6394/image.png?t=1761483788"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/joelquen/status/1981362715974058289?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@joelquen</a></p></span></div></div><div class="image"><a class="image__link" href="https://x.com/joelquen/status/1981363604566765885?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2a285228-d2f1-4833-bf79-ae0697550b5e/image.png?t=1761483816"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/joelquen/status/1981363604566765885?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@joelquen</a></p></span></div></div><hr class="content_break"><h3 class="heading" style="text-align:left;">Go from AI overwhelmed to AI savvy professional</h3><div class="image"><a class="image__link" href="https://magic.beehiiv.com/v1/faa6a747-8c1c-43c1-8155-91aa43268f01?email={{email}}&redirect_to=https%3A%2F%2Fwww.superhuman.ai%2Fc%2Fconfirmation%3Fmagiclink_subscription&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_ae7c5816-a822-450e-8711-367b336ed7a3_d22f5b49&bhcl_id=a3b6c5f4-c61c-4d36-94dd-9b54134f6a35_{{subscriber_id}}_{{email_address_id}}" rel="noopener" target="_blank"><img class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2c848121-9d72-4a63-bd9d-5e8362d2ff4c/5.jpg?t=1756243342"/></a></div><p class="paragraph" style="text-align:left;">AI will eliminate 300 million jobs in the next 5 years.</p><p class="paragraph" style="text-align:left;">Yours doesn&#39;t have to be one of them. </p><p class="paragraph" style="text-align:left;">Here&#39;s how to future-proof your career: </p><ul><li><p class="paragraph" style="text-align:left;">Join the <a class="link" href="https://magic.beehiiv.com/v1/faa6a747-8c1c-43c1-8155-91aa43268f01?email={{email}}&redirect_to=https%3A%2F%2Fwww.superhuman.ai%2Fc%2Fconfirmation%3Fmagiclink_subscription&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_ae7c5816-a822-450e-8711-367b336ed7a3_d22f5b49&bhcl_id=a3b6c5f4-c61c-4d36-94dd-9b54134f6a35_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Superhuman AI</a> newsletter - read by 1M+ professionals </p></li><li><p class="paragraph" style="text-align:left;">Learn AI skills in 3 mins a day </p></li><li><p class="paragraph" style="text-align:left;">Become the AI expert on your team </p></li></ul><p class="paragraph" style="text-align:left;"><a class="link" href="https://magic.beehiiv.com/v1/faa6a747-8c1c-43c1-8155-91aa43268f01?email={{email}}&redirect_to=https%3A%2F%2Fwww.superhuman.ai%2Fc%2Fconfirmation%3Fmagiclink_subscription&utm_source=beehiiv&utm_campaign={{publication_alphanumeric_id}}&redirect_delay=3&_bhiiv=opp_ae7c5816-a822-450e-8711-367b336ed7a3_d22f5b49&bhcl_id=a3b6c5f4-c61c-4d36-94dd-9b54134f6a35_{{subscriber_id}}_{{email_address_id}}" target="_blank" rel="noopener noreferrer nofollow">Start learning AI now</a></p><hr class="content_break"><p class="paragraph" style="text-align:left;">️📐 <a class="link" href="https://oldmoe.blog?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Mohammad A. Ali</a> posted his results of his latest time optimization </p><div class="image"><a class="image__link" href="https://x.com/oldmoe/status/1981376652878770638?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/de88f263-90f0-4d3b-97e3-497c49f58f62/image.png?t=1761483988"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/oldmoe/status/1981376652878770638?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@oldmoe</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="around-code-news-findings-books-and">💡Around code (news, findings, books, and more - all about Ruby)</h3><p class="paragraph" style="text-align:left;">💡<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a><span style="color:rgb(0, 0, 0);font-size:medium;"> shared a video about deploying with Kamal 2: </span></p><div class="image"><a class="image__link" href="https://x.com/dhh/status/1982428890254778790?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fbd081d6-63ca-4e57-a698-ed33e0dc4c48/image.png?t=1761539062"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/1982428890254778790?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/RubyCademy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Ruby Cademy</a> shared that the RubyCademy project is ending 🥹 </p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cca4e7c6-63c8-45f5-9891-d271c1fef484/image.png?t=1761484505"/><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/RubyCademy/status/1981507746827587857?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@RubyCademy</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://bsky.app/profile/getajobmike.ruby.social.ap.brid.gy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Mike Perham</a> shared some insights about the sponsors of Ruby Association</p><div class="image"><a class="image__link" href="https://bsky.app/profile/getajobmike.ruby.social.ap.brid.gy/post/3m3sx3atchpk2?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d442e29d-16c1-4cb4-86bb-55d3d978751e/image.png?t=1761476464"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/getajobmike.ruby.social.ap.brid.gy/post/3m3sx3atchpk2?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://getajobmike.ruby.social.ap.brid.gy?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">getajobmike.ruby.social.ap.brid.gy</a></p></span></div></div><p class="paragraph" style="text-align:left;"><a class="link" href="https://bsky.app/profile/byroot.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Jean Boussier</a> replied with:</p><div class="image"><a class="image__link" href="https://bsky.app/profile/byroot.bsky.social/post/3m3twpntlqs2u?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5c04094e-edeb-4b77-a470-2e7a01564079/image.png?t=1761539554"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/byroot.bsky.social/post/3m3twpntlqs2u?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://byroot.bsky.social?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">byroot.bsky.social</a></p></span></div></div><p class="paragraph" style="text-align:left;">Peter replied also on Jean comment:</p><div class="image"><a class="image__link" href="https://bsky.app/profile/peterzhu.ca/post/3m3znuig6xs2o?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/39e45aa2-525f-4262-ad17-aa5252b92996/image.png?t=1761477587"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/peterzhu.ca/post/3m3znuig6xs2o?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://peterzhu.ca?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">peterzhu.ca</a></p></span></div></div><p class="paragraph" style="text-align:left;">And the conversation goes even further</p><div class="image"><a class="image__link" href="https://bsky.app/profile/adamdaniels.ca/post/3m3uhsbgfik2x?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c731498b-b755-4e24-b2f7-71e7e90d01cc/image.png?t=1761476845"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/adamdaniels.ca/post/3m3uhsbgfik2x?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://adamdaniels.ca?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">adamdaniels.ca</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/st0012.dev/post/3m3uj2wmpbk2w?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cad3ccd3-366d-4eb9-b002-7dfd862dab1b/image.png?t=1761476907"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/st0012.dev/post/3m3uj2wmpbk2w?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://st0012.dev?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">st0012.dev</a></p></span></div></div><div class="image"><a class="image__link" href="https://bsky.app/profile/adamdaniels.ca/post/3m3uk3iyous2x?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1046df84-3f74-455b-9d46-48f125d91ffa/image.png?t=1761476930"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bsky.app/profile/adamdaniels.ca/post/3m3uk3iyous2x?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@</a><a class="link" href="https://adamdaniels.ca?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">adamdaniels.ca</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://twitter.com/marcoroth_?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Marco Roth</a> posted about a new feature that will be available in Herb → disable specific linter rules using comments</p><div class="image"><a class="image__link" href="https://x.com/marcoroth_/status/1981909118269997482?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4df94674-0531-4bd5-b8d2-cbb1bc3f6e26/image.png?t=1761485564"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/marcoroth_/status/1981909118269997482?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@marcoroth_</a></p></span></div></div><p class="paragraph" style="text-align:left;">💡 <a class="link" href="https://github.com/luke-gruber?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Luke Gruber</a> was <a class="link" href="https://bugs.ruby-lang.org/issues/21646?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">proposed to be a Ruby Core committer</a> and Matz <a class="link" href="https://bugs.ruby-lang.org/issues/21646?utm_source=shortruby&ref=shortruby.com#note-5" target="_blank" rel="noopener noreferrer nofollow">accepted</a> the proposal: </p><div class="image"><a class="image__link" href="https://bugs.ruby-lang.org/issues/21646?utm_source=shortruby&ref=shortruby.com#note-5" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b07cde08-72b1-4983-b26c-1159754e61c4/image.png?t=1761492520"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://bugs.ruby-lang.org/issues/21646?utm_source=shortruby&ref=shortruby.com#note-5" target="_blank" rel="noopener noreferrer nofollow">https://bugs.ruby-lang.org/issues/21646</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="why-choose-ruby-and-rails">❤️ Why Choose Ruby and Rails</h3><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">❤️</span><a class="link" href="https://x.com/zilasino?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Zil N</a><span style="color:rgb(0, 0, 0);font-size:medium;"> shared about productivity in Rails: </span></p><div class="image"><a class="image__link" href="https://x.com/zilasino/status/1982137678779826303?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/43e0d1ec-3a89-4753-98e2-fe8415e59fe2/image.png?t=1761538669"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/zilasino/status/1982137678779826303?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@zilasino</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="gems-libraries-tools-and-updates">🧰 Gems, Libraries, Tools and Updates </h2><h3 class="heading" style="text-align:left;" id="new-gems-and-repos">🆕 New Gems and Repos</h3><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://railsdesigner.com?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Rails Designer</a> published a new project → <a class="link" href="https://railsdesigner.com/announcing-attractive-js/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Announcing Attractive.js, a new JavaScript-free JavaScript library</a></p><div class="image"><a class="image__link" href="https://github.com/Rails-Designer/attractivejs?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/16c5a0f1-ea9f-4312-8c24-5ab637a902b5/image.png?t=1761505885"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/Rails-Designer/attractivejs?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://github.com/Rails-Designer/attractivejs</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/simi?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Josef Šimánek</a> published a new tool <a class="link" href="https://rubyelders.com/writings/2025-10-ruby-butler-1.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Ruby Butler: Time to Rethink RubyGems and Bundler</a></p><div class="image"><a class="image__link" href="https://rubyelders.com/writings/2025-10-ruby-butler-1.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="border-radius:0px 0px 0px 0px;border-style:solid;border-width:0px 0px 0px 0px;box-sizing:border-box;border-color:#E5E7EB;" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7a174617-edc5-4a0e-948f-06f6c352e0df/image.png?t=1761505633"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://rubyelders.com/writings/2025-10-ruby-butler-1.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://rubyelders.com/writings/2025-10-ruby-butler-1.html</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/sampersand?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Sam Westerman</a> published a new gem <b><a class="link" href="https://github.com/sampersand/blankity?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">blankity</a></b><span style="color:rgb(0, 0, 0);font-size:medium;"> </span><span style="color:rgb(0, 0, 0);">- </span><span style="color:rgb(0, 0, 0);"><i>&quot;There&#39;s a lot of conversion methods in Ruby: to_s, to_a, to_i, etc. This gem provides types which only respond to these conversion methods, and nothing else. &quot;</i></span></p><div class="image"><a class="image__link" href="https://github.com/sampersand/blankity?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/a24999e2-32fd-4316-8630-ebc70e4b9718/image.png?t=1761539905"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/sampersand/blankity?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://github.com/sampersand/blankity</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/panozzaj?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Anthony Panozzo</a> published a new gem <a class="link" href="https://github.com/panozzaj/plain_errors?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">plain_errors - Rails middleware for LLM-optimized error messages</a></p><div class="image"><a class="image__link" href="https://github.com/panozzaj/plain_errors?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/03934011-ce16-4a1d-8a83-5739f1d85782/image.png?t=1761551812"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/panozzaj/plain_errors?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://github.com/panozzaj/plain_errors</a></p></span></div></div><p class="paragraph" style="text-align:left;">🆕 <a class="link" href="https://github.com/obie?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Obie Fernandez</a> published a new gem <b><a class="link" href="https://github.com/obie/concise_errors?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">concise_errors</a></b><span style="color:rgb(0, 0, 0);font-size:medium;"> </span><span style="color:rgb(0, 0, 0);">- </span><span style="color:rgb(0, 0, 0);"><i>&quot;ConciseErrors replaces ActionDispatch::DebugExceptions with a compact error page that highlights the exception and a truncated backtrace, making Rails crashes easier for humans and AI helpers alike. &quot;</i></span></p><div class="image"><a class="image__link" href="https://github.com/obie/concise_errors?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/555a14c5-0251-46b3-bdd0-375a24dc509d/image.png?t=1761551911"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/obie/concise_errors?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://github.com/obie/concise_errors</a></p></span></div></div><h3 class="heading" style="text-align:left;" id="updates">🧰 Updates</h3><p class="paragraph" style="text-align:left;">🧰 Sharon Rosner published a new version of Papercraft about <a class="link" href="https://noteflakes.com/articles/2025-10-20-papercraft-3?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Papercraft 3.0 Released</a></p><div class="image"><a class="image__link" href="https://noteflakes.com/articles/2025-10-20-papercraft-3?utm_source=shortruby&ref=shortruby.com" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/011d7a34-0883-4930-bb66-740f24724f73/image.png?t=1761492322"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://noteflakes.com/articles/2025-10-20-papercraft-3?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">https://noteflakes.com/articles/2025-10-20-papercraft-3</a></p></span></div></div><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://nts.strzibny.name?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Josef Strzibny</a> announced a new version of <a class="link" href="https://github.com/wmlele/devise-otp?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">devise-otp</a> - <i>“Two Factors authentication for Devise using Time Based OTP/rfc6238 tokens“</i></p><div class="image"><a class="image__link" href="https://github.com/wmlele/devise-otp/releases/tag/v2.0.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/9fbaae6e-90d9-4179-91e9-df470f7849b0/image.png?t=1761480923"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://github.com/wmlele/devise-otp/releases/tag/v2.0.0?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">https://github.com/wmlele/devise-otp/releases/tag/v2.0.0</a></p></span></div></div><p class="paragraph" style="text-align:left;">🧰 <a class="link" href="https://greg.molnar.io?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Greg Molnar</a> shared that maintenance of Device has been starting</p><div class="image"><a class="image__link" href="https://x.com/GregMolnar/status/1980909185790345317?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6c668005-388c-4d8c-8fb6-bd2bea07a542/image.png?t=1761481020"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/GregMolnar/status/1980909185790345317?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@GregMolnar</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="related-but-not-rubyspecific">🤝 Related (but not Ruby-specific)</h2><p class="paragraph" style="text-align:left;">🤝<span style="color:rgb(0, 0, 0);font-size:medium;"> </span><a class="link" href="https://twitter.com/nateberkopec?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Nate Berkopec</a> shared how to improve your public profile as a developer</p><div class="image"><a class="image__link" href="https://x.com/nateberkopec/status/1982220500064719070?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c230a580-e3b4-4019-8b87-b3b469f593ac/image.png?t=1761479819"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/nateberkopec/status/1982220500064719070?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@nateberkopec</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://twitter.com/dhh?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">David Heinemeier Hansson</a> went on TheStandup alongside ThePrimeagen and talked about Omarchy. The <a class="link" href="https://www.youtube.com/watch?v=ljGPvgMPOn8&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">video is available on YouTube</a>.</p><div class="image"><a class="image__link" href="https://x.com/dhh/status/1981103319004377593?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/ba737750-bc81-4997-8097-03fc3eb922f6/image.png?t=1761486084"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/dhh/status/1981103319004377593?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@dhh</a></p></span></div></div><p class="paragraph" style="text-align:left;">🤝 <a class="link" href="https://swift.org?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Swift Language</a> announced Swift for Android, and this could be interesting news for Hotwire Native</p><div class="image"><a class="image__link" href="https://x.com/SwiftLang/status/1981814324776858105?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/98017567-314a-4f5e-a3b6-ab7a99dd008e/image.png?t=1761486201"/></a><div class="image__source"><span class="image__source_text"><p>Source: <a class="link" href="https://x.com/SwiftLang/status/1981814324776858105?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">@SwiftLang</a></p></span></div></div><h2 class="heading" style="text-align:left;" id="more-content">More content: 📚 🗞 🎧 🎥 ✍🏾</h2><h3 class="heading" style="text-align:left;" id="newsletters">🗞 Newsletters</h3><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🗞 </span>This Week in Rails published a new edition → <a class="link" href="https://rubyonrails.org/2025/10/17/this-week-in-rails?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Bound SQL literals in CTEs, new tutorial and more!</a> <span style="background-color:#fff8d8;"><i>(I think we missed adding this in our last edition)</i></span></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🗞 </span>This Week in Rails published a new edition → <a class="link" href="https://rubyonrails.org/2025/10/22/rails-8-1?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails 8.1: Job continuations, structured events, local CI</a></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🗞 </span>Ruby Weekly published a new edition → <a class="link" href="https://rubyweekly.com/issues/772?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Matz addresses the RubyGems situation</a></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🗞 </span>Hotwire Weekly published a new edition → <a class="link" href="https://www.hotwireweekly.com/archive/week-43-swift-sdk-for-android-liquid-glass-tab-bar/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Week 43 - Swift SDK for Android, Liquid Glass Tab Bar, and more!</a></p><p class="paragraph" style="text-align:left;"><span style="color:rgb(0, 0, 0);">🗞</span><span style="color:rgb(0, 0, 0);font-size:medium;"> </span>Awesome Ruby Newsletter published a new edition → <a class="link" href="https://ruby.libhunt.com/newsletter/492?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Edition 492</a></p><h3 class="heading" style="text-align:left;" id="podcasts">🎧 Podcasts</h3><p class="paragraph" style="text-align:left;">🎧 Adrian Marin published a new podcast episode → <a class="link" href="https://www.friendly.show/2278525/episodes/18067490-why-developers-resist-paying-for-tools?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Why Developers Resist Paying For Tools</a></p><p class="paragraph" style="text-align:left;">🎧 Errol Schmidt published a new podcast episode → <a class="link" href="https://open.spotify.com/episode/6pcEuDrWNj63xQrjn1IPNp?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Technology for Humans: Shan Cureton</a></p><p class="paragraph" style="text-align:left;">🎧 Tropical.Rb published a new podcast episode → <a class="link" href="https://www.tropicalonrails.com/tropicast/alan-batista-e-joao-almeida?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Alan Batista e João Almeida - Tropical on Rails 2026</a></p><p class="paragraph" style="text-align:left;">🎧 The Bike Shed published a new podcast episode → <a class="link" href="https://bikeshed.thoughtbot.com/479?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">479: Hardly Strictly Remotely In-Person</a></p><p class="paragraph" style="text-align:left;">🎧 The Ruby AI podcast published a new podcast episode →<a class="link" href="https://www.buzzsprout.com/2388930/episodes/18044989-the-tldr-of-ai-dev-real-workflows-with-justin-searls.mp3?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">The TLDR of AI Dev: Real Workflows with Justin Searls</a></p><p class="paragraph" style="text-align:left;">🎧 On Rails published a new podcast episode → <a class="link" href="https://www.buzzsprout.com/2462975/episodes/17978596-alexander-stathis-scaling-a-modular-rails-monolith-at-angellist.mp3?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Alexander Stathis: Scaling a Modular Rails Monolith at AngelList</a></p><p class="paragraph" style="text-align:left;">🎧 Rails Business published a new podcast episode → <a class="link" href="https://www.buzzsprout.com/2435951/episodes/18046525-scott-werner?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Scott Werner</a></p><p class="paragraph" style="text-align:left;">🎧 A Junior, a senior and I published a new podcast episode →<a class="link" href="https://creators.spotify.com/pod/profile/junior-senior-i/episodes/23---On-Bootcamps-with-Aslihan-and-Sami-e39uju4?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow"> 23 - On Bootcamps with Aslihan and Sami</a></p><h3 class="heading" style="text-align:left;" id="videos">🎥 Videos</h3><p class="paragraph" style="text-align:left;">🎥 Joel Dapper published a new video → <a class="link" href="https://www.youtube.com/watch?v=G9rxcepewas&utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Empirical Demo</a></p><p class="paragraph" style="text-align:left;">🎥 Drifting Ruby published a new video → <a class="link" href="https://www.driftingruby.com/episodes/active-job-continuations?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Active Job Continuations</a></p><p class="paragraph" style="text-align:left;">🎥 Go RAils published a new video → <a class="link" href="https://gorails.com/episodes/deploying-rails-8-with-hatchbox?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Deploying Rails 8 with Hatchbox</a></p><h3 class="heading" style="text-align:left;" id="articles">✍🏾 Articles</h3><h4 class="heading" style="text-align:left;" id="whats-new">What’s new 🆕</h4><p class="paragraph" style="text-align:left;">🆕 Henrique Medeiros published a new article about <a class="link" href="https://fastruby.io/blog/rails8.1.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Rails 8.1 new API: </a><code>Rails.event.notify(…)</code></p><p class="paragraph" style="text-align:left;">🆕 Charles Oliver Nutter published a new article about <a class="link" href="https://headius.github.io/2025/10/packaging-ruby-apps-with-warbler-jar-files.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Packaging Ruby Apps with Warbler: Executable JAR Files</a></p><p class="paragraph" style="text-align:left;">🆕 JP Camara published a new article about <a class="link" href="https://jpcamara.com/2025/10/22/bitmasks-threads-and-interrupts-concurrent.html?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Bitmasks, Threads and Interrupts: Concurrent, colorless Ruby</a></p><p class="paragraph" style="text-align:left;">🆕 Joel Drapper published a new article about <a class="link" href="https://joel.drapper.me/p/ruby-type-sig/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">The journey to the perfect type signature in Ruby</a></p><p class="paragraph" style="text-align:left;">🆕 Avo published a new article about <a class="link" href="https://avohq.io/blog/quickly-clear-the-rails-cache-in-development?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Quickly clear the Rails cache in development</a></p><p class="paragraph" style="text-align:left;">🆕 Brad Gessler published a new article about <a class="link" href="https://beautifulruby.com/articles/phlex-on-rails-launch.?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Phlex on Rails course is completed and launched</a></p><p class="paragraph" style="text-align:left;">🆕 Ruby Central published a new article about <a class="link" href="https://rubycentral.org/news/source-of-truth-update-friday-october-24-2025/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Source of Truth Update – Friday, October 24, 2025</a></p><p class="paragraph" style="text-align:left;">🆕 André Arko published a new article about <a class="link" href="https://andre.arko.net/2025/10/26/we-want-to-move-ruby-forward/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">We want to move Ruby forward</a></p><p class="paragraph" style="text-align:left;">🆕 Charles Oliver Nutter published a new article about <a class="link" href="https://blog.headius.com/2025/10/warbled-sidekiq.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Warbled Sidekiq: Zero-install Executable for JVM</a></p><p class="paragraph" style="text-align:left;">🆕 John Hawthorn published a new article about <a class="link" href="https://www.johnhawthorn.com/2025/searching-ruby-docs/?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Searching Ruby&#39;s documentation</a></p><p class="paragraph" style="text-align:left;">🆕 Charles Oliver Nutter published a new article about <a class="link" href="https://blog.headius.com/2025/10/packaging-ruby-apps-with-warbler-jar-files.html?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">Packaging Ruby Apps with Warbler: Executable JAR Files</a></p><p class="paragraph" style="text-align:left;">🆕 Jeffery Morhous published a new article about <a class="link" href="https://www.honeybadger.io/blog/new-in-kamal-2/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Deploying multiple apps wit Kamal 2</a></p><p class="paragraph" style="text-align:left;">🆕 <span style="color:rgb(0, 0, 0);">Florent Guilleux</span><span style="color:rgb(0, 0, 0);font-size:medium;"> published an article about </span><a class="link" href="https://www.florentguilleux.fr/how-to-use-meta-tests-to-future-proof-your-business-logic?utm_source=shortrubynews&utm_medium=newsletter&utm_campaign=short-ruby-newsletter-edition-154" target="_blank" rel="noopener noreferrer nofollow">How to Use Meta-Tests to Future-Proof Your Business Logic</a></p><h4 class="heading" style="text-align:left;" id="how-t-os">How-TOs 📝</h4><p class="paragraph" style="text-align:left;">📝<span style="color:rgb(0, 0, 0);"> Piotr Chmolowski</span><span style="color:rgb(0, 0, 0);font-size:medium;"> published an article about </span><a class="link" href="https://ptrchm.com/posts/accept-crypto-payments-in-rails/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">How to Accept Crypto Payments in Rails</a></p><h4 class="heading" style="text-align:left;" id="related">Related ✍️</h4><p class="paragraph" style="text-align:left;">✍️ Joel Drapper published a new article about <a class="link" href="https://joel.drapper.me/p/omission-commission/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Bugs of Omission and Bugs of Commission</a></p><p class="paragraph" style="text-align:left;">✍️ Lucas Dohmen published a new article about <a class="link" href="https://lucas.dohmen.io/posts/2025/10/20/webfonts/?utm_source=shortruby&ref=shortruby.com" target="_blank" rel="noopener noreferrer nofollow">Optimizing Webfonts</a></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=e0edc824-142f-41fb-a75e-f27ac276ccb7&utm_medium=post_rss&utm_source=short_ruby_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

  </channel>
</rss>
