Software Engineering

The Bike Shed


+14 FANS
On The Bike Shed, host Chris Toomey and guests discuss their development experience and challenges with Ruby, Rails, JavaScript, and whatever else is drawing their attention, admiration, or ire this week.
Looking for recently uploaded episodes
26: My Cache is in the Cloud

33:59 | Aug 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.
205: Won't Somebody Think of The Jokes (Aaron Patterson)

45:29 | Jul 9th

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 three-year-long effort to bring more advance...Show More
204: I Don't Like Rest

45:52 | Jul 2nd

In this week's episode, Steph and Chris discuss ways to unplug and protect personal downtime, RESTful sorting, altering production data within a Rails migration vs a rake task, adopting Unicode characters, and respond to a listener's question about h...Show More
203: A Blessed Monkeypatch (Eileen M. Uchitelle)

40:46 | Jun 25th

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 maintained a custom fork of Rails f...Show More
202: I Left it All on The Dance Floor

32:21 | Jun 18th

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 Rails' Instrumentation API and res...Show More
201: Artisanally Indented Code (Kevin Deisz)

45:39 | Jun 11th

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 Ruby, but dig further into Kevin's core philosophies that drive his work on tools like preval. They ...Show More
200: FOMO for Hallway Track (200th Episode!)

53:51 | May 29th

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 wonderful folks who helped make it happen (thanks Derek, Sean, Amanda, Laila, and of course Thom!). They ...Show More
199: Pave That Path

45:16 | May 21st

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 and the belief that engineers s...Show More
198: In Terms of Tradeoffs (Glenn Vanderburg)

41:22 | May 14th

On this week's episode, Chris is joined by Glenn Vanderburg, VP of Engineering at FirstHQ, live from RailsConf. They discuss Glenn's RailsConf talk, "The 30-Month Migration", covering distributed data models, refactoring, and the wonders of postgres....Show More
197: Don't Go Chasing Waterfalls

44:27 | May 7th

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 hint of waterfall in their wor...Show More
196: I Can Be Wrong on the Internet

38:28 | Apr 30th

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, and Angular.
195: WebAssembly & WASI (Lin Clark & Till Schneidereit)

37:01 | Apr 19th

On this week's episode, Chris is joined by Lin Clark and Till Schneidereit of Mozilla to discuss all things WebAssembly. Lin and Clark are helping to lead the development and advocacy around WebAssembly and in this conversation they discuss the curre...Show More
194: My PGP Shame

47:13 | Apr 12th

Mike Burns discusses the ins and outs of application security, his comprehensive Application Security Guide, common security holes, and his personal information & security management workflow.
193: A Thing I Know Almost Nothing About

47:41 | Apr 5th

Edward Loveall, former thoughtbot design apprentice and now thoughtbot developer, chats about his thoughtbot origin story, podcasts, DNS, and "must have" developer tools on new machines.
192: I Don't Want to Think That Hard

34:05 | Mar 29th

Sid Raval chats about functional programming, strong types, and accessibility. The discussion touches on TypeScript, Haskell, Scala, Elm, as well as accessibility and developer tools. Thank you to CircleCI for sponsoring this episode.
191: Open Source is Created By Humans (Devon Zuegel)

39:32 | Mar 22nd

Chris is joined by Devon Zuegel who recently joined GitHub in the new Open Source Product Manager role. Devon and Chris discuss the complexities inherent to open source including funding models, managing motivation and burnout, different open source ...Show More
190: Going Steady With a Platform

52:26 | Mar 15th

Alex Sullivan takes Chris on a tour of the mobile landscape comparing the core native platforms (the languages, developer tooling and IDEs, and fundamental thinking), React Native, and briefly touching on the newest entrant into the mobile space, Fl...Show More
189: It's Gonna Work, Definitely, No Problems Whatsoever

41:38 | Mar 1st

Chris is joined by Steph Viccari to chat about Steph's recent experience working on the Hubspot API ruby wrapper, testing third-party APIs, VCR, using exceptions as control flow, and spooky mystery guests at a distance. A little something for everyon...Show More
188: A Function by Any Other Name

