Cover art for podcast The Bike Shed

The Bike Shed

368 EpisodesProduced by thoughtbotWebsite

On The Bike Shed, hosts Joël Quenneville and Stephanie Minn discuss development experiences and challenges at thoughtbot with Ruby, Rails, JavaScript, and whatever else is drawing their attention, admiration, or ire this week.

episodes iconAll Episodes

368: Sustainable Web Development

January 24th, 2023


Stephanie talks about hosting a "Soup Group"! Joël got nerd-sniped during the last episode and dove deeper into Maggie Appleton's "Tools for …

367: Value Objects

January 17th, 2023


Joël's been traveling. Stephanie's working on professional development. She's also keeping up a little bit more with Ruby news and community news in general and saw that Ruby 3.2 introduced a new class called data to …

366: Componentization and Branching Strategies

January 10th, 2023


Happy New Year! It's 2023 🎉 Joël and Stephanie chat about developer resolutions or things they'd like to do this year and then discuss …

365: Career Progression

December 13th, 2022


Joël has been thinking a lot recently about array indexing. Stephanie started volunteering at the Chicago Tooele Library, a non-profit community …

364: Constructive vs Predicative Data

December 6th, 2022


Stephanie and Joël attended RubyConf Mini, and both spoke there. They discuss takeaways and highlights from the conference.

The core idea for this episode is explained in this article: Constructive vs. Predicative Data

363: Deployments

November 22nd, 2022


Joël discovered Bardcore. Stephanie planned and executed an IRL meetup for folks in the WNB.rb virtual community group in Chicago and had a …

362: Prioritizing Learning

November 15th, 2022


This week, Steph and Joël discuss investment time and keeping track of things they want to learn.

How do you, dear listener, keep track of things …

361: Working Incrementally

November 8th, 2022


thoughtbotter Stephanie Minn joins The Bike Shed as co-host! 🎉

Joël and Stephanie talk about continuing on a rewrite and redesign of a legacy Rails app and working incrementally.

This episode is brought to you by

360: ActiveRecord Models

November 1st, 2022


Fellow thoughtboter Sarah Lima joins Joël to discuss an issue Sarah had when she was doing a code review recently: making HTTP requests in an ActiveRecord model. Her concern with that approach was that a class was …

359: Serializers

October 25th, 2022


Chris Toomey is back! (For an episode.) He talks about what he's been up to since handing off the reins to Joël. He's been playing around with something at Sagewell that he enjoys. At the core of it? Serializers.

358: Class Methods

October 18th, 2022


Inspired by a Slack thread, Joël invites fellow thoughtbotter Aji Slater on the show to talk about when you should use class methods and when you …

357: Notetaking For Developers

October 11th, 2022


Joël is joined by Amanda Beiner, a Senior Software Engineer at GitHub, who is known for her legendary well-organized notes. They talk about various types of notes: debugging, todos, mental stack, Zetelkasten/evergreen …

356: The Value of Specialized Vocabulary

September 27th, 2022


Guest and fellow thoughtbotter Stephanie Minn and Joël chat about how the idea of specialized vocabulary came up during a discussion of the Ruby …

355: Test Performance

September 20th, 2022


Guest Geoff Harcourt, CTO of CommonLit, joins Joël to talk about a thing that comes up with a lot with clients: the performance of their test suite. It's often a concern because with test suites, until it becomes a …

354: The History of Computing

September 13th, 2022


Why does the history of computing matter? Joël and Developer at thoughtbot Sara Jackson, ponder this and share some cool stories (and trivia!!) …

353: Mental Models

September 6th, 2022


Mental models are metaphors that help us understand complex problems we work on. They can be a simplified roadmap over an infinite area of complexity.

352: Case Expressions

August 30th, 2022


As developers, we care a lot about code quality. How do we know how good is good enough? When do we stop improving code? Alternatively, when working on code that's really bad, how much do you improve it before calling …

351: Learning in Public

August 23rd, 2022


It's Joël's first episode as host of The Bike Shed! 👋

Joël has fellow thoughtbotter Steve Polito join him to talk about the benefits and drawbacks …

350: 21 Bell Salute

August 16th, 2022


It's Steph and Chris' last show.

Steph found a game, and if you've been following the journey, all of the Test::Unit test files are now live in …

349: Unpopular Opinions

August 9th, 2022


Steph and Chris announce Joël Quenneville as the new host of the show! 🎉 Joël talks about his grand plans for where The Bike Shed is going to go from here. (Okay, maybe not grand plans...!)

Together, the group chats …

348: Breaking News

August 2nd, 2022


Steph and Chris share some big news about the future of The Bike Shed.

Steph shares an update about integrating with Knapsack Pro. Chris is excited for larger projects that will begin in the next few weeks. They answer …

347: Tracking Velocity

July 26th, 2022


Chris talks about a small toy app he maintains on the side and working with a project called capybara_table. Steph is getting ready for maternity leave and wonders how you track velocity and know if you're working …

346: Occasional Biscuits

July 19th, 2022


Natural disaster movies, anyone? It's what Steph's been into, and Chris has THOUGHTS on the drilling in Armageddon.

Additionally, a chat around …

345: Fire Drill

July 12th, 2022


Chris is getting ready to travel, and of course, Sagewell started the day with an incident, a situation, if you will...

Steph talks books perfect for vacations and feels sufficiently scarred regarding still working …

344: Spinner Armageddon

June 28th, 2022


Steph has an update and a question wrapped into one about the work that is being done to migrate the Test::Unit test over to RSpec.

Chris got to do something exciting this week using dry-monads. Success or failure?

343: Opt-In To Oversharing

June 21st, 2022


Chris is weathering through a slight lull, a holding period, where his team waits for new features to become available with some of the platforms …

342: Sky Icing

June 14th, 2022


Another toaster strudel debate?! Plus, the results are in for the most listened-to podcast in the RoR community! :: drum roll ::

Steph has a "Dear …

341: Fundamentals and Weird Stuff

June 7th, 2022


Steph and Chris are recording together! Like, in the same room, physically together.

Chris talks about slowly evolving the architecture in an app …

340: Solving People Problems with Rob Whittaker

May 31st, 2022


Steph is joined by a very special guest and fellow thoughtbotter, Rob Whittaker.

Rob shares how he became the Software Development Director for Launchpad II, thoughtbot's Europe, Middle East, and Africa team. They also …

339: What About Pictures?

May 24th, 2022


Steph has a baby update and thoughts on movies, plus a question for Chris related to migrating Test Unit tests to RSpec.

Chris watched a video from Google I/O where Chrome devs talked about a new feature called Page …

338: Meticulously Wrong

May 17th, 2022


Chris switched from Trello over to Linear for product management and talks about prioritizing backlogs.

Steph shares and discusses a tweet from Curtis Einsmann that super resonated with the work she's doing right now: …

337: Oh, Henry

May 10th, 2022


We've got a tricycle anniversary! 🥳 Will it be ruined by a cockroach?

Steph shares an update regarding some of the progress and discoveries that she's helped make with a client in regards to speeding up CI.

Chris is …

336: Million Dollar Password

May 3rd, 2022


Chris came up with a mnemonic device: Fn-Delete – for when he really wants to delete something and is also thinking about password complexity requirements, which leads to an exciting discussion around security theater.

335: Start Messy

April 26th, 2022


Steph has a question for Chris: When you have no idea how you're going to implement a feature, how do you write your first test?

Chris has thoughts about hybrid teams (remote/in-person) and masked inputs.

This …

334: Name That Bike

April 19th, 2022


Chris got a bike. Specifically, he bought a bike to use in a triathlon he signed up to participate in. Now he needs to name the bike, and speaking of naming things, a more technical topic that he talks about is the …

333: Tapas

April 12th, 2022


Being pregnant is hard, but this tapas episode is good! Steph discovered and used a #yelling Slack channel and attended a remote magic show. Chris touches on TypeScript design decisions and edge cases.

Then they …

332: Ludicrous Speed

April 5th, 2022


Chris is back from vacation and gives hiring and onboarding updates.

Steph has an update about the CI slowdown and scaling CI.

They tackle a listener question regarding having some fear around potential merge …

331: Git Down

March 22nd, 2022


Steph celebrates Utah's adoption day and Daylight Savings Time and troubleshoots a CI build time that had suddenly spiked for a client project using TeamCity. She also shares a minor update regarding the work that …

330: Bikeshed Baby

March 15th, 2022


BIG NEWS! Steph's expecting a baby boy! 🍼🎉

Aaaand unfortunately, the rest of the show isn't nearly as exciting. Chris talks about admin pagination using Pagy, and Steph wants to delete some code and is nervous that …

329: Fire Mode

March 8th, 2022


Steph is excited to be headed on a retreat with her mom in the mountains, but before that, she details how she helped troubleshoot a production issue with her team and appreciated their process. She's also looking into …

328: Terrible Simplicity

March 1st, 2022


Chris is helping with efforts to introduce security, practices, and policies at Sagewell. Right now, they are refining the usage of 1Password to …

327: Estimate Crafting

February 22nd, 2022


Steph joins Chris in trying new things! For her, it's a new email client – the Newton email client – because she really wants to love her inbox. She also talks about implementing a suggestion from Chris on improving CI …

