<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thoughtbot="https://thoughtbot.com/feeds/" xmlns:feedpress="https://feed.press/xmlns" xmlns:media="http://search.yahoo.com/mrss/" xmlns:podcast="https://podcastindex.org/namespace/1.0">
  <feedpress:locale>en</feedpress:locale>
  <link rel="hub" href="https://feedpress.superfeedr.com/"/>
  <title>Giant Robots Smashing Into Other Giant Robots</title>
  <subtitle>Written by thoughtbot, your expert partner for design and development.
</subtitle>
  <id>https://robots.thoughtbot.com/</id>
  <link href="https://thoughtbot.com/blog"/>
  <link href="https://feed.thoughtbot.com/" rel="self"/>
  <updated>2026-07-15T00:00:00+00:00</updated>
  <author>
    <name>thoughtbot</name>
  </author>
  <entry>
    <title>Upcase has retired, but the learning continues</title>
    <link rel="alternate" href="https://feed.thoughtbot.com/link/24077/17380449/upcase-has-retired-but-you-can-keep-learning-with-us"/>
    <author>
      <name>Moses Amama</name>
    </author>
    <id>https://thoughtbot.com/blog/upcase-has-retired-but-you-can-keep-learning-with-us</id>
    <published>2026-07-15T00:00:00+00:00</published>
    <updated>2026-07-14T08:11:23Z</updated>
    <content type="html"><![CDATA[<p>For more than a decade, Upcase was where thoughtbot taught Ruby on Rails. You’d work through a trail, get stuck, watch one of us solve the same problem, and come out a little sharper. Thousands of developers used it to take “junior” out of their title.</p>

<p>We don’t say that lightly. In 2018, we transitioned Upcase from a paid subscription product to a <a href="https://thoughtbot.com/blog/announcing-upcase-is-free">free platform</a>, opening the content to the community. Over time, we’ve continued to rethink how we share what we learn.</p>

<p>Today, we believe open platforms like our <a href="https://thoughtbot.com/blog">blog</a>, podcasts <a href="https://bikeshed.thoughtbot.com/">The Bike Shed</a> &amp; <a href="https://podcast.thoughtbot.com/">Giant Robots Smashing Into Other Giant Robots</a>, <a href="https://www.linkedin.com/company/thoughtbot-inc/events/">live streams</a> and <a href="https://www.youtube.com/@thoughtbot/streams">video channels</a> are better suited to keeping our teaching current, accessible, and connected to the pace of change in software development.</p>
<h2 id="where-to-learn-ruby-on-rails-now">
  
    Where to learn Ruby on Rails now
  
</h2>

<p>If you’re not sure where to start, start with the blog. It works through the real Rails decisions that don’t have a tidy answer in the docs. When you’re ready to go deeper, our books are free to read. <a href="https://thoughtbot.com/ruby-science/introduction.html">Ruby Science</a> is what we reach for when an app starts to sprawl, and <a href="https://books.thoughtbot.com/assets/testing-rails.pdf">Testing Rails</a> is how a lot of us learned to test. <a href="https://bikeshed.thoughtbot.com">The Bike Shed</a> carries Upcase’s conversational side forward every week, and <a href="https://thoughtbot.com/open-source">our open source gems</a> are the same ones we use on client work, out in the open for you to read.</p>
<h2 id="watch-us-build">
  
    Watch us build
  
</h2>

<p>More than anything, Upcase was video, and that content now lives on our <a href="https://www.youtube.com/@thoughtbot">YouTube channel</a>. You’ll find short clips to watch on a break and longer tutorials for when you want to go deeper on a topic.</p>

<p>The one to start with is <a href="https://thoughtbot.com/ai-in-focus-series">AI in Focus</a>, the closest thing to sitting beside a thoughtbot developer as they solve a real problem in real time. Every week, thoughtbot founder, Chad Pytel, and Development Lead, Louis Antonopoulos, explore AI coding in real time, how LLMs integrate into Rails applications and what it takes to turn AI ideas into production-ready software.</p>
<h2 id="thank-you">
  
    Thank you
  
</h2>

<p>To everyone who built, contributed to, or learned through Upcase, thank you. You’re what made it meaningful and your curiosity, feedback, and enthusiasm shaped it over the years.</p>

<p>We look forward to the next chapter in sharing what we learn, as we learn it - and we hope you’ll continue to join us on that journey.</p>

<aside class="related-articles"><h2>If you enjoyed this post, you might also like:</h2>
<ul>
<li><a href="https://thoughtbot.com/blog/klang-strongbox">Klang and Strongbox</a></li>
<li><a href="https://thoughtbot.com/blog/success-story-big-room-consulting">Success Story: Big Room Consulting</a></li>
<li><a href="https://thoughtbot.com/blog/heroku-wearing-suspenders">Heroku Wearing Suspenders</a></li>
</ul></aside>
<img src="https://feed.thoughtbot.com/link/24077/17380449.gif" height="1" width="1"/>]]></content>
    <summary>We've retired Upcase, but our commitment to sharing what we learn hasn't changed. Here's where you can continue learning with us through articles, videos, podcasts, and more.</summary>
    <thoughtbot:auto_social_share>true</thoughtbot:auto_social_share>
  </entry>
  <entry>
    <title>The Bike Shed Ep 506:  The Muppet Software Team</title>
    <link rel="alternate" href="https://feed.thoughtbot.com/link/24077/17380121/the-bike-shed-ep-506-the-muppet-software-team"/>
    <author>
      <name>Sally Hall and Aji Slater</name>
    </author>
    <id>https://thoughtbot.com/blog/the-bike-shed-ep-506-the-muppet-software-team</id>
    <published>2026-07-14T00:00:00+00:00</published>
    <updated>2026-07-14T14:27:13Z</updated>
    <content type="html"><![CDATA[This week’s episode is a radical one, let’s Muppet-cast a software development team!<img src="https://feed.thoughtbot.com/link/24077/17380121.gif" height="1" width="1"/>]]></content>
    <summary>This week’s episode is a radical one, let’s Muppet-cast a software development team!</summary>
    <thoughtbot:auto_social_share>false</thoughtbot:auto_social_share>
  </entry>
  <entry>
    <title>Migrating to native stack navigation, with a surprise from iOS 26</title>
    <link rel="alternate" href="https://feed.thoughtbot.com/link/24077/17379253/migrating-to-native-stack-navigation-with-a-surprise-from-ios-26"/>
    <author>
      <name>Jose Blanco</name>
    </author>
    <id>https://thoughtbot.com/blog/migrating-to-native-stack-navigation-with-a-surprise-from-ios-26</id>
    <published>2026-07-13T00:00:00+00:00</published>
    <updated>2026-07-10T08:27:10Z</updated>
    <content type="html"><![CDATA[<p>I have been working on an app that still sits on React Native 0.77 and the 
old architecture. Slowly, as I was getting a grip on the new architecture,
one of the first big refactors was related to the navigation.</p>

<p>We were using JavaScript stack navigators, so the plan was to move everything
over to native stack navigators. We migrated all of our JavaScript stack
navigators across to the native stack. Then I opened the app on a device running
the new iOS version and got a little surprise.</p>
<h2 id="liquid-glass">
  
    Liquid Glass
  
</h2>

<p>Because the native stack uses the real iOS navigation components under the hood,
the app suddenly picked up the new Liquid Glass styling from iOS 26. The app is
not ready for it. Nothing had been designed with that look in mind, and it
clashed with everything we had, especially the top left arrow back icon and the
logo in the middle.</p>

<p>The quick way to opt out is a single key in <code>Info.plist</code>:</p>
<div class="highlight"><pre class="highlight xml"><code><span class="nt">&lt;key&gt;</span>UIDesignRequiresCompatibility<span class="nt">&lt;/key&gt;</span>
<span class="nt">&lt;true/&gt;</span>
</code></pre></div>
<p>That tells iOS to keep rendering the app in the older compatibility style until
we are ready to embrace the new design properly.</p>
<h2 id="and-another-surprise">
  
    And another surprise
  
</h2>

<p><img src="https://images.thoughtbot.com/nj5cv5djeh2q1w2roc0vpqr4idlg_header_blue_clipped.png" alt="A not so rounded logo"></p>

<p>With Liquid Glass disabled, I thought I was done. Instead, our logo in the
navigation bar now looked clipped. The top and bottom were being cut off, and
it looked broken.</p>

<p>I spent a long time going in rounds on this one. I used Claude for ideas and,
being honest, the suggestions were not useful at all this time. Every answer
pushed me back towards a JavaScript based navigator, which was exactly the 
thing I had just spent time moving away from. After a lot of back and forth I
was no closer.</p>
<h2 id="sometimes-a-good-old-google-search-is-enough">
  
    Sometimes a good old Google search is enough
  
</h2>

<p>In the end, I found the answer in someone else’s blog post.</p>

<p><strong>The iOS navigation bar is exactly 44pt tall</strong>. Our logo in the header was 55pt.
Even with Liquid Glass disabled, the underlying iOS component is fixed at 44pt
and there is nothing we can do to change that. Anything taller than the bar
simply gets clipped.</p>

<p>I was quite confused about why we never had this issue? Before the migration,
our header was a custom JavaScript header, and on older iOS versions a title view
that was bigger than the bar just spilled over the edges and looked fine.
The platform tolerated it.</p>

<p><strong>We were never really allowed to use a 55pt logo</strong>. The old setup just happened
to put up with it. iOS 26, going through the real native bar, stopped being so
forgiving and clipped the logo the way it was probably always meant to.</p>
<h2 id="how-to-fix-it">
  
    How to fix it
  
</h2>

<p>The fix in the end was straightforward. We render a smaller logo for devices on
iOS 26 or higher and keep the normal logo for everything else, including older
iOS versions and Android. It is not glamorous, but it respects what the platform
actually allows rather than fighting it.</p>

<p>If you move from React Navigation’s JS stack navigator to native stack navigator
and your header looks off on newer iOS, check the height of whatever you are
putting in the bar. 44pt is the limit.</p>

<aside class="related-articles"><h2>If you enjoyed this post, you might also like:</h2>
<ul>
<li><a href="https://thoughtbot.com/blog/designing-menu-icons-for-android-devices">Designing Menu Icons for Android Devices</a></li>
<li><a href="https://thoughtbot.com/blog/towards-a-retina-web-follow-up">Towards a Retina Web: Follow-up</a></li>
<li><a href="https://thoughtbot.com/blog/designing-for-ios-taming-uibutton">Designing for iOS: Taming UIButton</a></li>
</ul></aside>
<img src="https://feed.thoughtbot.com/link/24077/17379253.gif" height="1" width="1"/>]]></content>
    <summary>We moved our React Native app from the JavaScript stack to the native stack and suddenly inherited Liquid Glass, and a clipped logo.</summary>
    <thoughtbot:auto_social_share>true</thoughtbot:auto_social_share>
  </entry>
  <entry>
    <title>Past and present thoughtbotters at LRUG this Monday</title>
    <link rel="alternate" href="https://feed.thoughtbot.com/link/24077/17375947/thoughtbot-talk-at-lrug-this-monday"/>
    <author>
      <name>Fritz Meissner</name>
    </author>
    <id>https://thoughtbot.com/blog/thoughtbot-talk-at-lrug-this-monday</id>
    <published>2026-07-10T00:00:00+00:00</published>
    <updated>2026-07-10T09:08:33Z</updated>
    <content type="html"><![CDATA[<p>The <a href="https://lrug.org/meetings/2026/july/">London Ruby User Group’s July meetup</a> is this Monday, 13 July at 6:00pm at GoCardless’s offices near Farringdon and Barbican tube stations.</p>

<p>Former-thoughtbotter Ismael Celis will talk about reactive command-oriented apps in Ruby, followed by me (Fritz Meissner) on fixing long-standing flakiness in Capybara tests, and how AI did and did not help.</p>

<p>There’s an introduction to my talk at <a href="https://thoughtbot.com/blog/what-it-took-to-use-this-overnight-ai-solution">this blog post</a>. At the meetup you can expect more detail on the flaky tests themselves and on the interaction with Claude Code that lead to the breakthrough.</p>

<p>Space is limited to 50 people, so <a href="https://lrug.org/meetings/2026/july/">register on the LRUG site</a> if you’d like to come. If you’re there, come and say hello.</p>

<aside class="related-articles"><h2>If you enjoyed this post, you might also like:</h2>
<ul>
<li><a href="https://thoughtbot.com/blog/more-upcoming-events">More Upcoming Events</a></li>
<li><a href="https://thoughtbot.com/blog/conference-videos">Conference videos</a></li>
<li><a href="https://thoughtbot.com/blog/getting-strong-now">Getting Strong Now</a></li>
</ul></aside>
<img src="https://feed.thoughtbot.com/link/24077/17375947.gif" height="1" width="1"/>]]></content>
    <summary>Come hear Ruby talks by Fritz Meissner and Ismael Celis at the London Ruby User Group meeting on Monday 13th July.</summary>
    <thoughtbot:auto_social_share>true</thoughtbot:auto_social_share>
  </entry>
</feed>