38:01 | Feb 22nd

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 impressively deep dives on topics that folks outside the world of programming would never think could...Show More
187: Convincing People Not to Build Software

41:31 | Feb 15th

On this week's episode, Chris is joined by Matt Sumner, development director in our Boston Studio to discuss Matt's crypto adventures, design sprint experiences, a new ecosystem for him with Scala & GraphQL.
186: Let's Duplicate Stuff

38:12 | Feb 1st

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 & Daniel discuss Daniel's work as maintainer of one of thoughtbot's most popular open source projects an...Show More
185: The Transactional Fallacy (Avdi Grimm)

35:01 | Jan 25th

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, and where he's looking to next f...Show More
184: Fun, Interesting, and I Wouldn't Recommend It

41:22 | Jan 18th

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 with both Elm & TypeScript, and t...Show More
183: Former Robots Smashing Into Other Giant Robots (Ben Orenstein)

49:25 | Jan 11th

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 covers the unique technical challen...Show More
182: What's it in the Service Of?

39:12 | Jan 4th

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 process, design systems, functional CSS,...Show More
181: Strong Types and a Functional Flair

41:31 | Dec 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 sets, combining data from multiple ...Show More
180: A Citizen of the Internet (John Resig)

39:14 | Dec 7th, 2018

We're thrilled to welcome special guest John Resig, creator of jQuery and front-end architect at Khan Academy.
179: We CAN Just Use a Form!

49:47 | Nov 30th, 2018

Matt Sumner returns to chat with Chris about their recent adventures. They discuss Matt's ongoing work building an open source Ethereum implementation in Elixir, Chris's recent trip to speak at GraphQL Summit, and React Hooks.
178: Friday is For Spikes

38:31 | Nov 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 on from thoughtbot to try out a new role as an engineering manager at GitHub.
177: Tricking Computers Into Doing Things

32:21 | Nov 9th, 2018

On this episode of the Bike Shed, Chris is joined by Christina Entcheva, developer from thoughtbot’s New York studio to discuss rails performance, user focused development, and headless CMSs.
176: The Machines Will Learn

37:10 | Nov 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 the modern web, and then shifts t...Show More
175: Tell Me When It's Real

42:11 | Oct 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 of web development, covering lan...Show More
174: I've Watched a Lot of Vim Courses

30:48 | Oct 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 making Upcase, thoughtbot's online...Show More
173: A Combinatoric Explosion of Nulls

50:05 | Oct 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 from dead code elimination, the...Show More
172: What I Believe About Software

55:51 | Oct 5th, 2018

Steph Viccari joins Chris for a conversation starting with a discussion of some deployment and orchestration issues Chris was helping out with, followed by some of Steph's recent experiences with JSONB in postgres and the relative trade-offs of unstr...Show More
171: What If We Just Used a Form?

45:55 | Sep 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 of opinion, and some practical...Show More
170: Less Charted Territory

49:14 | Sep 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 past few years exploring Crystal and building a new web framework called Lucky. Paul's infectious enth...Show More
169: Fear Driven Development

38:44 | Sep 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 Kane's work since. Throughout the c...Show More
168: An Escape Rope of Learning

42:19 | Aug 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 benefits of working within a type system, learning to work with a compiler, and the process of getting to kn...Show More
167: I Feel Like We Should've Solved This By Now

43:36 | Aug 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 Server Protocol, and more!
166: Are Services the New Rewrite?

37:17 | Aug 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 architectures, guidelines for how to think ...Show More
165: The Tables Have Turned

40:33 | Aug 3rd, 2018

Chris & Derek talk about beginnings and ends, borrowing from their consulting mindset for a conversation spanning CI, deployment, communication, team structure, and everything in between.
163: Insert Some Colons For Me

38:59 | Jul 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 perspective.
162: You Have Ruined Your Rails App (Sam Phippen)

42:17 | Jul 13th, 2018