326: Dongle Life

February 15th, 2022


Chris is making hiring progress and loves asdf and M1 laptops. Steph is anticipating the arrival of one dongle to rule them all and talks about …

325: Pranting

February 8th, 2022


Steph is super excited about changing her schedule to dedicate a full day to focus on being a great team lead. Chris talks about his continued …

324: Coding Time!

February 1st, 2022


Chris updates us on his new window manager of choice, Moom, and tells us what's good with it. He's also giving yet another task manager a go: OmniFocus. (Sorry Things.) Steph talks about defining test classes in RSpec …

323: Doing Things

January 25th, 2022


Steph talks about winter storms and thoughts on name pronunciation features. Chris talks about writing a query to add a new display of data in an admin panel and making a guest appearance on the Svelte Radio Podcast.

322: Toxic Traits

January 18th, 2022


Happy New Year (for real)! Chris and Steph both took some end-of-year time off to rest and recharge.

Steph talks about some books she enjoyed, recipes she tried, and trail-walking adventures with her dog, Utah. Chris' …

321: Leaving Breadcrumbs

January 11th, 2022


Steph tells a cute story about escape artist huskies, and on a technical note, shares a journey in regards to class variables and modules inheritance.

320: Remember The Fun: 2021 Recap

December 21st, 2021


Steph and Chris recap their favorite things of 2019 and 2020 and share their 2021 list. Happy Holidays, y'all!


  • Feature flags and calm …

319: Wins & Losses

December 14th, 2021


Steph started a new project and shares details about the new tools she's using, including working on a remote dev environment. Chris shares a journey …

318: Successful Skills with Edward Loveall

December 7th, 2021


Fellow thoughtboter Edward Loveall joins Steph to cohost and talk about alternative frontends and his own that he created: an alternative frontend to Medium, learning about what it's like to be a …

317: Burn The Ships!

November 30th, 2021


Steph gives an update about RSpec focus and how she often forgets to remove the focus feature from tests. She figured out two solutions: one using …

316: Constrain and Refactor

November 16th, 2021


Chris finally got his new computer! 🎉 🎉 🎉 He gives his initial review. He's also super excited that GitHub announced a beta for pull requests …

315: Emotions Are A Pendulum

November 9th, 2021


Steph talks about starting a new project and identifying "focused" tests while Chris shares his latest strategy for managing flaky tests. They also ponder the squishy "it depends" side of software and respond to a …

314: Communication, Testing, and Accountability

October 26th, 2021


Chris regains several of his developer merit badges and embarks on a perilous CSRF (Cross-Site Request Forgery) adventure. Steph shares highlights from Plucky, a management training course, including ways we can "click" …

313: Forty-Seven Percent

October 19th, 2021


Steph talks about binging a few Things Worth Learning podcast episodes and particularly enjoyed an episode that featured one of thoughtbot's design …

312: Spooky Stories

October 12th, 2021


Chris evaluates the pros and cons between using Sidekiq or Active Job with Sidekiq. He sees exceptions everywhere.

Steph talks about an SSL error …

311: Marketing Matters

October 5th, 2021


Longtime listener and friend of the show, Gio Lodi, released a book y'all should check out and Chris and Steph ruminate on a listener question about …

310: Schedule Shut Down, Complete

September 28th, 2021


Chris talks feature flags featuring Flipper (Say that 3x fast!), and Steph talks reducing stress by a) having a work shutdown ritual and b) the fact …

309: Naming the Change

September 21st, 2021


Steph talks about a new GitHub feature and Twitter account (@RubyCards) she's really excited about and Chris talks about his new job as a CTO of a …

308: That’s Picante

September 14th, 2021


You know what really grinds Chris' gears? (Spoiler Alert: It's Single-Page Applications.)

Steph needs some consulting help. So much to do, so little …

307: Walking Contradictions

September 7th, 2021


On this episode, Chris talks about testing external services and dissects a tweet on refinements for Result. Steph talks about thoughbot's recent …

306: If You Want To Go Far, Go Together

August 31st, 2021


In this episode, Steph and Chris talk about things they've changed their minds about over the course of their careers as software developers. Steph talks about as it turns out, arm chair rests are good, feature flags …

305: Burnout & Bugs

August 17th, 2021


This week Chris talks about Bifunctor optics and introduces an app he's been liking recently called CleanShot X, which is a replacement for the built-in screenshot utilities on OSX.

Steph talks about her experience …

304: MEGA Crossover Episode (The Bike Shed x Rails with Jason x Remote Ruby x Ruby on Rails Podcast)

August 11th, 2021


This is the sweeps week episode, the epic crossover episode, the mega episode! We have a very special episode as Chris, and Steph teamed up with the hosts of three other podcasts to bring you one giant, mega Ruby …

303: Dear Mr. Grumpy Goose

August 3rd, 2021


Chris gives a DB sessions update and talks bifunctors & command objects. Steph shares the coolness of a gem she's been using called after_party, …

302: Observability with Charity Majors

July 27th, 2021


Tune in as Co-founder and CTO of Honeycomb, an observability platform, Charity Majors joins Chris to drop some knowlege bombs such as:

  • Thinking of …

301: Ants in the Cookie Store

July 20th, 2021


What do you get when you mix a worm and a hammerhead shark? Also ants. Steph made some cool new discoveries in bug-land. She also talks about deploys …

300: Mozzarella Sticks & Knowledge Silos

July 13th, 2021


The big "Three Oh Oh!" What a milestone for this podcast! Aside from celebrating that the show has made it this far, Chris gives some followup on …

299: Is Agile Over?

July 6th, 2021


Let's talk about Agile! What is it, what do we like, we do we not like?

In this episode, Steph and Chris discuss:

  • Broadly, are they fans?
  • What …

298: Jawsification

June 29th, 2021


Chris gives some small updates on working with Svelte. He really likes Svelte so far. Svelte's great. Modals are complicated. He also talks about using a little JavaScript library, called Quicklink. Steph talks about …

297: We’re Making A Pixar Movie!

June 22nd, 2021


Chris gives the deets on that new new – (he joined a startup!) and laments about the back button being so complicated. Steph talks about extracting an untrustworthy service and likens the scenario to making a Pixar …

296: Speedy Performance with Nate Berkopec

June 15th, 2021


Nate Berkopec is the author of the Complete Guide to Rails Performance, the creator of the Rails Performance Workshop, and the co-maintainer of Puma. He talks with Steph about being known as "The Rails Speed Guy," and …

295: To the Left, to the Left

June 7th, 2021


After the last episode where database switching was discussed, a number of listeners reached out with thoughts. In particular, one listener gave a …

294: Perfect Duplication

May 25th, 2021


On this week's episode, Steph and Chris respond to a listener question about how to know if we're improving as developers. They discuss the heuristics they think about when it comes to improving, how they've helped the …

293: Sportstaphors

May 18th, 2021


On this week's episode, Chris and Steph share a speedy step to restart your rails server and chat about accessibility improvements and favorite a11y …

292: Debugging with Joël Quenneville

May 11th, 2021


On this week's episode, Steph and Chris are joined by fellow thoughtbotter, Joël Quenneville, to discuss all things debugging. Joël is helping publish a weekly debugging blog series and in this conversation they discuss …

291: All Things Inertia.js with Jonathan Reinink

May 4th, 2021


This week Steph's taking a quick break, but while she's off, Chris is joined by a special guest - Jonathan Reinink. Jonathan is the creator of Inertia.js. Inertia.js lets you quickly build modern single-page React, Vue …

290: Can You See My Secrets?

April 27th, 2021


On this week's episode, Chris and Steph discuss testing webhooks, the challenges in replicating third-party data, and troubleshooting unexpected side effects. They also respond to a listener question about secrets …

289: Have You Ever Ridden a Horse?

April 20th, 2021


On this week's episode, Steph and Chris tackle a pair of questions -- the first dealing with how closely we might want to map an API to the underlying database schema, and the second dealing with back of the envelope …

288: 10x Puppy

April 13th, 2021


On this week's episode, Chris and Steph discuss migrating a polymorphic relationship over to UUIDs and balancing trade-offs between data integrity vs …

287: Turn it up to Eleven

March 30th, 2021


On this week's episode, Steph shares a recent performance improvement, a Postgres delight, and testing concurrency in RSpec. Chris revisits an earlier theme of "Good Idea, Bad Idea?" as he explores ways to speed up …

286: Time After Time

March 23rd, 2021


On this week's episode, Chris shares a rare airing of grievances regarding the importance of secure, encrypted websites and Steph shares a tale of time zone troubles and testing.

This episode is brought to you by

285: Tell a Cohesive, Testable Story

March 16th, 2021


On this week's episode, Steph and Chris tackle a listener question around the world of service objects. Where, really, should we be putting our …

284: Lovely, Wonderful Spam

March 9th, 2021


On this week's episode Chris and Steph chat about upgrading to Rails 6, intercepting emails, and play a few rounds of Software Terminology Trivia. …

283: Who's The User?

March 2nd, 2021


On this week's episode Steph and Chris discuss a listener question around managing content within an application, weighing options like an integrated CMS, headless CMS provides, proxying the content, and supporting …

282: What is Normal?

February 23rd, 2021


