The Bike Shed

The Bike Shed

www.bikeshed.fm
On The Bike Shed, hosts Chris Toomey & Steph Viccari discuss their development experience and challenges at thoughtbot with Ruby, Rails, JavaScript, and whatever else is drawing their attention, admiration, or ire this week.


245: Developer Therapy (German Velasco)
May 27 • 45 min
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 their new(ish) roles as Development Team Leads. German also shares that he is writing a book! German shares…
244: Existential JavaScript
May 19 • 40 min
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 functions. Steph also touches on upgrading to…
243: I’m Not a Couch Worker
May 12 • 40 min
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 effort). Steph updates on her quest for…
242: As Few Consonants as Possible
May 5 • 41 min
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 communication, and share their preferred…
241: What If We Just Put a Phone Number?
Apr 28 • 36 min
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 listener question around Vim and the general…
240: A Framework in Motion Tends to Stay in Motion
Apr 21 • 34 min
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 Inertia.js. This episode is brought to…
239: Admins All the Way Down
Apr 7 • 38 min
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 available, or should we be considering licenses and responsibility to update? They also discuss the need for…
238: All the Single Quotes
Mar 31 • 28 min
In this week's episode, Chris shares details about his new greenfield project, implementing static pages with high voltage, opting for just-in-time architecture decisions and working with various admin libraries. Steph discusses various ways to advocate…
237: I Love The Squiggles
Mar 17 • 39 min
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 updates us on living in a…
236: What’s GNU With You?
Mar 10 • 44 min
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 reflects on his time at thoughtbot, how…
235: Take a Deep Breath
Mar 3 • 44 min
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 positive team habits, snapshot testing,…
234: No More Weird Stuff
Feb 25 • 34 min
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 struggles with test failures, and…
233: Software Development in Ancient Rome (Joël Quenneville)
Feb 18 • 42 min
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 discuss writing habits that help…
232: I’m Not Allowed to Play With Other Shells
Feb 11 • 36 min
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 and technical trade-offs in the pursuit…
231: Fun and Useful
Feb 4 • 32 min
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. Chris shares some struggles he's…
230: The Broken Road
Jan 28 • 42 min
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 bootcamps, thoughtbot's exciting new…
229: Nothing but Positive Fire
Jan 21 • 52 min
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, Steph gives a quick summary of her…
228: Friends and Food (George Brocklehurst)
Jan 14 • 50 min
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 variety of projects and technologies that caught their attention during thoughtbot's recent internal…
227: Hacks and Cheats
Jan 7 • 32 min
On this week's episode, Chris and Steph discuss their recent holiday hackathon efforts building a game in Elm. They discuss their experiences with Elm and the broader prospects of using Elm in more production applications. They also discuss the new git…
226: Bespoke Nonsense
Dec 31, 2019 • 40 min
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 between the moments of "professional…
225: Pepper in Some Security
Dec 10, 2019 • 40 min
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 the world of application…
224: The One Manhattan Rule
Dec 3, 2019 • 41 min
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 Elm, how teams achieve a consistent…
223: Terrible and Easy
Nov 26, 2019 • 44 min
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 to Neovim. Types of…
222: That Eureka Moment
Nov 12, 2019 • 36 min
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 code review. How can we make it easy for reviewers, and as reviewers, how can we make it easy for our…
221: An Informed Opinion
Nov 5, 2019 • 45 min
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 nearly full-time pairing, mechanical…
220: Adequately Fun
Oct 29, 2019 • 52 min
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, and respond to a CS student who is…
219: Seeking That Middle Option
Oct 22, 2019 • 36 min
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 watch, and they follow up a previous discussion around case-sensitivity (or insensitivity) in URLs and…
218: Finesse in Quitting (Brittany Martin)
Oct 15, 2019 • 41 min
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 passion for roller derby and her upcoming Ruby conference talk: "Hire Me, I'm Excellent at Quitting." They also…
217: A Vote For Reasonableness
Oct 8, 2019 • 32 min
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 using materialized views in tests and…
216: I’m Not the Best Criminal
Oct 1, 2019 • 39 min
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 Vim, how the Pinterest team…
215: Start With People
Sep 24, 2019 • 35 min
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 listener questions on landing a first…
214: Have You Tried Refreshing the Page?
Sep 17, 2019 • 38 min
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, Matt and Chris discuss VS Code features, Apollo caching and reflect upon their first year as Development…
213: Admins Matter Too
Sep 10, 2019 • 35 min
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 negative lines of code on a project. They dig into the idea that while code can certainly be an asset, it…
212: Award Winning Sheds
Sep 4, 2019 • 37 min
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 around onboarding covering the…
211: I’m Not a Lawyer, But…
Aug 27, 2019 • 36 min
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 technology), separating our identity from our preferred technology, coding styles that require greater mental…
210: Stop Trying to Make Fetch Happen
Aug 20, 2019 • 34 min
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 up" third-party API calls. AppSignal…
209: We Will Never Know Enough (Michael Chan)
Aug 13, 2019 • 39 min
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 internets. They discuss Micheal’s work on the React Podcast and themes in open source in general, Michael’s…
208: Goldilocks and the Three Monitors
Aug 6, 2019 • 33 min
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 listener questions inquiring what makes Rails successful and new project nerves. Vote for us for ‘Best Dev’…
207: Very-Bad, Or Just Normal-Bad?
Jul 30, 2019 • 39 min
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 ActiveRecord, SQL, and postgres-related topics. They discuss safe vs unsafe migrations when dealing with…
206: No-One Wants to be the Canary
Jul 23, 2019 • 38 min
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 respond to a listener's question regarding the trade-offs of using client state management tools like…
205: Won’t Somebody Think of The Jokes (Aaron Patterson)
Jul 9, 2019 • 45 min
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 advanced…
204: I Don’t Like Rest
Jul 2, 2019 • 45 min
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 how…
203: A Blessed Monkeypatch (Eileen M. Uchitelle)
Jun 25, 2019 • 40 min
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 for…
202: I Left it All on The Dance Floor
Jun 18, 2019 • 32 min
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 respond…
201: Artisanally Indented Code (Kevin Deisz)
Jun 11, 2019 • 45 min
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 round…
200: FOMO for Hallway Track (200th Episode!)
May 29, 2019 • 53 min
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…
199: Pave That Path
May 21, 2019 • 45 min
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 should…
198: In Terms of Tradeoffs (Glenn Vanderburg)
May 14, 2019 • 41 min
On this week’s episode, Chris is joined by Glenn Vanderburg, VP of Engineering at First.io, live from RailsConf. They discuss Glenn’s RailsConf talk, "The 30-Month Migration", covering distributed data models, refactoring, and the wonders of postgres.…
197: Don’t Go Chasing Waterfalls
May 7, 2019 • 44 min
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…
196: I Can Be Wrong on the Internet
Apr 30, 2019 • 38 min
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. Angular Backbone BDD Elm Ember ES6 HTTP Javascript Python Rails React RSJX TDD Typescript Vue
195: WebAssembly & WASI (Lin Clark & Till Schneidereit)
Apr 19, 2019 • 37 min
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 conversation they discuss the current…
194: My PGP Shame
Apr 12, 2019 • 47 min
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 thoughtbot guides, and in this chat they…
193: A Thing I Know Almost Nothing About
Apr 5, 2019 • 47 min
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 the heart of the conversation talking…
192: I Don’t Want to Think That Hard
Mar 29, 2019 • 34 min
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, Scala, Elm, and plenty in between.…
191: Open Source is Created By Humans (Devon Zuegel)
Mar 22, 2019 • 39 min
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…
190: Going Steady With a Platform
Mar 15, 2019 • 52 min
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 comparing the core native platforms (Android and iOS), the languages, developer tooling and IDEs, and…
189: It’s Gonna Work, Definitely, No Problems Whatsoever
Mar 1, 2019 • 41 min
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, focusing on VCR and some of the benefits…
188: A Function by Any Other Name
Feb 22, 2019 • 38 min
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…
187: Convincing People Not to Build Software
Feb 15, 2019 • 41 min
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 conversation as Matt describes the past few weeks…
186: Let’s Duplicate Stuff
Feb 1, 2019 • 38 min
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 and…
185: The Transactional Fallacy (Avdi Grimm)
Jan 25, 2019 • 35 min
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 for…
184: Fun, Interesting, and I Wouldn’t Recommend It
Jan 18, 2019 • 41 min
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 the…
183: Former Robots Smashing Into Other Giant Robots (Ben Orenstein)
Jan 11, 2019 • 49 min
On this episode of the Bike Shed, Chris is joined by former thoughtbotter Ben Orenstein. Ben & team are currently feverishly working towards launching Tuple.app, an app for remote pair programming. The conversation covers the unique technical challenges…
182: What’s it in the Service Of?
Jan 4, 2019 • 39 min
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, CSS…
181: Strong Types and a Functional Flair
Dec 14, 2018 • 41 min
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…
180: A Citizen of the Internet (John Resig)
Dec 7, 2018 • 39 min
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, one of the most influential libraries…
179: We CAN Just Use a Form!
Nov 30, 2018 • 49 min
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 of a test suite guiding your work.…
178: Friday is For Spikes
Nov 16, 2018 • 38 min
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. During their conversation…
177: Tricking Computers Into Doing Things
Nov 9, 2018 • 32 min
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 role as a developer. Chris &…
176: The Machines Will Learn
Nov 2, 2018 • 37 min
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 to…
175: Tell Me When It’s Real
Oct 26, 2018 • 42 min
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. Specifically,…
174: I’ve Watched a Lot of Vim Courses
Oct 18, 2018 • 30 min
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…
173: A Combinatoric Explosion of Nulls
Oct 12, 2018 • 50 min
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…
172: What I Believe About Software
Oct 5, 2018 • 55 min
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…
171: What If We Just Used a Form?
Sep 21, 2018 • 45 min
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…
170: Less Charted Territory
Sep 14, 2018 • 49 min
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 enthusiasm…
169: Fear Driven Development
Sep 7, 2018 • 38 min
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…
168: An Escape Rope of Learning
Aug 31, 2018 • 42 min
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 know a…
167: I Feel Like We Should’ve Solved This By Now
Aug 24, 2018 • 43 min
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! tmate -…
166: Are Services the New Rewrite?
Aug 10, 2018 • 37 min
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 about…
165: The Tables Have Turned
Aug 3, 2018 • 40 min
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. bin/setup ActiveStorage confi on heroku Rails encrypted…
164: A Piece of My Identity
Jul 27, 2018 • 47 min
163: Insert Some Colons For Me
Jul 20, 2018 • 38 min
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. Visual Studio Code Language Server Protocol Vim-LSP Seamlessly Navigate Vim and tmux Splits…
162: You Have Ruined Your Rails App (Sam Phippen)
Jul 13, 2018 • 42 min
Sam Phippen joins us to discuss the maintenance burden of supporting old Rubies, service oriented architecture, and explorations of GraphQL and graph databases. Sam Phippen on Twitter RFC: rspec-rails versioning strategy Mix deps documentation NP-hardness…
161: Re-Incoherence
Jul 6, 2018 • 39 min
Rails performance, rebalancing coherence, and themes from career advice requests. Jeff Atwood on Rails performance An analysis of memory bloat in Active Record 5.2 134: Fastributes | The Bike Shed 17: Railing About Performance (Sam Saffron) | The Bike…
160: Praise Hands Emoji 🙌 (Vaidehi Joshi)
Jun 29, 2018 • 47 min
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 our…
159: Confusing and Hard to Use
Jun 22, 2018 • 23 min
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! Diesel v1.3.0 RailsConf 2018: Up And Down Again: A Migration’s Tale by Derek Prior…
158: This is How I Ruin Meetings (Aaron Patterson)
Jun 15, 2018 • 47 min
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. Aaron Patterson (@tenderlove) on Twitter Parkinson’s Law of…
157: Whiz-Bangy Frontend Thing (Chris Toomey)
Jun 8, 2018 • 42 min
Chris Toomey joins Derek to talk about their shared experience in Elm and their excitement about GraphQL. Chris on Twitter The Reader Monad — Part 1 Kind (type theory) Monads are like burritos Scala.js GraphQL | A query language for your API Tell Me When…
156: It’s a Commercial Enterprise (Olivier Lacan)
Jun 1, 2018 • 41 min
We speak with Olivier Lacan about KeepAChangelog.com, tooling improvements for better developer experience, and the emotional impact of shutting down CodeSchool.com Keep a Changelog RubyGems Specification Reference Why Won’t Bundle Update? bundler-stats…
155: Abstractions on Abstractions (Alex Sullivan)
May 25, 2018 • 44 min
Amanda is joined by Alex Sullivan, Android developer at thoughtbot, to discuss the state of React Native and its new competitor from Google, Flutter. Flutter - Beautiful native apps in record time WTFs per minute Kotlin/Native thoughtbot’s BART sign React…
154: We All Have Work to Do (Eileen Uchitelle)
May 18, 2018 • 41 min
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! Eileen on Twitter The Future of Rails 6: Scalable by Default -…
153: 🎶 I Would Lose 3,000 Crates, and I Would Lose 12,000 More 🎶
May 11, 2018 • 36 min
Is the bug in Postgres? Sean takes over operations of crates.io and keeps himself very busy. We also wrap up our experience at RailsConf. Logical Replication in PostgreSQL 10 Heroku Error Codes: H12 Materialized view Run a query with a LIMIT/OFFSET and…
152: I Look For Stories (Nickolas Means)
May 4, 2018 • 31 min
We catch up with Nick Means at RailsConf and discuss storytelling, "human error", advice for job seekers, and the idea of licensing software developers. Nick on Twitter The Bike Shed #71: It’s a Total Hack - Our earlier episode discussing Nick’s previous…
151: Scheming About Schema
Apr 27, 2018 • 35 min
Derek & Sean discuss their final preparations for RailsConf, the role of Diesel’s schema.rs is in comparison to schema.rb in Rails, and how Derek took down production. The American Chopper meme, explained PaperCall.io Diesel schema in depth
150: I Fight For the Users
Apr 13, 2018 • 47 min
Derek and Sean discuss ethical concerns in software development and the prospect of licensing software developers. XFINITY Data Usage Center Reply All: A Pirate in Search of a Judge Design’s Lost Generation Cambridge Analytica scandals, explained Blogger…
149: E With an Umlaut
Apr 6, 2018 • 33 min
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. TracePoint documentation Unicode Normalization Forms Buildkite Struct…
148: Baseball is a Legacy App
Mar 30, 2018 • 36 min
Amanda and Sean discuss Flutter, modeling the game of baseball, and the state of persistence and networking in Android. Flutter - Beautiful native apps in record time Dart programming language Functional reactive programming (FRP) Vuforia | Augmented…
147: Is a Lambda a Sandwich?
Mar 23, 2018 • 34 min
Derek shares his experiences with new features in Ruby 2.5 before we turn our ire towards daylight savings time and timezones once more. Using yield_self for composable ActiveRecord relations What is the difference between a block, a proc, and a lambda in…
146: —YOLO
Mar 16, 2018 • 29 min
Amanda, Derek, and Sean discuss style guides, automated code formatting, and the cycle of disillusionment in development work. elm-format elm-analyse Android Kotlin Style Guide Swift API Design Guidelines Do we need to move away from Elm? "Native Code" in…
145: The Internet is Ruined
Mar 9, 2018 • 35 min
Derek and Sean commiserate about the latest generation of MacBooks, Slack, and the state of the Web. SoftRAM thoughtbot/laptop: A shell script to set up a macOS laptop for web and mobile development. derekprior/dotfiles Salon.com wants to use your PC to…
144: Fisher Price™ Tools
Mar 2, 2018 • 29 min
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. RailsConf 2018 Schedule “Just an Ass-Backward Tech Company”: How Twitter Lost the Internet…
143: It’s Hard to Have a Secret Rocket
Feb 16, 2018 • 31 min
We chat about the Falcon Heavy launch before discussing a couple of issues Derek encountered when upgrading to Rails 5.2 Starman Double rocket landing Rails 5.2.0 RC1: Active Storage, Redis Cache Store, HTTP/2 Early Hints, CSP, Credentials Disallow raw…
142: What if We Didn’t Do Any of This?
Feb 9, 2018 • 42 min
Derek and Sean debate the value provided by database migrations written in your programming language of choice versus those written in SQL. RailsConf 2018 MySQL Automatic Updating for TIMESTAMP and DATETIME CockroachDB - the open source, cloud-native SQL…
141: Go Baby, Go
Feb 1, 2018 • 31 min
We discuss the challenges in parallelizing development work and also take a look at what’s coming soon in Rails 5.2. The Mythical Man-Month: Essays on Software Engineering Hype cycle Write once, run anywhere ActiveStorage Paperclip Rails 5.2.0 RC1 Work at…
140: A Sign of… Stability?
Jan 25, 2018 • 43 min
Sean and Derek argue the semantics of versioning and opine for automated reporting on more structured changelogs as a feature of future package managers. Rust API Evolution Guide Embracing Promiscuous Gemfiles bundle outdated mix hex.outdated Keep a…
139: Red, Green, Refactor (Alex Clark & Sean Doyle)
Jan 19, 2018 • 33 min
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. Testing Rails Four-Phase Test Test-Driven Development Course on Codecademy…
138: I Don’t Know How the World Works Anymore
Jan 12, 2018 • 48 min
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. Announcing Diesel 1.0 - Congratulations to Sean and all committers.…
137: What’s Up, Docs
Jan 5, 2018 • 48 min
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…
136: Propagating Conspiracy Theories
Dec 22, 2017 • 38 min
Amanda joins Derek to discuss KotlinConf, powerful IDEs, our Ralphapalooza hackathon, and the React Native experience from a native mobile developer’s perspective. A View State Machine for Network Calls on Android - Amanda’s KotlinConf talk How to Build a…
135: A Series of Unfortunate Examples
Dec 13, 2017 • 33 min
We discuss a possible ActiveRecord bug Derek encountered and explore the ambiguity of SQL formatting best practices. thoughtbot podcast swag Working around ActiveRecord joining the same table twice Pagination in Crates.io ActiveRecord auto-explain removed…
134: Fastributes
Dec 8, 2017 • 31 min
We share our favorite talks from RubyConf and discuss how Sean has made ActiveRecord attributes allocation significantly faster with Rust. Saving Ruby From the Apocalypse by Jason Charnes Esoteric, Obfuscated, Artistic Programming in Ruby by Yusuke Endoh…
133: A Very Special Bike Shed
Nov 23, 2017 • 31 min
Sean is on to a significant ActiveRecord optimization using an extension written in Rust and Derek shares an overdue thanks to an excellent manager. Helix Fast Blank Turns out, Rails Fast Attributes might be more on the order of 2x faster! Bootsnap Do I…
132: What Went Well?
Nov 16, 2017 • 36 min
We discuss patterns and anti-patterns encountered in agile retrospectives and revisit a favorite topic: form objects. Running a Retrospective Scrum Sprints Product Design Sprint Auth0 ActiveModel::Dirty Reform Ecto Changeset Lucky, an experimental new web…
131: Nouns For Verbs Sake
Nov 8, 2017 • 39 min
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. factory_bot visitor pattern Visitor pattern and double dispatch in ruby Sean drives for Lyft
130: I Grew Up in Balloons
Nov 3, 2017 • 33 min
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. Integrate with ActionDispatch::SystemTest Database Cleaner RSpec 3.7 has…
129: You Wanna Talk About GraphQL?
Oct 27, 2017 • 47 min
We discuss an issue in the interaction between Rails, Chrome, and the HTTP referrer policy before Derek shares his love for GraphQL. Referrer-Policy Origin header Rails/Chrome/no-referrer issue GraphQL GraphQL-Ruby GraphQL-Batch Sangria Elixir 1.6…
128: And Now for My Next Trick!
Oct 19, 2017 • 45 min
We discuss strategies for fighting back against project management overhead, refactoring workflows, and on-call rotations. Make the change easy, then make the easy change. Refactor in a Branch Chaos Monkey What languages support anonymous union types?
127: Bike Shed: Discovery
Oct 13, 2017 • 52 min
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.…
126: Speaking of Compilers…
Oct 5, 2017 • 35 min
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. Sputnik lamp Contracts.ruby Don’t use exceptions for flow control Crystal Matz doesn’t like…
125: Less Bad Than Expected
Sep 28, 2017 • 44 min
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. Stripe Mock Web Valve Seeding Faker Speed Up Tests by Selectively Avoiding…
124: Nope. Nope. Nope. Nope.
Sep 20, 2017 • 41 min
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. What Your Conference Proposal is Missing by Sarah…
123: Too Many Parameters
Sep 13, 2017 • 33 min
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. 16 positional arguments Ruby’s keyword arguments Rails Param Stronger Params Meditations on a Class Method…
122: Name That Smell
Sep 5, 2017 • 41 min
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. The thoughtbot laptop script bin/setup VCR Mystery Guest How to…
121: The Bike Log (Jerod Santo)
Aug 21, 2017 • 43 min
The Changelog’s Jerod Santo joins the show to talk finding time for, sustaining, and funding open source development. Jerod Santo The Changelog Request for Commits Open Collective Apple Machine Learning Journal Ryan Bigg Quits Open Source Maintenance Kill…
120: Free Apples
Aug 3, 2017 • 36 min
We do some follow-up on open source fundraising and discuss some interesting patterns in Derek's new client project. Sean is back from leave Patronizing Open Source by Devon C. Estes thoughtbot is hiring webpack on Open Collective How to Charge for your…
119: Questions Are For the Weak (Caleb Thompson & Matt Mongeau)
Jul 26, 2017 • 51 min
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. Video Version myglu.com (The project being discussed) Sandi Metz’ Rules for Developers…
118: Nonsense In, Nonsense Out
Jul 18, 2017 • 45 min
We discuss the economics of remote work, ActionDispatch::SystemTest in RSpec, and the use of Patreon on open source projects. Robin Sparkles ActiveRecord::Base.reload ActiveRecord::Base.becomes RSpec integration with ActionDispatch::SystemTest Ruby…
117: S.A.L.T. (Justin Searls)
Jul 10, 2017 • 46 min
We chat with Justin Searls about testing, programmer personality types, programming communities, and putting spreadsheets on the Internet. Justin Searls Justin’s RailsConf Keynote My Favorite Way to TDD by Justin Searls Searls-Briggs Type Indicator Test…
116: A More “WALL-E” Future
Jun 28, 2017 • 36 min
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. Twitter…
115: I Don’t Need Another Google Hangout (Cecy Correa)
Jun 22, 2017 • 42 min
We talk with Cecy Correa about how to hire and get hired. Cecy Correa Girl Develop It Austin on Rails Why We’ve Stopped Saying “Culture Fit” — and What We’re Saying Instead Jobs at Return Path Jobs at thoughtbot
114: Reasonably Thread Safe
Jun 16, 2017 • 39 min
We discuss a tiny DOS caused when upgrading thoughtbot.com 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. Meaningful schema diffs in Rails 5.1…
113: Have You Considered Rust? (Matt Casper)
Jun 9, 2017 • 29 min
We talk to Matt Casper about contributing to Diesel, Rust’s ecosystem, and the next big thing. Matt Casper Matt’s Diesel’s Diesel contributions The Rust Book DHH’s RailsConf Keynote Rocket Clap Justin Searls’ RailsConf Keynote Procore Jobs
112: Lifecycles Are Dead, Long Live Lifecycles!
Jun 1, 2017 • 33 min
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"! I/O ‘17 Recap JetBrains Android Studio Android Architecture Components Joda-Time Library Anko
111: Trike Shed (Aaron Patterson)
May 25, 2017 • 31 min
We talk with Aaron Patterson about Ruby and Rails upgrades, and the goal of making Ruby 3 three times faster than Ruby 2. Aaron Patterson DHH’s RailsConf Keynote warning: private attribute? Ruby 2.4 Rounding Changes Ruby 3x3 optcarrot: A NES Emulator for…
110: Green Chips
May 18, 2017 • 32 min
What’s the deal with green potato chips? Also: RailsConf wrap up and an AST pass refactor for Diesel. Green Potato Chips Baby Ruby Stickers Justin Searls - How to Program Eileen Uchitelle - Building Rails ActionDispatch::SystemTestCase Framework Alex…
109: The Final Countdown
Apr 26, 2017 • 32 min
Follow up about Service Objects and Computer Engineering. Plus, RailsConf prep, code slide woes, and modal pop-ups. Sandi Metz- Gilded Rose Kata Ben Orenstein- How to Talk to Developers Sean @ RubyConf Portugal ‘15- With smoke machine and intro music…
108: Have You Tried Rebooting?
Apr 18, 2017 • 41 min
Is your operating system hosed? That might be related to Rails! We also chat about the trend towards compiled languages. RailsConf Shirts- Please only order if you will be at RailsConf to pick up! The pre-show The listen gem breaks my laptop Interpreted…
107: “Composition” Over Inheritance
Apr 14, 2017 • 52 min
Single table inheritance, polymorphic associations, state machines and service objects, oh my! RailsConf Shirts- Please only order if you will be at RailsConf to pick up! How to Win at Monopoly and Lose All Your Friends Touchdown! SpaceX’s 1st Reused…
106: Nerd Sniping (Chris Toomey)
Apr 5, 2017 • 46 min
Chris Toomey joins to talk about Tell Me When It Closes, Haskell, and GraphQL. Chris Toomey - twitter, github Tell Me When It Closes RFactory Nerd Sniping Add an alias for reverse_merge to with_defaults “I write Haskell because I’m dumb” GraphQL GitHub…
105: For Display Purposes Only
Mar 30, 2017 • 46 min
Complexity vs Functionality, Validations vs Database Constraints, plus whatever a Cap’n Proto is. Second Quests in Zelda Games 5 Useful Tips For A Better Commit Message Sean’s rocket equations Atlas Rocket Family Removed deprecated mathn extentions is…
104: It’s Dangerous to Refactor Alone!
Mar 23, 2017 • 42 min
Google’s carrot-and-stick HTTPS policies and how playing The Legend of Zelda is like refactoring. Google Will Soon Shame All Websites That Are Unencrypted HSTS Super Mario Bros. 3 right-side scroll artifacts How the Nintendo NES Zapper Worked, and Why It…
103: I Just Want to See Green Dots
Mar 16, 2017 • 53 min
When a hash isn’t a hash, GitHub as your Résumé, and porting Crates.io to Diesel. ActionController::Parameters should implement reverse_merge Expression-oriented programming language Jobs at thoughtbot Set up the groundwork for a port to Diesel Window…
102: To the Moon!
Mar 10, 2017 • 49 min
Going "to" the moon, hidden type errors in our Rails apps, the process of talk prep, and the S3 outage. SpaceX to Send Privately Crewed Dragon Spacecraft Beyond the Moon NASA’s Orion Spacecraft Retro looking rendering of SLS git push && git paid Rocket My…
101: Hey, You Leaned!
Feb 28, 2017 • 50 min
Amanda and Sean discuss the evolving stages of open source projects, native apps vs web apps, and space. AppVeyor Electron Xamarin is the Microsoft-owned cross-platform mobile application company. NASA TRAPPIST 1 Announcement Spaceflight Now…
100: Nouns You Can Verb
Feb 24, 2017 • 51 min
Sam Phippen helps us celebrate episode 100, as we discuss Diesel bugs, REST, RPC, and more. Diesel LEFT JOINS bug Google Spanner Information Schema Standard Spanner Beta Paper HTML5 formaction Must be Willing to Relocate to San Francisco GRPC Protocol…
99: Just Sayin’
Feb 16, 2017 • 46 min
We go into the weeds with MySQL and discuss the virtues of database migrations written in SQL. Big and little endian mysql_real_escape_string Should we set CLIENT_IGNORE_SIGPIPE for MySQL? Why Uber Switched From Postgres to MySQL Default Primary Keys Are…
98: I Have Good Branch Hygiene
Feb 8, 2017 • 35 min
We discuss complexity and progressive disclosure, garbage collection, and the impenetrable nature of Git. Chris Lattner on Accidental Tech Podcase Simple Made Easy Garbage Collection was a feature of Objective-C 2.0 The listen gem breaks my laptop Go GC:…
97: One Equals Zero
Jan 31, 2017 • 29 min
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 Rails.…
96: Who Stinks?
Jan 27, 2017 • 39 min
Baby Ruby, Ruby refinements, Rails discoverability, and annoying polyfills. Refinements Refinements in Rails Remove required field polyfill from Rails-UJS Safari is the New IE Safari isn’t the new IE: it’s the user-centric web - "Send me onesies!" Thank…
95: Click ‘Cat’ to go ‘Home’ (Morgane Santos)
Jan 20, 2017 • 28 min
Amanda is joined by Morgane Santos to discuss the experiences, technology, and development of Virtual Reality. VR For Burn Relief Vive Maya for Beginners GoogleVR Dev Resources GitHub Game Off Get Cardboard Gray Area Thank you to our sponsor this week,…
94: It’s Not Supposed to Work
Jan 11, 2017 • 44 min
We discuss the pain of custom inputs in HTML, ActiveRecord bugs, and Rust's Fire Flower. Sean’s Haircut Select2 Query with ‘exists’ subquery fails to bind parameters Rocket Diesel JSON data type Rust is More Than Safety Safety is Rust’s Fire Flower Fire…
93: I Have Complex Feelings
Dec 21, 2016 • 41 min
The impact of codes of conduct on community behavior, shipping a mobile app written in Elm, and yet more to say on SemVer. Diesel 0.9 Change Default Primary Keys to BIGINT The Rust Code of Conduct Ruby Code of Conduct issue Rails Code of Conduct…
92: The Queen of Canada
Dec 16, 2016 • 38 min
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. An awesome gif Justin Trudeau’s Shopify selfie The Toonie Slow Counting in Postgres N+1 is a…
91: I Think It’s a Fish
Dec 8, 2016 • 41 min
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. Can I Use: HTML 5 validations…
90: Freedom Units
Dec 1, 2016 • 35 min
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. How to Solve a Rubik’s Cube GenServer Agent Mocks and Explicit…
89: There Will Never Be One Right Way (Ashley Williams)
Nov 23, 2016 • 37 min
Ashley Williams joins the show to discuss NPM, Yarn, and the general package manager ecosystem. Ashley Williams Yarn yarn install—flat Peer Dependency —override for Elixir dependencies npm shrinkwrap Clarifying the Roles of the .gemspec and Gemfile Zero…
88: How Many Puppies Now?
Nov 18, 2016 • 29 min
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. Expandable RecyclerViews and You - Amanda’s DroidCon talk. Deckset How to Talk to Developers Is UTF-8 a…
87: The Refrigerator Took Down Your Website
Nov 10, 2016 • 32 min
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. Deprecate the behavior of AR::Dirty inside of after_(create|update|save) callbacks Distributed Denial of…
86: Purple Train, Purrrple Train (Ian Anderson)
Nov 2, 2016 • 30 min
Derek chats with Ian Anderson about developing a mobile app for iOS and Android with React Native. Ian on Twitter Purple (T)Rain GenServer Agent React Native Flow Elm Native UI React Native Web
85: Are We in a Black Hole?
Oct 26, 2016 • 53 min
We briefly ponder the very nature of our existence before discussing edge cases and interesting bugs encountered in ActiveRecord. Podcast Patreon Survey We May Be Living Inside a Black Hole Are We Living in a Computer Simulation? The R-7 Rocket Family…
84: Why Are Manhole Covers Round?
Oct 19, 2016 • 50 min
What do we look for when reviewing job applications, interviewing candidates, and pairing with prospective co-workers? thoughtbot Podcast Listener Survey Yarn: A new package manager for JavaScript About NPM Jobs at thoughtbot LAMP Stack recruitment in…
83: Canadian Halloween
Oct 12, 2016 • 27 min
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. Diesel 0.8.0 Derive Rust Macros…
82: I Just Want a Dog in a Spacesuit
Oct 5, 2016 • 50 min
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. Podcast Patreon Survey Clearance password reset fix iwantacve.org…
81: Is This Really a CVE?
Sep 28, 2016 • 27 min
Derek and Sean talk through how to handle a security vulnerability that was reported for Clearance, a user authentication library. Cardboard Jankowski Prevent password reset token leak via HTTP referer The Meta Referrer Tag CVE Bundler Audit Ruby Advisory…
80: Back to the Futures
Sep 21, 2016 • 39 min
What’s appropriate for a web middleware stack to provide? Does Rack do too much? Plus, our thoughts on NeoVim and Vim 8. Futures-RS My Life With NeoVim Vim 8 Asynchronous functions patch discussion gitsh Xi Editor Stop saying "the ____ monad"
79: Comments in Your Queries
Sep 14, 2016 • 41 min
Derek and Sean talk through some complex SQL before they examine the calluses developed from years of writing software on OS X. Press 1 for Lobby Ransack EXTRACT Pivot Tables crosstab Derek’s crosstab Query Window Functions Set Returning Functions…
78: I’m an Adult and I Choose Java
Sep 9, 2016 • 50 min
Sean and Amanda discuss the state of Android Development in 2016. Java, Kotlin, Dependency Injection, and Functional Reactive Programming, oh my! Amanda Hill on Twitter Android Debug Bridge (ADB) Android Studio - The Official IDE for Android JetBrains…
77: The Floors Are Not Zero Indexed
Aug 31, 2016 • 32 min
How can you get your open source pull request merged? Elevator number pad Sorry, video of Sean’s Abstractions Conference talk is not yet available Clearance PR discussion driven by contributors Module#prepend is the end of alias_method_chain - by Justin…
76: The One With Laila & Brenda
Aug 17, 2016 • 40 min
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, The…
75: I’m Not Sure That’s Better
Aug 11, 2016 • 33 min
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. RSpec Bisect RSpec 3.3 Release Notes Git Bisect Unused The Halting Problem Diesel 0.7
74: A Dip in the Connection Pool
Aug 3, 2016 • 34 min
We talk through design considerations for a user-visible custom query builder for a high volume ecommerce system. Ransack Using Arel to Compose SQL Queries PgBouncer establish_connection AWS in Plain English ApartmentEx Underscore + Lodash
73: Probably In My Other Pants
Jul 28, 2016 • 43 min
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. Derek on Full Stack Radio The Laila and Brenda Show Google’s Project Tango devices Pokemon Go gets full access…
72: Surprises Cut For Time (Aaron Patterson)
Jul 20, 2016 • 43 min
Aaron Patterson joins us from RailsConf for puns, performance improvements in Ruby, and AirDropping cats. Gorbypuff Virus UTF8 vs UTF16 vs UTF32 What happened to the Rails 4 queue API? Koichi talks about AOT compilation Aaron hates encoding. This isn’t a…
71: It’s a Total Hack
Jul 13, 2016 • 42 min
Inspired by Nickolas Means’ fantastic RailsConf keynote, we discuss the corollaries between Lockheed Martin’s Skunk Works projects and our software development projects. Sean’s DXRacer Chair Skunk Works by Nickolas Means Lockheed Martin F-35 Lightning II…
70: Make Small Things (Sandi Metz)
Jul 6, 2016 • 64 min
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. The Bike Shed - Episode 1: Sandi and Derek’s Rules Sandi Metz’ Rules For Developers Sandi on the…
69: No More Drills
Jun 29, 2016 • 40 min
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. Jonathon Coulton: IKEA Derek’s thoughtbot ♥️ Elixir tweet. Fuck Bullshit HTC Vive Office…
68: Mostly Undocumented
Jun 22, 2016 • 33 min
Sean runs through a Rails bug that sits at the intersection of several magical and confusing Rails features. accepts_nested_attributes_for inverse_of autosave The proposed fix for 5.1.0 Datomic
67: Longtime Listener, First Time Caller (Rafael Franca)
Jun 15, 2016 • 39 min
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. Rafael Franca Rails Contributors…
66: Make Ruby Scripting Great Again (Terence Lee)
Jun 8, 2016 • 39 min
We talk with Terence Lee of Heroku, Bundler, and mruby-cli fame about Apache Kafka and the future of mruby scripting. Terence Lee Kafka I Can’t Believe It’s Not A Queue: Using Kafka with Rails - Terence’s RailsConf talk. mruby mruby-cli Traveling Ruby…
65: Free as in Puppy (Katrina Owen)
May 25, 2016 • 45 min
While at RailsConf, we talk with Katrina Owen about finding metaphors for software development, the successes and mistakes of Exercism.io, and the benefits of providing code reviews. Katrina Owen Katrina’s conference talks Make the change easy, then make…
64: Open Mic SF
May 18, 2016 • 55 min
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. Croniker Monica Dinculescu on emoji Gabe learns about emoji on Twitter thoughtbot…
63: Types Are Only Good If You Use Them
May 11, 2016 • 38 min
Derek and Sean discuss some recent issues with exciting language features like pattern matching, macros, and static types. Pattern Matching Primitive Obsession Stringly Typed Sean’s open source programming streams Sean’s Twitch channel
62: Shipping is the Fastest Way to Get Somewhere
May 4, 2016 • 34 min
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. Make Diesel faster than a SQL String How can an ORM be faster than a SQL string?…
61: I’m Not Telling You My Birthday
Apr 27, 2016 • 31 min
"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? DATE_PART or EXTRACT Triggers Using EXPLAIN Using…
60: Remote Control (Katherine Fellows)
Apr 20, 2016 • 38 min
KF (Katherine Fellows) joins the show to chat about successful BridgeFoundry events and creating environments where remote developers, junior and otherwise, can thrive. KF Clojure / West ClojureBridge BridgeFoundry Self Conference Conway’s Law Negativity…
59: I Wish They Wouldn’t Do That
Apr 13, 2016 • 40 min
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. Bash on Ubuntu on Windows I’ve Just Liberated My Modules by Azer Koçulu A discussion…
58: Nobody Gets Fired For Buying IBM
Apr 6, 2016 • 45 min
Should you rewrite or refactor? What should you consider as you weigh this decision and what exactly constitutes a rewrite anyway? Things You Should Never Do, Part I - Joel Spolsky on Software Rewrites What does the phrase "Nobody ever got fired for…
57: Mutability Ruins the Whole Party (José Valim)
Mar 30, 2016 • 55 min
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. José Valim on Twitter Introducing unifying calendar types to Elixir Falsehoods programmers believe about time and…
56: Most People Aren’t Building Trello
Mar 23, 2016 • 38 min
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. ActiveRecord is Reinventing Sequel Ryan Bigg gives up his open source projects Maybe We Could Tone…
55: Hot Dog is Not a Dessert
Mar 9, 2016 • 40 min
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. Ides of March Presence validation of virtual attribute not firing appropriately…
54: Argument Error
Mar 2, 2016 • 42 min
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. GoodTImes, Timex,…
53: Cache Machine
Feb 24, 2016 • 43 min
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? The Road to 2 Million Websocket Connections in Phoenix by Gary Rennie Toxic…
52: You’re an Elixir Developer Now
Feb 17, 2016 • 46 min
Derek and Laila discuss Derek’s excitement for Elixir and Phoenix. Is Elixir as fun to write as Ruby? Is Phoenix a better Rails? Elixir and Phoenix Routes in Phoenix Using ctags with Elixir Static Assets in Phoenix ja_serializers ecto Is There a JSON…
51: Is Sim City Running? (Steve Klabnik)
Feb 10, 2016 • 43 min
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. Steve Klabnik - twitter,…
50: Open Mic
Feb 3, 2016 • 28 min
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. Matt Sumner Hunchpig Podcast Haskell Programming The Lambda Calculus Learn You a Haskell…
49: A More Practical Haskell
Jan 27, 2016 • 34 min
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. What is the difference between traits in Rust and typeclasses in Haskell? What is a pure…
48: Is Everyone Trying Their Best?
Jan 21, 2016 • 34 min
Software is broken. In this episode, Derek and Sean discuss why exactly it’s broken, and what we can do to make it better. The origin of "software engineering" The Coq Proof Assistant NASA’s 10 rules for developing safety critical code The differences…
47: Star Wars Oranges
Jan 13, 2016 • 54 min
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 Star Wars Fruit What is Kerberos? Safe navigation operator (AKA the…
46: Don’t Breathe, Save the Planet
Jan 6, 2016 • 34 min
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. Don’t Breathe DHH on The Bike Shed DHH’s ActionCable Demo Fixing Scenic view dumping…
45: I Think I’d Prefer An Error to Nonsense
Dec 23, 2015 • 47 min
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 they…
44: It Won’t Crash… It Might Crash
Dec 17, 2015 • 47 min
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. Diesel Semantic Versioning SemVer for…
43: That’s DOCTOR Internet Technologist
Dec 9, 2015 • 50 min
We talk about lessons learned from teachable moments both in the moment and decades later. Teachable moment Safe Operations for High Volume PostgreSQL by Paul Gross How to Create Postgres Indexes Concurrently in ActiveRecord Migrations by Dan Croak…
42: That’s Incredibly Ambitious (Grayson Wright)
Dec 2, 2015 • 37 min
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. Announcing…
41: Ugh, I Have to Write Web Apps in This Thing
Nov 25, 2015 • 35 min
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. The Elixir Programming Language Phoenix Web Framework Announcing Ex Machina ex_machina on Github…
40: ActiveRecord Deprecated Persistence
Nov 18, 2015 • 34 min
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? 40 Prevent Information leaking In Rails Different ways to update in Rails The Perils of Uniqueness…
39: Okay with Instability (Yehuda Katz)
Nov 11, 2015 • 67 min
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. Remove The Stress, Pick a Deadline Writing Software by DHH…
38: Ugh, Forms
Nov 3, 2015 • 40 min
Laila and Derek discuss how they have handled forms with complex validation requirements and how to make these forms have a smooth user experience. HTML Form Validations HTML5 Validation Browser Support Parsely JS Client Side Validations SimpleForm 7 Ways…
37: The Web is Faster Without Garbage
Oct 29, 2015 • 44 min
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…
36: Python Unchained
Oct 15, 2015 • 50 min
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? Writing your first Django app The Python…
35: GitHub Ate My Résumé
Oct 7, 2015 • 40 min
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. Set your Git email address to an address you own "forever". Git…
34: README.md
Sep 29, 2015 • 38 min
Derek is joined by Laila Winner to discuss Neo4j, the importance of fantastic documentation, and the different types of documentation a project requires. PLIBMTTBHGATY Neo4j Teach, Don’t Tell Let’s talk about ecosystem documentation - Grading…
33: Just Put it in a Module, Man
Sep 22, 2015 • 40 min
Sean and Derek take some listener questions, and dig into DRY. DRY Single Responsibility Principle (SRP) Inherited Resources Sandi Mets - All The Little Things Sign up for Sandi Metz’s "Chainline" newsletter Sunk cost fallacy "Inheritence is not for…
32: Bug For Bug Compatibility
Sep 15, 2015 • 50 min
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. Developing on Windows PowerShell Cygwin Does Windows fork? Modern.ie ievms Internet Explorer…
31: Oxidizing an ORM
Sep 8, 2015 • 48 min
Are provably correct queries of interest to you? Sean gives a rundown of what a Rusty ORM might be like to build. String, str, and CStr. What’s a marker trait? Rust macros. Rust compiler plugins. hy·gien·ic ˌhī-ˈjē-nik, -ˈje- also -jē-ˈe-nik Sean’s ORM…
30: Just Go to Slash Wibble
Sep 1, 2015 • 46 min
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. The Bike Shed listeners make disable_with default on submit_tag Derek…
29: Django Unchained (Mike Burns)
Aug 25, 2015 • 23 min
Sean is joined by Mike Burns to discuss what Ruby and Rails can learn from Python and Django. Mike Burns Python’s map Django George’s Sleeping with the Enemy talk from RailsConf 2013 A False Midnight Python doctest Python Decorator Library
28: Minisode 0.1.1
Aug 18, 2015 • 9 min
Did you know Rails has no integration test suite? What could go wrong? ActionController::Parameters no longer inherits from Hash
27: I’ve Got 29.97 Problems (and codecs are some)
Aug 11, 2015 • 43 min
Sean and Derek circle back on HTTP before diving into unsafe rust, and finally the merits of a small standard library. HTTP2 implementation status libffmpeg unsafe rust uninitialized memory in Rust stdx - the missing batteries of Rust NPM 3.0.0 NPM…
26: My Cache is in the Cloud
Aug 4, 2015 • 33 min
This week, Sean and Derek discuss performance and inheriting code. In a stroke of complete madness, Derek decides that turbolinks isn’t that bad. Spree Browserscope network profile details RFC2616 is Dead Original HTTP/1.1 connection limit Updated…
25: Throwing the Schema Out With the SOAPy Bathwater (Gordon Fontenot)
Jul 28, 2015 • 51 min
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…
24: You Look Good in a Lab Coat (Richard Schneeman)
Jul 21, 2015 • 41 min
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…
23: Why Did They Call it Rust?!
Jul 14, 2015 • 43 min
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 win a…
22: No Capes! (Eileen Uchitelle)
Jul 7, 2015 • 38 min
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…
21: The “Best” Canada (Godfrey Chan)
Jun 30, 2015 • 23 min
Rails Core Team member Godfrey Chan joins the show to demystify rails bug hunting and contributing. Godfrey’s RailsConf talk: Prying Open The Black Box The Waltons Say Goodnight Canada gem Rails Bug Templates Rails Contributing Guide Travis Container…
20: Intentionally Excruciatingly Painful
Jun 23, 2015 • 41 min
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. Verifying partial doubles Decent exposure Defining helpers directly on…
19: The Oncoming Storm (Sam Phippen)
Jun 16, 2015 • 29 min
Derek and Sean are joined by Sam Phippen from the RSpec core team to discuss RSpec mocks, testing strategies, and minitest. RSpec 3 adds composable matchers Spies were added to RSpec in 2.14 Using any_instance to test legacy code minitest RSpec’s…
18: This Podcast is Rigged (But Not Animated)
Jun 9, 2015 • 39 min
Sean and Derek discuss rails asset dependencies before diving into an overview of animation techniques and C extensions. Rails Assets Gemify Assets for Rails Non-digested asset names in Rails 4 Animation Rigging Unreal Engine Unity Physically Based…
17: Railing About Performance (Sam Saffron)
Jun 2, 2015 • 46 min
We chat with Sam Saffron about performance, benchmarking, and database migration strategies. Sam Saffron Discourse rack-mini-profiler stackprof RubyBench default_scope SQL Views Scenic - Database view support in Rails Grafana Docker Types of Rails schema…
16: Wizards Are Hard to Kill
May 27, 2015 • 36 min
Grab Bag! Derek and Sean talk about math, augmented reality, RailsConf wrap up, Minimum Viable Products, Accessibility… Homography Isomorphism Homomorphism Sean’s Augmented Reality PoC Kerbal Space Program Derek’s talk on Cultivating Code Review Culture…
15: Might As Well Be About Trains (Sarah Mei)
May 19, 2015 • 31 min
Sean, Derek, and Sarah Mei talk about conference speaking, refactoring, and OO vs FP problems. Sarah Mei What Your Conference Proposal Is Missing Conway’s Law Will Ruby 3.0 Be Statically Typed? Sarah on Twitter
14: An Acceptable Level of Hassle (David Heinemeier Hansson)
May 12, 2015 • 54 min
This week, we’re joined by DHH and discuss microservices, monoliths, shared abstractions, and the fate of Action Cable. DHH’s Keynote Microservices Sacrificial Architecture Scaling Mercurial at Facebook has_secure_password BCrypt Request Forgery…
13: Begrudging Applause (Aaron Patterson)
May 5, 2015 • 53 min
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. Video-version of this podcast! DHH’s RailsConf Keynote Aaron’s RailsConf Keynote Action Cable Long…
12: A Poor Man’s binding.pry
Apr 17, 2015 • 31 min
Derek and Sean talk about naming, debugging, and the anxiety of conference talks. Sean fixes Android tooling in one line. Martin Fowler on naming objects after patterns Dash for OS X Alfred for OS X The beauty of Intellisense in Visual Studio Derek’s…
11: Form-ing Opinions
Apr 3, 2015 • 37 min
Sean and Derek talk about the state of Android tooling, refactoring journeys, and an approach to rails form objects. Dalvik executables limited to 65,536 methods ProGuard Stylesheet limits in Internet Explorer A refactoring jounrney in animated gif form.…
10: I Don’t Get Functional Programming
Mar 20, 2015 • 40 min
Pat Brisbin joins Derek to discuss the many advantages of Haskell programming. note: at 27:01 Pat says "referential integrity" when he meant "referential transparency"; he’s very sorry. Maybe Haskell 50% off xmonad tiling window manager Learn You A…
9: Monorails, For the Kids
Mar 6, 2015 • 34 min
Sean and Derek discuss Monoliths, Service Oriented Architecture, and the new Adapter Specific Type Registry in Rails 5. Guest Sean Furret Haskell and tmux Upcase trails. Hashie Considered Harmful Adapter Specific Type Registry
8: Attributes API, Relation#or, Paid Open Source
Feb 20, 2015 • 37 min
Derek and Sean discuss what the Attributes API enables, the addition of Relation#or and paid open source. Sean’s attributes API is "finished" Attributes API documentation PostGIS ActiveRecord Adapter composed_of Yehuda’s RailsConf Keynote on the power of…
7: At the Car Wash
Jan 30, 2015 • 48 min
Derek and Sean talk trade schools, sneaky bugs, bad method names, before_filters, and the Superbowl. Turing School and Metis trade schools. "Car Wash" by Rose Royce Sean introduces accessed_fields to the ActiveRecord Attributes API. Peek for insights into…
6: Shh! Library Under Maintenance
Jan 16, 2015 • 42 min
Sean and Derek discuss thoughtful deprecations, backwards compatibility, and other joys of library maintenance. Trailblazer Clearance Ember 2.0 - Stability without Stagnation Ruby 2.2 on Rails 3.2. Now merged, but unreleased. The original removal of ARel…
5: Rails is Not Your Architecture
Dec 31, 2014 • 39 min
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. Rails Does Not Define Your Application Architecture…
4: Put Everything on the Front End
Dec 12, 2014 • 38 min
Derek and Sean discuss hunting Rails performance regressions and techniques for improving performance in your web applications. Speeding Up Rails 4.2 StackProf Flame Graphs 5 Reasons to Use Protocol Buffers Instead of JSON For Your Next Service Key Frames…
3: Flipping the Script
Nov 28, 2014 • 25 min
Sean and Derek take a fresh look at the tradeoffs in writing CoffeeScript and whether we should be using an ES6 transpiler instead. destructiring assignment in JavaScript function currying in CoffeeScript The existential operator in CoffeeScript Stockholm…
2: Rails 4.2
Nov 17, 2014 • 35 min
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 to raise a clarification on one of Sandi’s rules discussed in episode #1. Ernie Miller’s RailsConf Talk The…
1: Sandi & Derek’s Rules
Oct 31, 2014 • 27 min
Sean and Derek discuss lessons learned from following Sandi Metz’ rules on a project and the overall impact of rules on code. Sandi Metz’ Rules Ruby Rogues, episode #87, where Sandi tells us the rules at 1 hour, 18 minutes, 27 seconds in. Practical Object…