Sam Phippen joins us to discuss the maintenance burden of supporting old Rubies, service oriented architecture, and explorations of GraphQL and graph databases.
161: Re-Incoherence

39:50 | Jul 6th, 2018

Rails performance, rebalancing coherence, and themes from career advice requests.
160: Praise Hands Emoji 🙌 (Vaidehi Joshi)

47:31 | Jun 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 a computer science education in every day development work. We wrap the episode with live Q&A from o...Show More
159: Confusing and Hard to Use

23:39 | Jun 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 break!
158: This is How I Ruin Meetings (Aaron Patterson)

47:01 | Jun 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 feels about functional programming.
157: Whiz-Bangy Frontend Thing (Chris Toomey)

42:12 | Jun 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)

41:04 | Jun 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)

44:09 | 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)

41:07 | 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, strategies for upgrading Rails and more!
153: 🎶 I Would Lose 3,000 Crates, and I Would Lose 12,000 More 🎶

36:42 | 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)

31:13 | 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 developers.
151: Scheming About Schema

35:11 | Apr 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 took down production.
150: I Fight For the Users

47:27 | Apr 13th, 2018

Derek and Sean discuss ethical concerns in software development and the prospect of licensing software developers.
149: E With an Umlaut

33:26 | Apr 6th, 2018

Sean experiences a frustrating Ruby bug while building tooling to enforce module boundaries in Shopfiy's monolith. Derek deprecates Rails functionality instead of preparing his talk.
148: Baseball is a Legacy App

36:48 | Mar 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?

34:58 | Mar 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

29:54 | Mar 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

35:56 | Mar 9th, 2018

Derek and Sean commiserate about the latest generation of MacBooks, Slack, and the state of the Web.
144: Fisher Price™ Tools

29:04 | Mar 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 first Elm PR.
143: It's Hard to Have a Secret Rocket

31:40 | Feb 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?

42:00 | Feb 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

31:11 | Feb 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?

43:01 | Jan 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 managers.
139: Red, Green, Refactor (Alex Clark & Sean Doyle)

33:08 | Jan 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 course for Codecademy.
138: I Don't Know How the World Works Anymore

48:00 | Jan 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 recent changes in browser behavior.
137: What's Up, Docs

48:43 | Jan 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 in addition to API documentation? We ask and answer these questions in the context of Sean's work to d...Show More
136: Propagating Conspiracy Theories

38:23 | Dec 22nd, 2017

Amanda joins Derek to discuss KotlinConf, powerful IDEs, our Ralphapalooza hackathon, and the React Native experience from a native mobile developer's perspective.
135: A Series of Unfortunate Examples

33:12 | Dec 13th, 2017

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

31:24 | Dec 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

31:01 | Nov 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?

36:52 | Nov 16th, 2017

We discuss patterns and anti-patterns encountered in agile retrospectives and revisit a favorite topic: form objects.
131: Nouns For Verbs Sake

39:03 | Nov 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 tradeoffs.
130: I Grew Up in Balloons

33:49 | Nov 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 defaults for new Rails applications.
129: You Wanna Talk About GraphQL?

47:03 | Oct 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!

45:46 | Oct 19th, 2017

We discuss strategies for fighting back against project management overhead, refactoring workflows, and on-call rotations.
127: Bike Shed: Discovery

52:42 | Oct 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 and when they might be a smell....Show More
126: Speaking of Compilers...

35:25 | Oct 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 it in use.
125: Less Bad Than Expected

44:19 | Sep 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 handling of the Equifax data breach.
124: Nope. Nope. Nope. Nope.

41:56 | Sep 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 some spoiler-filled, lukewarm Game of Thrones takes.
123: Too Many Parameters

33:45 | Sep 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

41:04 | Sep 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 bug Sean encountered in ActiveRecord.
121: The Bike Log (Jerod Santo)

43:47 | Aug 21st, 2017

The Changelog's Jerod Santos joins the show to talk finding time for, sustaining, and funding open source development.
120: Free Apples

36:23 | Aug 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)