On this week's episode, Chris adds Dead Man's Snitch to a personal project and considers "what is the app doing at runtime?" as he touches on the importance of creating observable systems. Steph shares analyzing a …

281: Finding That Middle Ground

February 16th, 2021


On this week's episode, Steph and Chris tackle a listener question around switching from mostly-developing, to mostly-communicating and the tactics they've used to balance these facets of their work. They also discuss …

280: Stable New New

February 9th, 2021


On this week's episode Chris and Steph discuss a new tmux feature and wvim, a script that streamlines shell command edits. They also discuss the value of taking a sabbatical and protecting downtime. Steph shares some …

279: Seeking Calm

February 2nd, 2021


On this week's episode Steph and Chris discuss some of characteristics and behaviors they've observed in high-performing teams, touching on pull …

278: Beliefs in the Firmware

January 26th, 2021


In this week's episode, Steph and Chris discuss the popular testing themes and questions that emerged during the RSpec training course, reflecting on …

277: Making Communication Easier

January 19th, 2021


In this week's episode, Steph and Chris discuss some of their methods for helping out reviewers of their pull requests and keeping code review moving …

276: Ride-Along Files

January 12th, 2021


On this week's episode, Chris shares a new favorite tool for querying JSON and Steph revisits a previous deployment issue. They also dive into the …

275: In Search of An Acronym

January 5th, 2021


On this week's episode, Steph and Chris revisit their discussion about testing rack rewrite redirect logic, mystery guests, DNS configuration, and trying very hard to not be too dogmatic. Steph describes her recent work …

274: Top 10 Review for 2020

December 29th, 2020


On this week's episode, Chris and Steph reflect on their top themes and technical picks for 2020.

This episode is brought to you by:

273: Revisiting 2019, A Top 10 Review

December 22nd, 2020


On this week's episode, Steph and Chris begin wrapping up 2020 with a review of their 2019 top 10 list. They share what's changed, what's stayed the same, and what they'd like to see more of in the coming year.

This …

272: Hacking the Gibson

December 15th, 2020


In this week's episode, Chris undertakes long-running background jobs that are performing duplicate work and adding significant load on the database. …

271: Is That Your Final Answer?

December 8th, 2020


On this week's episode, Chris describes his continued explorations with Svelte specifically bringing TypeScript into the mix. Steph discusses the first cohort for the RSpec training and some related testing questions …

270: Both Nothing and Deeply Special

December 1st, 2020


In this week's episode, Chris and Steph discuss redirecting requests for various hostnames to one canonical host, creating student personas to improve educational content, and walking away from failing tests. They also …

269: Things are Knowable (Gary Bernhardt)

November 17th, 2020


Steph's taking a quick break this week, but while she's away, Chris is joined by special guest Gary Bernhardt. Gary is the creator of Destroy All Software screencasts as well as his more recent venture, Execute Program. …

268: Getting Your First-Through-N Jobs

November 10th, 2020


On this week's episode, Steph discusses the value of conducting student research when creating course content and Chris revisits a recent architecture decision to use Svelt and Inertia. They also explore the challenges …

267: Shiny New Things

November 3rd, 2020


On this week's episode, Steph describes her unique new project where they're building and presenting a training course around RSpec, testing, and TDD specific to an organization's codebase. Chris then runs some …

266: Spring is My Least Favorite Season

October 27th, 2020


On this week's episode, Chris and Steph share mixed-feelings about Spring preloader and how to use Spring just for tests. They also dive into …

265: There Are No Free Lunches

October 20th, 2020


On this week's episode, Steph and Chris chat about database transactions and job queues, building static sites with GatsbyJS and NetlifyCMS, the performance impacts of front end frameworks and static content, and lastly …

264: How to Win Friends and Influence Processes

October 13th, 2020


On this week's episode Steph and Chris discuss the ins and outs of joining teams, building trust, and working together to improve processes and communication. They also touch on some lesser used features of bundler, and …

263: Keeping The Night Brain At Bay (Dave Rupert)

October 6th, 2020


Steph's taking a quick break this week, but in her absence, Chris is joined by Dave Rupert. Dave is the lead developer at Paravel, co-host of the Shop Talk Show podcast, creator of The Accessibility Project, and an …

262: Good Idea, Terrible Idea?

September 29th, 2020


On this week's episode, Chris introduces a new segment called "Good Idea, Terrible Idea?" as he considers introducing a read-only mode to avoid …

261: A Jenga Tower of Lets and Context

September 22nd, 2020


On this week's episode, Steph and Chris tackle a listener question around composition over inheritance, especially in the context of Rails which …

260: N+1s For Days

September 15th, 2020


On this week's episode, Chris shares a tale of performance improvements and a recent discussion about replacing a REST API with GraphQL. Steph dives …

259: That's Not How Numbers Work

September 8th, 2020


On this week's episode, Steph and Chris tackle the thorny topic of 10X engineers. Do we think they really exist? What characteristics make an individual more effective, and more importantly, what can they do for a team?

258: Digital Gardeners

September 1st, 2020


On this week's episode, Steph and Chris discuss a git-blame feature that supports bypassing less helpful commits. They also revisit a discussion …

257: How Late On a Friday Can You Deploy?

August 18th, 2020


On this week's episode, Steph & Chris take a deep dive into all things technical debt. How do you know when your code has reached "good enough"? …

256: Rational Pessimism

August 11th, 2020


On this week's episode, Chris shares his recent adventures of working with a team that prioritizes async-first communication and Steph revisits a previous discussion around the use of web sockets and optimistic user …

255: Aiming for 'Capable'

August 4th, 2020


On this week's episode, Steph and Chris chat about the relatively new Rails view_component library from GitHub, Steph talks about her work with Storybook as part of extracting and defining a design system, and they chat …

254: Listener Mailbag Roundup Rodeo

July 28th, 2020


On this week's episode, Steph celebrates passing an important test and discovers an API that returns different data than it's provided while Chris asks the important bikeshed question "What is the proper maximum line …

253: Find Yourself Through The Art of Podcast

July 21st, 2020


On this week's episode, Steph and Chris have a brief chat about Snowpack, a new and ultra-speedy bundler in the front-end world, and revisit a …

252: I'm a Designer Now

July 14th, 2020


On this week's episode, Steph and Chris discuss leveraging the Unix utility sed to search files and remove unnecessary test setup, using Vim's Arglist to create a to-do list for file edits, and budgeting time for fancy …

251: Absent-Minded Whistling

July 7th, 2020


On this week's episode, Steph and Chris discuss using JSONB to store survey responses and the differences between JSON and JSONB, using (or not using!) exceptions in Ruby and the fail keyword, the pros and cons of …

250: To Infinity and Beyond

June 30th, 2020


On this week's episode, Chris and Steph discuss the importance of using inclusive language, branching into new branch names, and strategies that …

249: What Would You Say You Do Here?

June 23rd, 2020


On this week's episode, Steph and Chris trade some consulting and everyone comes out a winner. Steph talks about a win and a loss on the battlefield …

248: Here Be Dragons

June 16th, 2020


On this week's episode, Steph shares a keyboard confession and interest in migrating to a split keyboard layout. Chris dives into creating static error pages that are independent of the app while still leveraging the …

247: Acronyms By Moonlight

June 9th, 2020


On this week's episode, Steph and Chris discuss potential approaches to a complex client-side workflow, Chris shares the highs and lows of his recent adventures revising the caching in a REST API, Steph shares an Ember …

246: A True Movement (Pariss Athena)

June 2nd, 2020


We are pausing our normal tech-talk this week in support of the ongoing protests and to re-share the #BlackTechTwitter episode with Pariss Athena from our sister podcast, Giant Robots.

During the past week, millions of …

245: Developer Therapy (German Velasco)

May 27th, 2020


On this week's episode, Steph is joined by thoughtbotter German Velasco. German and Steph chat about remote work and the rewards and challenges of …

244: Existential JavaScript

May 19th, 2020


On this week's episode, Steph troubleshoots a mysterious Ember test failure that can't find a visible element, and Chris recounts an exciting three-act adventure that spans N+1 queries, caching, and SQL window …

243: I'm Not a Couch Worker

May 12th, 2020


On this week's episode, Chris shares his recent explorations of railway oriented programming (hint: not what you think!) while doing his best to avoid words like "monad" and "functor" (he does not succeed in this …

242: As Few Consonants as Possible

May 5th, 2020


On this week’s episode, Chris and Steph share their excitement for Roam Research and formatting Ruby with Prettier Ruby. They also discuss writing test coverage for an important GDPR process, embracing async …

241: What If We Just Put a Phone Number?

April 28th, 2020


On this week's episode Steph and Chris dig into MVP thinking and asking how we can write as little code as possible before finding out if any user will actually want the thing we're building.

They also tackle a …

240: A Framework in Motion Tends to Stay in Motion

April 21st, 2020


On this week's episode, Chris and Steph discuss troubleshooting a race condition, trusting your intuition and pessimistic locks. They also touch briefly on TailWind CSS before diving deep into first impressions of …

239: Admins All the Way Down

April 7th, 2020


On this week's episode, Steph and Chris discuss what it really means to make a project "open source". Is it just about making the code publicly …

238: All the Single Quotes

March 31st, 2020


In this week's episode, Chris shares details about his new greenfield project, implementing static pages with high voltage, opting for just-in-time …

237: I Love The Squiggles

March 17th, 2020


On this week's episode, Steph and Chris discuss the pros and cons of memoization, Chris revisits the discussion around the value of react snapshot tests as well as his continued explorations with Inertia.js while Steph …

236: What's GNU With You?

March 10th, 2020


On this week's episode, Chris and Steph discuss recent challenges associated with upgrading React Router and uploading files to Amazon S3. Steph also shares her latest reading adventure in cybersecurity and Chris …

235: Take a Deep Breath

March 3rd, 2020


On this week's episode, Steph and Chris dig into their shared love of refactoring. How do they think about it, have they ever reverted a refactor, thoughts on deferred refactoring, and more.

They also discuss some …

234: No More Weird Stuff

February 25th, 2020


On this week's episode, Chris and Steph respond to a listener question about the complex tradeoffs between craft, preferences, and business needs. They also revisit Steph's recent work with mirage factories, Chris's …

233: Software Development in Ancient Rome (Joël Quenneville)

February 18th, 2020


On this week's episode, Steph is joined by Joël Quenneville. It's the season for CFPs (call for proposals) and Joël shares insights about his past conference talk submissions, both the accepted and rejected. They also …

232: I'm Not Allowed to Play With Other Shells

February 11th, 2020


On this week's episode, Chris and Steph celebrate the new Bike Shed website and logo!

Steph finds a new way to optimize her keyboard happiness and Chris dabbles with Zsh auto-suggestions. They also explore the team …

231: Fun and Useful

February 4th, 2020


On this week's episode, Steph shares more of her Ember adventures, specifically sharing some of her work with the Mirage API mocking and prototyping library, and her search for factories and more ergonomic data in tests.

230: The Broken Road

January 28th, 2020


On this week's episode, Chris and Steph revisit the long-lived feature branch Chris has been working on and chat about adventures with Yalc. They also dive into the common questions and concerns associated with coding …

229: Nothing but Positive Fire

January 21st, 2020


On this week's episode, Steph and Chris catch up in their first recording of 2020. They discuss git workflows and the surprisingly strong opinions often associated with them, testing at all levels of your application, …

228: Friends and Food (George Brocklehurst)

January 14th, 2020


On this week's episode, Steph is joined by George Brocklehurst, a Development Director in the NYC thoughtbot office. Steph and George chat about the …

227: Hacks and Cheats

January 7th, 2020


On this week's episode, Chris and Steph discuss their recent holiday hackathon efforts building a game in Elm. They discuss their experiences with …

226: Bespoke Nonsense

December 31st, 2019


On this week's episode, in celebration of the new year, Thom shares the 2019 blooper reel! Words are hard and here's the audio to prove it. Listen to all of the silly mishaps, goofs, and general nonsense captured in …

225: Pepper in Some Security

December 10th, 2019


On this week's episode, Steph gets Chris to share his biggest developer regrets over the years. They also revisit a favorite topic of estimation and story points, and round out the conversation with some details from …

224: The One Manhattan Rule

December 3rd, 2019


On this week's episode, Chris catches us up on his latest keyboard adventures and Steph shares her first impression of working with Ember.

They also dive into Chris's experience triaging errors Sentry, their love for …

223: Terrible and Easy

November 26th, 2019


On this week's episode, Chris and Steph discuss identifying refactoring opportunities by highlighting overly coupled code and Chris announces that he has advanced his vim setup into the 21st century by making the switch …

222: That Eureka Moment

November 12th, 2019


On this week's episode, Steph and Chris dive into the world of crafting pull requests for optimal code review, as well as the flip side of providing …

221: An Informed Opinion

November 5th, 2019


On this week's episode, Chris and Steph catch up on recent client adventures, revisit their feelings on using let in rspec, and spend a bit of time outside their respective comfort zones. There's also some talk about …

220: Adequately Fun

October 29th, 2019


On this week's episode, Chris and Steph chat about their new client projects, VimScript, and ways to automate refreshing materialized views in tests. They also play the game Overrated/Underrated, created by Tyler Owen, …

219: Seeking That Middle Option

October 22nd, 2019


On this week's episode, Steph catches us up on her ever-growing collection of mechanical keyboards, Chris talks about his recent purchase of an apple …

218: Finesse in Quitting (Brittany Martin)

October 15th, 2019


On this week's episode, Steph is joined by Brittany Martin, an avid Rubyist and the host of the Ruby on Rails Podcast. They discuss Brittany's …

217: A Vote For Reasonableness

October 8th, 2019


On this week's episode, Steph shares an update on her mechanical keyboard adventures and provides a summary for the Ruby pipeline operator being reverted. Chris gets Steph's opinion on a possible improvement around …

216: I'm Not the Best Criminal

October 1st, 2019


On this week's episode, Steph recounts an issue with an email client that lowercases URLs and Chris ponders the art of logging and using structured logs. They also highlight a plugin that improves TypeScript support in …

215: Start With People

September 24th, 2019


On this week's episode, Steph returns from vacation and Chris makes some noise about a fantastic new button. They discuss Steph's continued adventures in search of the perfect mechanical keyboard and then dig into two …

214: Have You Tried Refreshing the Page?

September 17th, 2019


On this week's episode, Matt Sumner guest stars to discuss his recent adventures on a project that uses React, TypeScript and GraphQL. Along the way, …

213: Admins Matter Too

September 10th, 2019


On this week's episode, Steph discusses a mini design sprint she led to help validate an internal admin tool while Chris muses on the merits of net …

212: Award Winning Sheds

September 4th, 2019


On this week's episode, Steph and Chris share the news that The Bike Shed won the Best Dev Podcast on the Hackernoon Noonies awards! After a bit of celebration, they get back to their normal adventures with a discussion …

211: I'm Not a Lawyer, But...

August 27th, 2019


On this week's episode, Chris and Steph discuss their preferred strategy when building an admin portal (spoiler: it's not using a client-side …

210: Stop Trying to Make Fetch Happen

August 20th, 2019


On this week's episode, Steph and Chris discuss mechanical keyboards, combating error fatigue, the joy of admin features and respond to two listener questions about typed vs dynamic languages and various ways to "speed …

209: We Will Never Know Enough (Michael Chan)

August 13th, 2019


On this week's episode Chris is joined by Michael Chan aka @chantastic, host of the React Podcast and prolific maker and sharer throughout the …

208: Goldilocks and the Three Monitors

August 6th, 2019


On this week's episode, Chris and Steph weigh-in on curved monitors, discuss how pairing improves productivity and team morale, and respond to two …

207: Very-Bad, Or Just Normal-Bad?

July 30th, 2019


On this week's episode, Steph and Chris discuss a handful of utilities that help with their workflows and GitHub, and then dive into a handful of …

206: No-One Wants to be the Canary

July 23rd, 2019


On this week's episode, Steph and Chris discuss working with Django, Angular, and explore the new features released in Ruby 2.7.0-preview1! They also …

205: Won't Somebody Think of The Jokes (Aaron Patterson)

July 9th, 2019


On this week's episode, Chris is joined in a live recording from RailsConf by the one and only Aaron Patterson. They discuss Aaron's many RailsConf keynotes, his recent work on Rails view rendering and his …

204: I Don't Like Rest

July 2nd, 2019


In this week's episode, Steph and Chris discuss ways to unplug and protect personal downtime, RESTful sorting, altering production data within a …

203: A Blessed Monkeypatch (Eileen M. Uchitelle)

June 25th, 2019


On this week's episode, we revisit RailsConf 2019 for another live recording, this time with Eileen M. Uchitelle, GitHubber and rails core team member. Eileen joins Chris to discuss her RailsConf talk on how GitHub …

202: I Left it All on The Dance Floor

June 18th, 2019


In this week's episode, Chris and Steph discuss how working with typed-languages influences their work with dynamic languages. They also chat about the benefits of pair programming, tracking performance events using …

201: Artisanally Indented Code (Kevin Deisz)

June 11th, 2019


On this week's episode, Chris is joined by Kevin Deisz, CTO of CultureHQ, live from RailsConf. They discuss Kevin's RailsConf talk on preevalution in …

200: FOMO for Hallway Track (200th Episode!)

May 29th, 2019


On this very special Bike Shed, Steph and Chris celebrate reaching the 200th episode. They discuss the origins of the show and thank some of the …

199: Pave That Path

May 21st, 2019


On this week's episode, Steph and Chris talk about PR sizing, load testing (the weird way), and ponder the merits and pitfalls of personal style in code. They also discuss Hertz suing Accenture for undelivered software …

198: In Terms of Tradeoffs (Glenn Vanderburg)

May 14th, 2019


On this week's episode, Chris is joined by Glenn Vanderburg, VP of Engineering at, live from RailsConf. They discuss Glenn's RailsConf talk, "The 30-Month Migration", covering distributed data models, …

197: Don't Go Chasing Waterfalls

May 7th, 2019


Steph and Chris discuss Redux, integration testing strategies, scoping data for React components, and take a question from a listener about improving process and reducing bugs in a complex service-oriented system with a …

196: I Can Be Wrong on the Internet

April 30th, 2019