51:23 | Jul 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 speaking at conferences.
118: Nonsense In, Nonsense Out

45:22 | Jul 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)

46:04 | Jul 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

36:17 | Jun 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 free time), machine learning, the future of AR/VR, and tech that strives to make a social difference.
115: I Don't Need Another Google Hangout (Cecy Correa)

42:57 | Jun 22nd, 2017

We talk with Cecy Correa about how to hire and get hired.
114: Reasonably Thread Safe

39:15 | Jun 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 production configuration. We also get an update on multi-table joins in Rust.
113: Have You Considered Rust? (Matt Casper)

29:07 | Jun 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!

33:21 | Jun 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)

31:14 | 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

32:43 | 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

32:48 | Apr 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?

41:26 | Apr 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

52:50 | Apr 14th, 2017

Single table inheritance, polymorphic associations, state machines and service objects, oh my!
106: Nerd Sniping (Chris Toomey)

46:21 | Apr 5th, 2017

Chris Toomey joins to talk about Tell Me When It Closes, Haskell, and GraphQL.
105: For Display Purposes Only

46:51 | Mar 30th, 2017

Complexity vs Functionality, Validations vs Database Constraints, plus whatever a Cap'n Proto is.
104: It's Dangerous to Refactor Alone!

42:00 | Mar 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

53:02 | Mar 16th, 2017

When a hash isn't a hash, GitHub as your Résumé, and porting to Diesel.
102: To the Moon!

49:57 | Mar 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!

50:35 | Feb 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

51:32 | Feb 24th, 2017

Sam Phippen helps us celebrate episode 100, as we discuss Diesel bugs, REST, RPC, and more.
99: Just Sayin'

46:05 | Feb 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

35:30 | Feb 8th, 2017

We discuss complexity and progressive disclosure, garbage collection, and the impenetrable nature of Git.
97: One Equals Zero

29:16 | Jan 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, we discuss how you can give a great RailsConf talk proposal that doesn't have anything to do with Ra...Show More
96: Who Stinks?

39:26 | Jan 27th, 2017

Baby Ruby, Ruby refinements, Rails discoverability, and annoying polyfills.
95: Click 'Cat' to go 'Home' (Morgane Santos)

28:35 | Jan 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

44:08 | Jan 11th, 2017

We discuss the pain of custom inputs in HTML, ActiveRecord bugs, and Rust's Fire Flower.
93: I Have Complex Feelings

41:35 | Dec 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

38:22 | Dec 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 Diesel.
91: I Think It's a Fish

41:05 | Dec 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 5.
90: Freedom Units

35:51 | Dec 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 differ depending on the language we’re using.
89: There Will Never Be One Right Way (Ashley Williams)

37:52 | Nov 23rd, 2016

Ashley Williams joins the show to discuss NPM, Yarn, and the general package manager ecosystem.
88: How Many Puppies Now?

29:39 | Nov 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 Android.
87: The Refrigerator Took Down Your Website

32:01 | Nov 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)

30:46 | Nov 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?

53:13 | Oct 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?

50:42 | Oct 19th, 2016

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

27:37 | Oct 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 Bundler.
82: I Just Want a Dog in a Spacesuit

50:51 | Oct 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 colonization of Mars. Yes, that's right, Mars.
81: Is This Really a CVE?

27:21 | Sep 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

39:00 | Sep 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

41:18 | Sep 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

50:11 | Sep 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

32:52 | Aug 31st, 2016

How can you get your open source pull request merged?
76: The One With Laila & Brenda

40:58 | Aug 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 thoughtbot's newest podcast, interviewing inspirational designers, developers, and other makers in tech,...Show More
75: I'm Not Sure That's Better

33:49 | Aug 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 test framework.
74: A Dip in the Connection Pool

34:48 | Aug 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

43:31 | Jul 28th, 2016

We discuss Pokémon Go and what its 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)

43:28 | Jul 20th, 2016

Aaron Patterson joins us from RailsConf for puns, performance improvements in Ruby, and AirDropping cats.
71: It's a Total Hack