On this week's episode, Chris welcomes Steph as the new co-host of The Bike Shed! Chris and Steph discuss their experiences using React, TypeScript, …

195: WebAssembly & WASI (Lin Clark & Till Schneidereit)

April 19th, 2019


On this week's episode, Chris is joined by Lin Clark and Till Schneidereit of Mozilla to discuss all things WebAssembly. Lin and Till are helping to lead the development and advocacy around WebAssembly and in this …

194: My PGP Shame

April 12th, 2019


On this week's episode, Chris is joined by Mike Burns, developer in our New York studio, to discuss the ins and outs of application security. Mike recently added a comprehensive Application Security Guide to the

193: A Thing I Know Almost Nothing About

April 5th, 2019


On this week's episode, Chris is joined by Edward Loveall, former thoughtbot design apprentice and now thoughtbot developer. After a quick chat about Edward's thoughtbot origin story, podcasts, and DNS, they dig into …

192: I Don't Want to Think That Hard

March 29th, 2019


On this week's episode, Chris is joined by Sid Raval, developer in our New York studio. Chris and Sid chat about functional programming, strong types, and accessibility. Along the way they touch on TypeScript, Haskell, …

191: Open Source is Created By Humans (Devon Zuegel)

March 22nd, 2019


Chris is joined by Devon Zuegel who recently joined GitHub in the new Open Source Product Manager role. Devon and Chris discuss the complexities …

190: Going Steady With a Platform

March 15th, 2019


On this week's episode, Chris is joined by Alex Sullivan, mobile developer in our Boston office. Alex takes Chris on a tour of the mobile landscape …

189: It's Gonna Work, Definitely, No Problems Whatsoever

March 1st, 2019


On this week's episode, Chris is joined by Steph Viccari to chat about Steph's recent experience working on the Hubspot API ruby wrapper as a client project. They discuss strategies for testing third-party APIs, …

188: A Function by Any Other Name

February 22nd, 2019


On this week's episode, Chris is joined by German Velasco for a conversation
that fully lives up to the name of the show with plenty of opinions and

187: Convincing People Not to Build Software

February 15th, 2019


On this week's episode, Chris is joined by Matt Sumner, development director in our Boston Studio. Chris & Matt start with a quick update on Matt's crypto adventures, and then transition to the core of the …

186: Let's Duplicate Stuff

February 1st, 2019


On this week's episode, Chris is joined by Daniel Colson, developer in our New York studio and current maintainer of all things FactoryBot. Chris …

185: The Transactional Fallacy (Avdi Grimm)

January 25th, 2019


On this week's episode, Chris is joined by Ruby Hero Avdi Grimm. They discuss Avdi's history of guiding the Ruby and broader programming communities, his thoughts about where we're at with object-oriented programming, …

184: Fun, Interesting, and I Wouldn't Recommend It

January 18th, 2019


On this week's episode, Chris is joined by Eebs Kobeissi, a developer in our Boston studio, for a discussion encompassing the front end, back end, and everything in between. They start by discussing Eebs' recent work …

183: Former Robots Smashing Into Other Giant Robots (Ben Orenstein)

January 11th, 2019


On this episode of the Bike Shed, Chris is joined by former thoughtbotter Ben Orenstein. Ben & team are currently feverishly working towards launching, an app for remote pair programming. The conversation …

182: What's it in the Service Of?

January 4th, 2019


Chris is joined by Eric Bailey, thoughtbot designer and champion for all things accessibility on the web. Chris & Eric chat about how Eric approaches accessibility and works to include it throughout the design …

181: Strong Types and a Functional Flair

December 14th, 2018


On this episode of the Bike Shed, Chris is joined by thoughtbot CTO Joe Ferris. Chris & Joe start by talking about all things data. More and more we're building applications that need to manage medium to large data …

180: A Citizen of the Internet (John Resig)

December 7th, 2018


On this episode of the Bike Shed, we're thrilled to welcome special guest John Resig, creator of jQuery and front-end architect at Khan Academy. The conversation begins with a discussion around John's work on jQuery, …

179: We CAN Just Use a Form!

November 30th, 2018


On this episode of the Bike Shed, Matt Sumner returns to chat with Chris about their recent adventures. They start by discussing Matt's ongoing work building an open source Ethereum implementation in Elixir and the joys …

178: Friday is For Spikes

November 16th, 2018


On this episode of the Bike Shed Chris is joined by Derek Prior, former
thoughtbotter and previous host of this very podcast. Derek has recently moved

177: Tricking Computers Into Doing Things

November 9th, 2018


On this episode of the Bike Shed, Chris is joined by Christina Entcheva, developer from thoughtbot's New York studio who has been a product manager and designer previously in her career, but has since settled in to her …

176: The Machines Will Learn

November 2nd, 2018


On this episode of the Bike Shed Chris is joined by George Brocklehurst, development director in thoughtbot's New York studio. The conversation starts with a discussion around progressive enhancement and the state of …

175: Tell Me When It's Real

October 26th, 2018


On this episode of the Bike Shed, Chris is joined by Josh Clayton, thoughtbot's managing director in our Boston studio. Chris and Josh spend the episode discussing the various patterns and trends they see in the world …

174: I've Watched a Lot of Vim Courses

October 18th, 2018


In this special crossover episode, Chris is joined by Chad Pytel, Co-founder & CEO of thoughtbot and host of Giant Robots Smashing Into Other Giant Robots podcast, to discuss the content, history, and the process of …

173: A Combinatoric Explosion of Nulls

October 12th, 2018


Joël Quenneville joins Chris to discuss Elm, the strongly typed functional programming language for writing reliable client side web apps. They discuss recent changes from the 0.19 release including reduced bundle size …

172: What I Believe About Software

October 5th, 2018


Steph Viccari joins Chris for a conversation starting with a discussion of some deployment and orchestration issues Chris was helping out with, …

171: What If We Just Used a Form?

September 21st, 2018


Matt Sumner joins Chris for a discussion around Matt's recent adventures with the block chain and Ethereum, as well as tackling the thorny issue of server rendered vs client side apps. They cover a bit of history, a bit …

170: Less Charted Territory

September 14th, 2018


Chris is joined by Paul Smith to discuss Crystal, a statically-typed and compiled language with a Ruby inspired syntax. Paul has spent much of the …

169: Fear Driven Development

September 7th, 2018


Chris is joined by Kane Baccigalupi, development director from thoughtbot's San Francisco office to discuss Kane's history in government working for 18F and California State and how those experiences have informed …

168: An Escape Rope of Learning

August 31st, 2018


Chris is joined by Rachel Mathew to discuss Rachel's recent experiences with
Scala on a handful of client and side projects. They discuss the …

167: I Feel Like We Should've Solved This By Now

August 24th, 2018


Chris is joined by German Velasco for a discussion ranging from German's
recent transition to remote working to the wonders of the Elixir language and
the Erlang platform, blockchain, Ethereum, TypeScript, the Language …

166: Are Services the New Rewrite?

August 10th, 2018


Chris & Derek discuss the world of services, exploring the various forms SOA can take, the oft stated benefits, and some of the pitfalls they commonly see in the
wild. The discussion ranges from alternative …

165: The Tables Have Turned

August 3rd, 2018


Chris & Derek talk about beginnings and ends, borrowing from their consulting mindset for a conversation spanning CI, deployment, communication, …

163: Insert Some Colons For Me

July 20th, 2018


After Sean confronts some breaking changes to Diesel, we discuss what we like about Visual Studio Code and how changing your tools can change your …

162: You Have Ruined Your Rails App (Sam Phippen)

July 13th, 2018


Sam Phippen joins us to discuss the maintenance burden of supporting old Rubies, service oriented architecture, and explorations of GraphQL and graph …

161: Re-Incoherence

July 6th, 2018


Rails performance, rebalancing coherence, and themes from career advice requests.

160: Praise Hands Emoji 🙌 (Vaidehi Joshi)

June 29th, 2018


We're joined by Vaidehi Joshi to discuss her multimedia empire, conference talk prep, getting started with computer science, and the applicability of …

159: Confusing and Hard to Use

June 22nd, 2018


An ORM that's a pleasure to use with raw SQL when needed? Sean discusses how that can be. Plus, Derek shares a new and exciting way for migrations to …

158: This is How I Ruin Meetings (Aaron Patterson)

June 15th, 2018


We're joined by Aaron Patterson for puns. Aaron also updates us on compacting GC for Ruby and Ruby 2.6's JIT compiler before telling us how he really …

157: Whiz-Bangy Frontend Thing (Chris Toomey)

June 8th, 2018


Chris Toomey joins Derek to talk about their shared experience in Elm and their excitement about GraphQL.

156: It's a Commercial Enterprise (Olivier Lacan)

June 1st, 2018


We speak with Olivier Lacan about, tooling improvements for better developer experience, and the emotional impact of shutting down …

155: Abstractions on Abstractions (Alex Sullivan)

May 25th, 2018


Amanda is joined by Alex Sullivan, Android developer at thoughtbot, to discuss the state of React Native and its new competitor from Google, Flutter.

154: We All Have Work to Do (Eileen Uchitelle)

May 18th, 2018