42:25 | Jul 13th, 2016

Inspired by Nickolas Means’ fantastic RailsConf keynote, we discuss the corollaries between Lockheed Martin’s Skunk Works projects and our software development projects.
70: Make Small Things (Sandi Metz)

1:04:21 | Jul 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 speaking. A big thanks to everyone who came out to our live show! A video version of this episode is av...Show More
69: No More Drills

40:31 | Jun 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 Ecto 2.0.
68: Mostly Undocumented

33:09 | Jun 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)

39:30 | Jun 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, managing Rails dependencies, and the hard work of software maintenance. Also, Sean said you'd all "defini...Show More
66: Make Ruby Scripting Great Again (Terence Lee)

39:31 | Jun 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)

45:52 | May 25th, 2016

While at RailsConf, we talk with Katrina Owen about finding metaphors for software development, the successes and mistakes of, and the benefits of providing code reviews.
64: Open Mic SF

55:11 | 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 investment time projects.
63: Types Are Only Good If You Use Them

38:16 | 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

34:16 | 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 only shipping can bring.
61: I'm Not Telling You My Birthday

31:04 | Apr 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 tricky for (some) computers: SELECT * FROM . Wait... what?
60: Remote Control (Katherine Fellows)

38:02 | Apr 20th, 2016

KF (Katherine Fellows) joins the show to chat about successful BridgeFoundry events and creating environments where remote developers, junior and otherwise, can thrive.
59: I Wish They Wouldn't Do That

40:59 | Apr 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 application author.
58: Nobody Gets Fired For Buying IBM

45:36 | Apr 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)

55:50 | Mar 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

38:53 | Mar 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 JavaScript.
55: Hot Dog is Not a Dessert

40:54 | Mar 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 when updating your app.
54: Argument Error

42:25 | Mar 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 better and for worse. Sean provides an update on SQLite and Association support in Diesel.
53: Cache Machine

43:28 | Feb 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 time to cache and at what level?
52: You're an Elixir Developer Now

46:31 | Feb 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)

43:56 | Feb 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, the politics of open source contributions, and work/life balance or boundaries.
50: Open Mic

28:30 | Feb 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 time on lately.
49: A More Practical Haskell

34:40 | Jan 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 ORM, anyway.
48: Is Everyone Trying Their Best?

34:44 | Jan 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

54:12 | Jan 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 discussion of Star Wars: The Force Awakens
46: Don't Breathe, Save the Planet

34:14 | Jan 6th, 2016

We discuss the maintenance burden of ActionCable and its dependencies on Rails 5, follow-up on Scenic issues, and discuss implementing migrations anew in Diesel.
45: I Think I'd Prefer An Error to Nonsense

47:57 | Dec 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 breaking changes in a library should be and look at some specific changes on tap for Scenic and whether the...Show More
44: It Won't Crash... It Might Crash

47:29 | Dec 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 implementation, early issues with the API and the road to Diesel 1.0.
43: That's DOCTOR Internet Technologist

50:43 | Dec 9th, 2015

We talk about lessons learned from teachable moments both in the moment and decades later.
42: That's Incredibly Ambitious (Grayson Wright)

37:32 | Dec 2nd, 2015

We speak to Grayson Wright about building Administrate, an open source Rails framework for administrative interfaces. What makes Administrate different than existing solutions and what are the challenges in maintaining high-level dependencies.
41: Ugh, I Have to Write Web Apps in This Thing

35:25 | Nov 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 day 1.
40: ActiveRecord Deprecated Persistence

34:22 | Nov 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 solution?
39: Okay with Instability (Yehuda Katz)

1:07:10 | Nov 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 intuition leads us astray on web performance.
38: Ugh, Forms

40:33 | Nov 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

44:15 | Oct 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 making it faster and better in...Show More
36: Python Unchained

50:06 | Oct 15th, 2015

Derek and Laila talk about learning Python and Django and discuss how thoughtbot adopts new languages, frameworks, and libraries. What factors influence adoption? How do we share what works and doesn't work?
35: GitHub Ate My Résumé