Eileen Uchitelle joins us live from RailsConf to talk about exciting improvements coming to Rails 6, problems encountered by larger Rails apps, …

153: 🎶 I Would Lose 3,000 Crates, and I Would Lose 12,000 More 🎶

May 11th, 2018


Is the bug in Postgres? Sean takes over operations of and keeps himself very busy. We also wrap up our experience at RailsConf.

152: I Look For Stories (Nickolas Means)

May 4th, 2018


We catch up with Nick Means at RailsConf and discuss storytelling, "human error", advice for job seekers, and the idea of licensing software …

151: Scheming About Schema

April 27th, 2018


Derek & Sean discuss their final preparations for RailsConf, the role of Diesel's is in comparison to schema.rb in Rails, and how Derek …

150: I Fight For the Users

April 13th, 2018


Derek and Sean discuss ethical concerns in software development and the prospect of licensing software developers.

149: E With an Umlaut

April 6th, 2018


Sean experiences a frustrating Ruby bug while building tooling to enforce module boundaries in Shopfiy's monolith. Derek deprecates Rails …

148: Baseball is a Legacy App

March 30th, 2018


Amanda and Sean discuss Flutter, modeling the game of baseball, and the state of persistence and networking in Android.

147: Is a Lambda a Sandwich?

March 23rd, 2018


Derek shares his experiences with new features in Ruby 2.5 before we turn our ire towards daylight savings time and timezones once more.

146: --YOLO

March 16th, 2018


Amanda, Derek, and Sean discuss style guides, automated code formatting, and the cycle of disillusionment in development work.

145: The Internet is Ruined

March 9th, 2018


Derek and Sean commiserate about the latest generation of MacBooks, Slack, and the state of the Web.

144: Fisher Price™ Tools

March 2nd, 2018


We talk about everyone's favorite Fisher-Price web framework and a small upcoming change to it before pivoting to discuss Derek's experience with his …

143: It's Hard to Have a Secret Rocket

February 16th, 2018


We chat about the Falcon Heavy launch before discussing a couple of issues Derek encountered when upgrading to Rails 5.2

142: What if We Didn't Do Any of This?

February 9th, 2018


Derek and Sean debate the value provided by database migrations written in your programming language of choice versus those written in SQL.

141: Go Baby, Go

February 1st, 2018


We discuss the challenges in parallelizing development work and also take a look at what's coming soon in Rails 5.2.

140: A Sign of... Stability?

January 25th, 2018


Sean and Derek argue the semantics of versioning and opine for automated reporting on more structured changelogs as a feature of future package …

139: Red, Green, Refactor (Alex Clark & Sean Doyle)

January 19th, 2018


Derek is joined by coworker Sean Doyle and Codecademy’s Alex Clark to discuss the process of test-driven development and the development of a new TDD …

138: I Don't Know How the World Works Anymore

January 12th, 2018


We chat about how shared global state in tests can cause you to doubt foundational truths of the universe, some issues with Rails system tests, and …

137: What's Up, Docs

January 5th, 2018


Who should library documentation be written for? How do you, as an author, know what your users will need to know? Should you have long form guides …

136: Propagating Conspiracy Theories

December 22nd, 2017


Amanda joins Derek to discuss KotlinConf, powerful IDEs, our Ralphapalooza hackathon, and the React Native experience from a native mobile …

135: A Series of Unfortunate Examples

December 13th, 2017


We discuss a possible ActiveRecord bug Derek encountered and explore the ambiguity of SQL formatting best practices.

134: Fastributes

December 8th, 2017


We share our favorite talks from RubyConf and discuss how Sean has made ActiveRecord attributes allocation significantly faster with Rust.

133: A Very Special Bike Shed

November 23rd, 2017


Sean is on to a significant ActiveRecord optimization using an extension written in Rust and Derek shares an overdue thanks to an excellent manager.

132: What Went Well?

November 16th, 2017


We discuss patterns and anti-patterns encountered in agile retrospectives and revisit a favorite topic: form objects.

131: Nouns For Verbs Sake

November 8th, 2017


We briefly discuss the renaming of factory_girl to factory_bot before diving in to the visitor pattern; what is it, and what are its inherent …

130: I Grew Up in Balloons

November 3rd, 2017


Is Database Cleaner necessary anymore? Tune in for our exciting play-by-play reporting on that issue and stick around for chatter on personal …

129: You Wanna Talk About GraphQL?

October 27th, 2017


We discuss an issue in the interaction between Rails, Chrome, and the HTTP referrer policy before Derek shares his love for GraphQL.

128: And Now for My Next Trick!

October 19th, 2017


We discuss strategies for fighting back against project management overhead, refactoring workflows, and on-call rotations.

127: Bike Shed: Discovery

October 13th, 2017


We discuss Bundler warning us to update to a prerelease version and other recent annoyances with our favorite dependency manager. We also wonder what GitHub diff stats can tell you about your contributions to a project …

126: Speaking of Compilers...

October 5th, 2017


We discuss a major change to Diesel's insert statements in advance of its 1.0 release and reexamine Contracts.ruby after Derek spends some time with …

125: Less Bad Than Expected

September 28th, 2017


We share and discuss some user feedback on fakes and mocks, discuss the benefits and drawbacks to FactoryGirl and share exasperation over the …

124: Nope. Nope. Nope. Nope.

September 20th, 2017


We go inside the RubyConf CFP review process before turning our attention to questions about the impact of code review. Stick around post credits for …

123: Too Many Parameters

September 13th, 2017


Derek and Sean discuss the troubles encountered when code reuse is a goal above all others and strategies to have your reusable cake and eat it too.

122: Name That Smell

September 5th, 2017


Derek and Sean discuss going from zero to code on new projects, writing tests that deal with external services, and a tricky floating point precision …

121: The Bike Log (Jerod Santo)

August 21st, 2017


The Changelog's Jerod Santo joins the show to talk finding time for, sustaining, and funding open source development.

120: Free Apples

August 3rd, 2017


We do some follow-up on open source fundraising and discuss some interesting patterns in Derek's new client project.

119: Questions Are For the Weak (Caleb Thompson & Matt Mongeau)

July 26th, 2017


Sean and Derek are joined by Caleb Thompson and Matthew Mongeau for our annual live episode to discuss lessons learned from past projects, and …

118: Nonsense In, Nonsense Out

July 18th, 2017


We discuss the economics of remote work, ActionDispatch::SystemTest in RSpec, and the use of Patreon on open source projects.

117: S.A.L.T. (Justin Searls)

July 10th, 2017


We chat with Justin Searls about testing, programmer personality types, programming communities, and putting spreadsheets on the Internet.

116: A More "WALL-E" Future

June 28th, 2017