40:12 | Oct 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, and potential MRI proc optimizations.

38:47 | Sep 29th, 2015

Derek is joined by Laila Winner to discuss Neo4j, the importance of fantastic documentation, and the different types of documentation a project requires.
33: Just Put it in a Module, Man

40:23 | Sep 22nd, 2015

Sean and Derek take some listener questions, and dig into DRY.
32: Bug For Bug Compatibility

50:36 | Sep 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 in Rust.
31: Oxidizing an ORM

48:24 | Sep 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

46:26 | Sep 1st, 2015

Derek and Sean discuss hypothetical changes to Rails routing before turning their attention toward hunting memory bloat and the proposal that strings be frozen by default in Ruby 3.
29: Django Unchained (Mike Burns)

23:26 | Aug 25th, 2015

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

09:17 | Aug 18th, 2015

Did you know Rails has no integration test suite? What could go wrong?
27: I've Got 29.97 Problems (and codecs are some)

43:56 | Aug 11th, 2015

Sean and Derek circle back on HTTP before diving into unsafe rust, and finally the merits of a small standard library.
25: Throwing the Schema Out With the SOAPy Bathwater (Gordon Fontenot)

51:11 | Jul 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 programming in Swift. This episode of The Bike Shed is sponsored by Code School. Entertaining online le...Show More
24: You Look Good in a Lab Coat (Richard Schneeman)

41:04 | Jul 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 The Bike Shed is sponsored by Code School. Entertaining online learning for existing and aspiring de...Show More
23: Why Did They Call it Rust?!

43:09 | Jul 14th, 2015

Sean gives Derek a tour of Rust, a new systems language from Mozilla. This episode of The Bike Shed is sponsored by Code School. Entertaining online learning for existing and aspiring developers. Leave a review on our iTunes page to be entered to wi...Show More
22: No Capes! (Eileen Uchitelle)

38:12 | Jul 7th, 2015

Eileen Uchitelle joins the show to discuss performance improvements to ActiveRecord, speeding up integration tests, and contributing to or running open source projects. This episode of The Bike Shed is sponsored by Code School. Entertaining online l...Show More
21: The "Best" Canada (Godfrey Chan)

23:38 | Jun 30th, 2015

Rails Core Team member Godfrey Chan joins the show to demystify rails bug hunting and contributing.
20: Intentionally Excruciatingly Painful

41:02 | Jun 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 what types of tests each of us favor.
19: The Oncoming Storm (Sam Phippen)

29:11 | Jun 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)

39:14 | Jun 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)

46:46 | Jun 2nd, 2015

We chat with Sam Saffron about performance, benchmarking, and database migration strategies.
16: Wizards Are Hard to Kill

36:40 | 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)

31:18 | 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)

54:31 | 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)

53:27 | 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 questions.
12: A Poor Man's binding.pry

31:55 | Apr 17th, 2015

Derek and Sean talk about naming, debugging, and the anxiety of conference talks.
11: Form-ing Opinions

37:19 | Apr 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

40:35 | Mar 20th, 2015

Pat Brisbin joins Derek to discuss the many advantages of Haskell programming.
9: Monorails, For the Kids

34:37 | Mar 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

37:29 | Feb 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

48:52 | Jan 30th, 2015

Derek and Sean talk trade schools, sneaky bugs, bad method names, before_filters, and the Superbowl.
6: Shh! Library Under Maintenance

42:12 | Jan 16th, 2015

Sean and Derek discuss thoughtful deprecations, backwards compatibility, and other joys of library maintenance.
5: Rails is Not Your Architecture

39:10 | Dec 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 and rewards of learning new programming languages.
4: Put Everything on the Front End

38:20 | Dec 12th, 2014

Derek and Sean discuss hunting Rails performance regressions and techniques for improving performance in your web applications.
3: Flipping the Script

25:37 | Nov 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

35:51 | Nov 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.
1: Sandi & Derek's Rules

27:48 | Oct 31st, 2014

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