Amanda is joined by SF thoughtbot developers Tony, Josh, & Greg to discuss learning new languages (and whether developers should do that in their …

114: Reasonably Thread Safe

June 16th, 2017


We discuss a tiny DOS caused when upgrading to Rails 5.1 and how Rails could better surface warnings that only occur in your …

113: Have You Considered Rust? (Matt Casper)

June 9th, 2017


We talk to Matt Casper about contributing to Diesel, Rust's ecosystem, and the next big thing.

112: Lifecycles Are Dead, Long Live Lifecycles!

June 1st, 2017


Amanda joins Sean to discuss all the Android news to come out of Google I/O, Kotlin as a "first class language", and features of Android "O"!

111: Trike Shed (Aaron Patterson)

May 25th, 2017


We talk with Aaron Patterson about Ruby and Rails upgrades, and the goal of making Ruby 3 three times faster than Ruby 2.

110: Green Chips

May 18th, 2017


What’s the deal with green potato chips? Also: RailsConf wrap up and an AST pass refactor for Diesel.

109: The Final Countdown

April 26th, 2017


Follow up about Service Objects and Computer Engineering. Plus, RailsConf prep, code slide woes, and modal pop-ups.

108: Have You Tried Rebooting?

April 18th, 2017


Is your operating system hosed? That might be related to Rails! We also chat about the trend towards compiled languages.

107: "Composition" Over Inheritance

April 14th, 2017


Single table inheritance, polymorphic associations, state machines and service objects, oh my!

106: Nerd Sniping (Chris Toomey)

April 5th, 2017


Chris Toomey joins to talk about Tell Me When It Closes, Haskell, and GraphQL.

105: For Display Purposes Only

March 30th, 2017


Complexity vs Functionality, Validations vs Database Constraints, plus whatever a Cap'n Proto is.

104: It's Dangerous to Refactor Alone!

March 23rd, 2017


Google's carrot-and-stick HTTPS policies and how playing The Legend of Zelda is like refactoring.

103: I Just Want to See Green Dots

March 16th, 2017


When a hash isn't a hash, GitHub as your Résumé, and porting to Diesel.

102: To the Moon!

March 10th, 2017


Going "to" the moon, hidden type errors in our Rails apps, the process of talk prep, and the S3 outage.

101: Hey, You Leaned!

February 28th, 2017


Amanda and Sean discuss the evolving stages of open source projects, native apps vs web apps, and space.

100: Nouns You Can Verb

February 24th, 2017


Sam Phippen helps us celebrate episode 100, as we discuss Diesel bugs, REST, RPC, and more.

99: Just Sayin'

February 16th, 2017


We go into the weeds with MySQL and discuss the virtues of database migrations written in SQL.

98: I Have Good Branch Hygiene

February 8th, 2017


We discuss complexity and progressive disclosure, garbage collection, and the impenetrable nature of Git.

97: One Equals Zero

January 31st, 2017


We wonder why writing parameterized associations in Rails is not easy, and discuss the difficulty in eliminating no-op queries in ActiveRecord. Plus, …

96: Who Stinks?

January 27th, 2017


Baby Ruby, Ruby refinements, Rails discoverability, and annoying polyfills.

95: Click 'Cat' to go 'Home' (Morgane Santos)

January 20th, 2017


Amanda is joined by Morgane Santos to discuss the experiences, technology, and development of Virtual Reality.

94: It's Not Supposed to Work

January 11th, 2017


We discuss the pain of custom inputs in HTML, ActiveRecord bugs, and Rust's Fire Flower.

93: I Have Complex Feelings

December 21st, 2016


The impact of codes of conduct on community behavior, shipping a mobile app written in Elm, and yet more to say on SemVer.

92: The Queen of Canada

December 16th, 2016


We discuss the sneaky performance differences between present?, any?, blank? and empty? with ActiveRecord, when N+1 is a "feature", and the future of …

91: I Think It's a Fish

December 8th, 2016


Derek briefly complains of the staleness of the asset pipeline in Rails 5, before Sean catches Derek up on Rails 5.1's support for Webpack, Yarn, and ES6. We also discuss the pain of deprecations in the upgrade to Rails …

90: Freedom Units

December 1st, 2016


We discuss adventures with shared mutable state in Elixir before turning to our thoughts on mocking HTTP interaction and how our approaches may …

89: There Will Never Be One Right Way (Ashley Williams)

November 23rd, 2016


Ashley Williams joins the show to discuss NPM, Yarn, and the general package manager ecosystem.

88: How Many Puppies Now?

November 18th, 2016


Amanda and Sean discuss talk prep and slide envy before diving in to Kotlin 1.0.5, UTF-8 identifiers in programming, and responsive layouts in …

87: The Refrigerator Took Down Your Website

November 10th, 2016


We talk about a widespread DNS outage and what steps you might take to avoid or limit your application's exposure to these things in the future.

86: Purple Train, Purrrple Train (Ian Anderson)

November 2nd, 2016


Derek chats with Ian Anderson about developing a mobile app for iOS and Android with React Native.

85: Are We in a Black Hole?

October 26th, 2016


We briefly ponder the very nature of our existence before discussing edge cases and interesting bugs encountered in ActiveRecord.

84: Why Are Manhole Covers Round?

October 19th, 2016


What do we look for when reviewing job applications, interviewing candidates, and pairing with prospective co-workers?

83: Canadian Halloween

October 12th, 2016


Sean encounters a roadblock in updating Diesel to use Rust’s new soon-to-be-stabilized procedural macros. Derek and Sean discuss the most recent CVE filed for Bundler, which is a lot like the previous CVE filed for …

82: I Just Want a Dog in a Spacesuit

October 5th, 2016


We discuss the problems with getting a CVE and the new lightning fast search tool, ripgrep. Sandwiched between those topics, we dive into the …

81: Is This Really a CVE?

September 28th, 2016


Derek and Sean talk through how to handle a security vulnerability that was reported for Clearance, a user authentication library.

80: Back to the Futures

September 21st, 2016


What's appropriate for a web middleware stack to provide? Does Rack do too much? Plus, our thoughts on NeoVim and Vim 8.

79: Comments in Your Queries

September 14th, 2016


Derek and Sean talk through some complex SQL before they examine the calluses developed from years of writing software on OS X.

78: I'm an Adult and I Choose Java

September 9th, 2016


Sean and Amanda discuss the state of Android Development in 2016. Java, Kotlin, Dependency Injection, and Functional Reactive Programming, oh my!

77: The Floors Are Not Zero Indexed

August 31st, 2016


How can you get your open source pull request merged?

76: The One With Laila & Brenda

August 17th, 2016


Between thoughtbot's Summer Summit and Sean's vacation, we are sadly without a new episode this week. However, we would love you all to check out …

75: I'm Not Sure That's Better

August 11th, 2016


Derek and Sean discuss hunting down intermittently failing tests, finding unused code in your application, and why you should never ever change your …

74: A Dip in the Connection Pool

August 3rd, 2016


We talk through design considerations for a user-visible custom query builder for a high volume ecommerce system.

73: Probably In My Other Pants

July 28th, 2016


We discuss Pokémon Go and what it's success might mean for software developers before Sean lays out his case for replacing the pg gem and libpq.

72: Surprises Cut For Time (Aaron Patterson)

July 20th, 2016


Aaron Patterson joins us from RailsConf for puns, performance improvements in Ruby, and AirDropping cats.

71: It's a Total Hack

July 13th, 2016


Inspired by Nickolas Means’ fantastic RailsConf keynote, we discuss the corollaries between Lockheed Martin’s Skunk Works projects and our software …

70: Make Small Things (Sandi Metz)

July 6th, 2016


Sandi Metz joins us live from RailsConf to talk about the rules, the trouble with naming things, making the right kinds of errors, and conference …

69: No More Drills

June 29th, 2016


We discuss thoughtbot's increasing use of Elixir and Phoenix and what that means for our Rails work before diving into what's new in Elixir 1.3 and …

68: Mostly Undocumented

June 22nd, 2016


Sean runs through a Rails bug that sits at the intersection of several magical and confusing Rails features.

67: Longtime Listener, First Time Caller (Rafael Franca)

June 15th, 2016


Leading Rails contributor Rafael Franca joins us from RailsConf to talk about taking over Sprockets, the future of the asset pipeline in Rails, …

66: Make Ruby Scripting Great Again (Terence Lee)

June 8th, 2016


We talk with Terence Lee of Heroku, Bundler, and mruby-cli fame about Apache Kafka and the future of mruby scripting.

65: Free as in Puppy (Katrina Owen)

May 25th, 2016


While at RailsConf, we talk with Katrina Owen about finding metaphors for software development, the successes and mistakes of, and the …

64: Open Mic SF

May 18th, 2016


Open Mic is back by popular demand, this time in San Francisco. We hear from developers in thoughtbot's San Francisco office about their recent …

63: Types Are Only Good If You Use Them

May 11th, 2016


Derek and Sean discuss some recent issues with exciting language features like pattern matching, macros, and static types.

62: Shipping is the Fastest Way to Get Somewhere

May 4th, 2016


Sean celebrates Diesel reaching "faster than a SQL string" status before we chat about Rails 5 blockers and the clarity of focus and priorities that …

61: I'm Not Telling You My Birthday

April 27th, 2016


"Send me an email every year for my birthday" is an easy thing for a human to understand but it can be deceptively tricky to do with computers. Also …

60: Remote Control (Katherine Fellows)

April 20th, 2016


KF (Katherine Fellows) joins the show to chat about successful BridgeFoundry events and creating environments where remote developers, junior and …

59: I Wish They Wouldn't Do That

April 13th, 2016


Derek and Sean discuss the left-pad saga, how other programming communities are reacting to it, and what you should learn from it as a library or …

58: Nobody Gets Fired For Buying IBM

April 6th, 2016


Should you rewrite or refactor? What should you consider as you weigh this decision and what exactly constitutes a rewrite anyway?

57: Mutability Ruins the Whole Party (José Valim)

March 30th, 2016


We chat with José Valim about bringing light to Elixir's dark corners, the design goals of Ecto, and the future of Elixir, Ecto, and Phoenix.

56: Most People Aren't Building Trello

March 23rd, 2016


Is ActiveRecord reinventing Sequel? If it is, does it matter? Derek and Sean discuss that and whether maybe we could all stand to tone down the …

55: Hot Dog is Not a Dessert

March 9th, 2016


Derek and Sean talk about their experience with the Rails 5 betas, how to test against them today, and things that you might want to look out for …

54: Argument Error

March 2nd, 2016


Derek shares some Elixir annoyances with Sean and they discus how a consulting role colors their perception of languages and frameworks, both for …

53: Cache Machine

February 24th, 2016


Laila and Derek go on a tour of the various caching mechanisms available to web applications in general, and Rails specifically. When is the right …

52: You're an Elixir Developer Now

February 17th, 2016


Derek and Laila discuss Derek's excitement for Elixir and Phoenix. Is Elixir as fun to write as Ruby? Is Phoenix a better Rails?

51: Is Sim City Running? (Steve Klabnik)

February 10th, 2016


We enjoy a wide-ranging discussion with Steve Klabnik on the importance of good documentation, the sometimes cloudy definition of a breaking change, …

50: Open Mic

February 3rd, 2016


It's Open Mic day at The Bike Shed. We hear from other thoughtbot designers and developers about what they're excited to be spending their investment …

49: A More Practical Haskell

January 27th, 2016


How can an ORM be faster than a SQL String? Laila and Sean discuss the latest happenings in Diesel and why it is that a systems language needs an …

48: Is Everyone Trying Their Best?

January 21st, 2016


Software is broken. In this episode, Derek and Sean discuss why exactly it's broken, and what we can do to make it better.

47: Star Wars Oranges

January 13th, 2016


Ruby 2.3 is out! What are we looking forward to trying and what do we think of &. and try? Stick around after the credits for spoiler-filled …

46: Don't Breathe, Save the Planet

January 6th, 2016


We discuss the maintenance burden of ActionCable and its dependencies on Rails 5, follow-up on Scenic issues, and discuss implementing migrations …

45: I Think I'd Prefer An Error to Nonsense

December 23rd, 2015


Derek shipped Scenic 1.0, which spurs a conversation about semantic versioning and the value of the 1.0 milestone. We discuss what the bar for …

44: It Won't Crash... It Might Crash

December 17th, 2015


Sean has shipped early versions of Diesel, an ORM for Rust! We discuss its semantic versioning, the ergonomics of use versus the complexities of …

43: That's DOCTOR Internet Technologist

December 9th, 2015


We talk about lessons learned from teachable moments both in the moment and decades later.

42: That's Incredibly Ambitious (Grayson Wright)

December 2nd, 2015


We speak to Grayson Wright about building Administrate, an open source Rails framework for administrative interfaces. What makes Administrate …

41: Ugh, I Have to Write Web Apps in This Thing

November 25th, 2015


Derek and Sean talk about Derek's exploration into Elixir and Phoenix, when and how performance matters, and ways to keep your Rails app fast from …

40: ActiveRecord Deprecated Persistence

November 18th, 2015


The ActiveRecord update API is a mess of methods that confuse even ActiveRecord’s maintainer. What are the problems and is there any hope for a …

39: Okay with Instability (Yehuda Katz)

November 11th, 2015


We talk with Yehuda Katz about how much risk is right for you and your app, the sharp tools of high level abstractions, and how our statistical …

38: Ugh, Forms

November 3rd, 2015


Laila and Derek discuss how they have handled forms with complex validation requirements and how to make these forms have a smooth user experience.

37: The Web is Faster Without Garbage

October 29th, 2015


Begun, the ad block wars have. Derek debugs an issue that arises from iOS ad blocking and wonders if analytics will move back to the server side. Sean fills us in on how dirty checking works in ActiveRecord and how he's …

36: Python Unchained

October 15th, 2015


Derek and Laila talk about learning Python and Django and discuss how thoughtbot adopts new languages, frameworks, and libraries. What factors …

35: GitHub Ate My Résumé

October 7th, 2015


Sean and Derek explain why you should always use a personal email address in your Git configuration before they dive into Ruby exception handling, …


September 29th, 2015


Derek is joined by Laila Winner to discuss Neo4j, the importance of fantastic documentation, and the different types of documentation a project …

32: Bug For Bug Compatibility

September 15th, 2015


Derek and Sean discuss Microsoft's interest in open source, improving the Rails development story on Windows, and Sean's progress implementing an ORM …

31: Oxidizing an ORM

September 8th, 2015


Are provably correct queries of interest to you? Sean gives a rundown of what a Rusty ORM might be like to build.

30: Just Go to Slash Wibble

September 1st, 2015


Derek and Sean discuss hypothetical changes to Rails routing before turning their attention toward hunting memory bloat and the proposal that strings …

29: Django Unchained (Mike Burns)

August 25th, 2015


Sean is joined by Mike Burns to discuss what Ruby and Rails can learn from Python and Django.

27: I've Got 29.97 Problems (and codecs are some)

August 11th, 2015


Sean and Derek circle back on HTTP before diving into unsafe rust, and finally the merits of a small standard library.

26: My Cache is in the Cloud

August 4th, 2015


This week, Sean and Derek discuss performance and inheriting code. In a stroke of complete madness, Derek decides that turbolinks isn't that bad.

25: Throwing the Schema Out With the SOAPy Bathwater (Gordon Fontenot)

July 28th, 2015


Derek is joined by Gordon Fontenot for a discussion of the JSON API specification, problems consuming it from Swift, and the future of functional …

24: You Look Good in a Lab Coat (Richard Schneeman)

July 21st, 2015


Richard Schneeman joins The Bike Shed to discuss ruby memory use, horizontal scaling, and tackling open source issues big and small.

This episode of …

23: Why Did They Call it Rust?!

July 14th, 2015


Sean gives Derek a tour of Rust, a new systems language from Mozilla.

This episode of The Bike Shed is sponsored by:

22: No Capes! (Eileen Uchitelle)

July 7th, 2015


Eileen Uchitelle joins the show to discuss performance improvements to ActiveRecord, speeding up integration tests, and contributing to or running …

21: The "Best" Canada (Godfrey Chan)

June 30th, 2015


Rails Core Team member Godfrey Chan joins the show to demystify rails bug hunting and contributing.

20: Intentionally Excruciatingly Painful

June 23rd, 2015


We're joined by Josh Clayton to discuss our differing strategies on testing view behavior, strategies for dealing with brittle feature specs, and …

19: The Oncoming Storm (Sam Phippen)

June 16th, 2015


Derek and Sean are joined by Sam Phippen from the RSpec core team to discuss RSpec mocks, testing strategies, and minitest.

18: This Podcast is Rigged (But Not Animated)

June 9th, 2015


Sean and Derek discuss rails asset dependencies before diving into an overview of animation techniques and C extensions.

17: Railing About Performance (Sam Saffron)

June 2nd, 2015


We chat with Sam Saffron about performance, benchmarking, and database migration strategies.

16: Wizards Are Hard to Kill

May 27th, 2015


Grab Bag! Derek and Sean talk about math, augmented reality, RailsConf wrap up, Minimum Viable Products, Accessibility...

15: Might As Well Be About Trains (Sarah Mei)

May 19th, 2015


Sean, Derek, and Sarah Mei talk about conference speaking, refactoring, and OO vs FP problems.

14: An Acceptable Level of Hassle (David Heinemeier Hansson)

May 12th, 2015


This week, we're joined by DHH and discuss microservices, monoliths, shared abstractions, and the fate of Action Cable.

13: Begrudging Applause (Aaron Patterson)

May 5th, 2015


Live from RailsConf, Aaron Patterson joins the show to talk about Rails 5, Rack 2, Contributing to Open Source, and cats. We also field audience …

12: A Poor Man's binding.pry

April 17th, 2015


Derek and Sean talk about naming, debugging, and the anxiety of conference talks.

11: Form-ing Opinions

April 3rd, 2015


Sean and Derek talk about the state of Android tooling, refactoring journeys, and an approach to rails form objects.

10: I Don't Get Functional Programming

March 20th, 2015


Pat Brisbin joins Derek to discuss the many advantages of Haskell programming.

note: at 27:01 Pat says "referential integrity" when he meant "

9: Monorails, For the Kids

March 6th, 2015


Sean and Derek discuss Monoliths, Service Oriented Architecture, and the new Adapter Specific Type Registry in Rails 5.

8: Attributes API, Relation#or, Paid Open Source

February 20th, 2015


Derek and Sean discuss what the Attributes API enables, the addition of Relation#or and paid open source.

7: At the Car Wash

January 30th, 2015


Derek and Sean talk trade schools, sneaky bugs, bad method names, before_filters, and the Superbowl.

6: Shh! Library Under Maintenance

January 16th, 2015


Sean and Derek discuss thoughtful deprecations, backwards compatibility, and other joys of library maintenance.

5: Rails is Not Your Architecture

December 31st, 2014


Derek and Sean discuss various ways of taking the Rails out of your Ruby on Rails application, what folder to put your files in, and the difficulties …

4: Put Everything on the Front End

December 12th, 2014


Derek and Sean discuss hunting Rails performance regressions and techniques for improving performance in your web applications.

3: Flipping the Script

November 28th, 2014


Sean and Derek take a fresh look at the tradeoffs in writing CoffeeScript and whether we should be using an ES6 transpiler instead.

2: Rails 4.2

November 17th, 2014


Derek and Sean discuss Sean's commit access to Rails, what's coming in Rails 4.2, and how to go about making Rails code better.

  • Ylan Segal wrote us …

1: Sandi & Derek's Rules

October 31st, 2014


Sean and Derek discuss lessons learned from following Sandi Metz' rules on a project and the overall impact of rules on code.

Loading ...

Listen to The Bike Shed


A free podcast app for iPhone and Android

  • User-created playlists and collections
  • Download episodes while on WiFi to listen without using mobile data
  • Stream podcast episodes without waiting for a download
  • Queue episodes to create a personal continuous playlist
RadioPublic on iOS and Android
Or by RSS
RSS feed

Connect with listeners

Podcasters use the RadioPublic listener relationship platform to build lasting connections with fans

Yes, let's begin connecting
Browser window

Find new listeners

  • A dedicated website for your podcast
  • Web embed players designed to convert visitors to listeners in the RadioPublic apps for iPhone and Android
Clicking mouse cursor

Understand your audience

  • Capture listener activity with affinity scores
  • Measure your promotional campaigns and integrate with Google and Facebook analytics
Graph of increasing value

Engage your fanbase

  • Deliver timely Calls To Action, including email acquistion for your mailing list
  • Share exactly the right moment in an episode via text, email, and social media
Icon of cellphone with money

Make money

  • Tip and transfer funds directly to podcastsers
  • Earn money for qualified plays in the RadioPublic apps with Paid Listens