Podcast

The Bike Shed

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.

Episodes

  • 283: Who's The User?

    Mar 02 2021

    On this week's episode Steph and Chris discuss a listener question around managing content within an application, weighing options like an integrated CMS, headless CMS provides, proxying the content, and supporting marketing and landing pages without needing a developer for every change. They also provide an update on dead man's snitch and a preview of a rails 6 upgrade on the horizon and dreams of database switching. This episode is brought to you by SPOTcon. Tune in to Scout APM'...more

  • 282: What is Normal?

    Feb 23 2021

    On this week's episode, Chris adds Dead Man's Snitch to a personal project and considers "what is the app doing at runtime?" as he touches on the importance of creating observable systems. Steph shares analyzing a site's traffic and using Apache Bench for simple load testing. They also respond to a listener question about creating environment-specific data for data-intensive applications. This episode is brought to you by SPOTcon. Tune in to Scout APM's first confere...more

  • 281: Finding That Middle Ground

    Feb 16 2021

    On this week's episode, Steph and Chris tackle a listener question around switching from mostly-developing, to mostly-communicating and the tactics they've used to balance these facets of their work. They also discuss the new error objects in Rails 6.1, the value of breakable toys, and the importance of keeping presentational concerns out of the data model. This episode is brought to you by ScoutAPM. Give Scout a try for free today and Scout will donate $5 to the open source project o...more

  • 280: Stable New New

    Feb 09 2021

    On this week's episode Chris and Steph discuss a new tmux feature and wvim, a script that streamlines shell command edits. They also discuss the value of taking a sabbatical and protecting downtime. Steph shares some exciting news about thoughtbot and they answer a listener question about GraphQL and whether your app really needs an API? This episode is brought to you by ScoutAPM. Give Scout a try for free today and Scout will donate $5 to the open source project of your choice when you d...more

  • 279: Seeking Calm

    Feb 02 2021

    On this week's episode Steph and Chris discuss some of characteristics and behaviors they've observed in high-performing teams, touching on pull request sizing and prioritizing code review, deploy cadence, error monitoring and response, and minimizing the number of themes being tackled by the team in parallel. They also touch on moving to Netlify and simplifying deploys, an odd edge case with 303 vs 302 status code, and the quirks of the ActiveRecord or method. This episode is brough...more

  • 278: Beliefs in the Firmware

    Jan 26 2021

    In this week's episode, Steph and Chris discuss the popular testing themes and questions that emerged during the RSpec training course, reflecting on which testing "rules" still apply and when to break the rules. They also chat about the results of the 2020 State of JS survey and repurposing email validations to be helpful vs strict. This episode is brought to you by ScoutAPM. Give Scout a try for free today and Scout will donate $5 to the open source project of your choice when...more

  • 277: Making Communication Easier

    Jan 19 2021

    In this week's episode, Steph and Chris discuss some of their methods for helping out reviewers of their pull requests and keeping code review moving along smoothly. They also discus the shift to async communication and the tools, processes, and workflows that come with a shift to async. Does standup still have a place in an async world? Tune in to find out. This episode is brought to you by ScoutAPM. Give Scout a try for free today and Scout will donate $5 to the open source project of y...more

  • 276: Ride-Along Files

    Jan 12 2021

    On this week's episode, Chris shares a new favorite tool for querying JSON and Steph revisits a previous deployment issue. They also dive into the new features in Ruby 3, ponder the idea of adding types to Ruby, revisit breaking changes, and round out the conversation with a listener question about managing tmux sessions. This episode is brought to you by ScoutAPM. Give Scout a try for free today and Scout will donate $5 to the open source project of your choice when you deploy fx - C...more

  • 275: In Search of An Acronym

    Jan 05 2021

    On this week's episode, Steph and Chris revisit their discussion about testing rack rewrite redirect logic, mystery guests, DNS configuration, and trying very hard to not be too dogmatic. Steph describes her recent work trying to debug failing deploys with Concourse, Kubernetes, and Google Cloud while touching on blue-green deployment and secrets management. Finally, Chris talks about porting a svelte project to typescript and the trade-offs of adding Types upfront vs types after the fact, a...more

  • 274: Top 10 Review for 2020

    Dec 29 2020

    On this week's episode, Chris and Steph reflect on their top themes and technical picks for 2020. This episode is brought to you by: ScoutAPM - Give Scout a try for free today and Scout will donate $5 to the open source project of your choice when you deploy ExpressVPN - Click through to can get an extra 3 months free on a one-year package. Tailwind CSS BEM CSS Styled Components css-modules BikeShed Episode: I'm a Designer Now ActiveModel Error Objects Razer Kiyo Upright Go 2 S...more

  • 273: Revisiting 2019, A Top 10 Review

    Dec 22 2020

    On this week's episode, Steph and Chris begin wrapping up 2020 with a review of their 2019 top 10 list. They share what's changed, what's stayed the same, and what they'd like to see more of in the coming year. This episode is brought to you by: ScoutAPM - Give Scout a try for free today and Scout will donate $5 to the open source project of your choice when you deploy Indeed - Click through and get started with a free seventy five dollar credit for your first job post ...more

  • 272: Hacking the Gibson

    Dec 15 2020

    In this week's episode, Chris undertakes long-running background jobs that are performing duplicate work and adding significant load on the database. Steph shares her initial take of the book "Soul of a New Machine", a non-fiction account that chronicles the development of a mini-computer in the 1980s. They also dive into the question "how can teams turn a slow, hard to maintain test suite from a liability into an asset?" and touch on how to identify highly-functioning ...more

  • 271: Is That Your Final Answer?

    Dec 08 2020

    On this week's episode, Chris describes his continued explorations with Svelte specifically bringing TypeScript into the mix. Steph discusses the first cohort for the RSpec training and some related testing questions around third party APIs. They round things out with a listener question about managing permissions and roles, with a brief detour around single table inheritance vs polymorphic associations. Oh, and Steph rented goats to mow her lawn. 🐐 This episode is brought to you by: S...more

  • 270: Both Nothing and Deeply Special

    Dec 01 2020

    In this week's episode, Chris and Steph discuss redirecting requests for various hostnames to one canonical host, creating student personas to improve educational content, and walking away from failing tests. They also embark on a Hollywood themed tour of RSpec mocks, stubs, and spies, when to use each approach, and discuss the types of tests they do (or do not) write. This episode is brought to you by: ScoutAPM - Give Scout a try for free today and Scout will donate $5 to the open sour...more

  • 269: Things are Knowable (Gary Bernhardt)

    Nov 17 2020

    Steph's taking a quick break this week, but while she's away, Chris is joined by special guest Gary Bernhardt. Gary is the creator of Destroy All Software screencasts as well as his more recent venture, Execute Program. Between Execute Program, his screencasts, conference talks, and more Gary has consistently provided some of the highest quality and most impactful educational content around building great software and has been a huge inspiration to the hosts of this show. In the episode...more

  • 268: Getting Your First-Through-N Jobs

    Nov 10 2020

    On this week's episode, Steph discusses the value of conducting student research when creating course content and Chris revisits a recent architecture decision to use Svelt and Inertia. They also explore the challenges developers face in acquiring their first job and share insights for those looking for their next big role. This episode is brought to you by: ExpressVPN - Click through to can get an extra 3 months free on a one-year package. ScoutAPM - Give Scout a try for free today and...more

  • 267: Shiny New Things

    Nov 03 2020

    On this week's episode, Steph describes her unique new project where they're building and presenting a training course around RSpec, testing, and TDD specific to an organization's codebase. Chris then runs some architecture choices by Steph to discuss a collection of new technologies he's considering, and more generally how we think about our experimentation budget. This episode is brought to you by: ScoutAPM - Give Scout a try for free today and Scout will donate $5 to the ...more

  • 266: Spring is My Least Favorite Season

    Oct 27 2020

    On this week's episode, Chris and Steph share mixed-feelings about Spring preloader and how to use Spring just for tests. They also dive into troubleshooting an OpenSSL error, Postgres generated columns, and creating moments of contentment. This episode is brought to you by: ScoutAPM - Give Scout a try for free today and Scout will donate $5 to the open source project of your choice when you deploy Datadog - Click through to get a free 14-day trial and a free Datadog t-shirt! Scale...more

  • 265: There Are No Free Lunches

    Oct 20 2020

    On this week's episode, Steph and Chris chat about database transactions and job queues, building static sites with GatsbyJS and NetlifyCMS, the performance impacts of front end frameworks and static content, and lastly they catch up on Hacktoberfest and the complexities of encouraging and supporting work in open source. This episode is brought to you by: ScoutAPM - Give Scout a try for free today and Scout will donate $5 to the open source project of your choice when you deploy Datadog...more

  • 264: How to Win Friends and Influence Processes

    Oct 13 2020

    On this week's episode Steph and Chris discuss the ins and outs of joining teams, building trust, and working together to improve processes and communication. They also touch on some lesser used features of bundler, and revisit a discussion around Rails maintenance periods thanks to some listener feedback. This episode is brought to you by: Indeed - Click through and get started with a free seventy five dollar credit for your first job post ExpressVPN - Click through to can get an extra...more

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

    Oct 06 2020

    Steph's taking a quick break this week, but in her absence, Chris is joined by Dave Rupert. Dave is the lead developer at Paravel, co-host of the Shop Talk Show podcast, creator of The Accessibility Project, and an all-around prolific and thoughtful maker of digital things. Chris and Dave chat about creating and sharing content like podcasts and blogs and how to get past your inner editor. They discuss the web platform and accessibility, and finally, they round out the conversation with a c...more

  • 262: Good Idea, Terrible Idea?

    Sep 29 2020

    On this week's episode, Chris introduces a new segment called "Good Idea, Terrible Idea?" as he considers introducing a read-only mode to avoid interrupting users during scheduled downtime. Steph has started a new project and explores the idea of merging separate, but similar, applications into one codebase. They also dive into micro-service environments to discuss the difficulties of integration testing and potential strategies. This episode is brought to you by: ScoutAPM -...more

  • 261: A Jenga Tower of Lets and Context

    Sep 22 2020

    On this week's episode, Steph and Chris tackle a listener question around composition over inheritance, especially in the context of Rails which makes regular use of inheritance. Dependency injection, OOP vs FP, frameworks vs app code -- they hit it all! They also chat about burnout and how they've dealt with it, using jq to investigate differences between json responses, refactoring tests and using let, and Steph shares her recent learnings about graphviz. This episode is brought to...more

  • 260: N+1s For Days

    Sep 15 2020

    On this week's episode, Chris shares a tale of performance improvements and a recent discussion about replacing a REST API with GraphQL. Steph dives into migrating a database column to restrict input and dropping database columns safely. They also discuss when to abstract code (a topic that surprisingly, they may not agree on) and running "Unused" to identify dead code. This episode is brought to you by: ScoutAPM - Give Scout a try for free today and Scout will donate $5 to t...more

  • 259: That's Not How Numbers Work

    Sep 08 2020

    On this week's episode, Steph and Chris tackle the thorny topic of 10X engineers. Do we think they really exist? What characteristics make an individual more effective, and more importantly, what can they do for a team? To round out the conversation, they chat about rewrites and when they do and don't make sense, Ruby 2.7 keyword argument deprecation warnings, and a listener question revisiting Ruby popularity and what languages would we learn if we couldn't write Ruby anymore. T...more

  • 258: Digital Gardeners

    Sep 01 2020

    On this week's episode, Steph and Chris discuss a git-blame feature that supports bypassing less helpful commits. They also revisit a discussion about Dependabot PRs and recent performance adjustments, sharing which strategies worked and which ones didn't. They also discuss the dreaded three-state boolean, designing a system for cacheability, and using Ruby's magic comment to freeze string literals. This episode is brought to you by: ScoutAPM - Give Scout a try for free today an...more

  • 257: How Late On a Friday Can You Deploy?

    Aug 18 2020

    On this week's episode, Steph & Chris take a deep dive into all things technical debt. How do you know when your code has reached "good enough"? When might we purposefully knowingly take on technical debt? How do we tackle existing technical debt without halting new development? How can we tell high-interest, hair on fire debt from "ehh, it's fine" debt that we can let lie? Tune in to find out! This episode is brought to you by: ScoutAPM - Give Scout a try fo...more

  • 256: Rational Pessimism

    Aug 11 2020

    On this week's episode, Chris shares his recent adventures of working with a team that prioritizes async-first communication and Steph revisits a previous discussion around the use of web sockets and optimistic user interfaces. They also dive into the classically hard question "should we rewrite the app?" and share survival tips for learning to type on a split keyboard. This episode is brought to you by: ScoutAPM - Give Scout a try for free today and Scout will donate $5 to th...more

  • 255: Aiming for 'Capable'

    Aug 04 2020

    On this week's episode, Steph and Chris chat about the relatively new Rails view_component library from GitHub, Steph talks about her work with Storybook as part of extracting and defining a design system, and they chat about the attr_extras project with convenience helpers for ruby & Rails apps. They round out the conversation with some keyboard updates (ErgoDox onramp is steep!) and project rotation notes. This episode is brought to you by ScoutAPM. Give Scout a try for free today a...more

  • 254: Listener Mailbag Roundup Rodeo

    Jul 28 2020

    On this week's episode, Steph celebrates passing an important test and discovers an API that returns different data than it's provided while Chris asks the important bikeshed question "What is the proper maximum line length?". They also roundup the latest listener questions and discuss establishing freelancing rates, property-based testing, and time tracking skills that help them manage competing priorities. This episode is brought to you by ScoutAPM. Give Scout a try for ...more

  • 253: Find Yourself Through The Art of Podcast

    Jul 21 2020

    On this week's episode, Steph and Chris have a brief chat about Snowpack, a new and ultra-speedy bundler in the front-end world, and revisit a conversation around namespacing models in Rails. The conversation then shifts to a discussion of the ins and outs of hosting a podcast and how folks might be able to dive in if they're interested in starting one themselves -- from selecting topics, to the hardware and software they use, to the guiding philosophy in how to discuss technical concept...more

  • 252: I'm a Designer Now

    Jul 14 2020

    On this week's episode, Steph and Chris discuss leveraging the Unix utility sed to search files and remove unnecessary test setup, using Vim's Arglist to create a to-do list for file edits, and budgeting time for fancy command-line scripts. They then take a deep dive into the world of utility-first CSS and TailwindCSS. This episode is brought to you by: ScoutAPM - Give Scout a try for free today and Scout will donate $5 to the open source project of your choice when you deploy Expre...more

  • 251: Absent-Minded Whistling

    Jul 07 2020

    On this week's episode, Steph and Chris discuss using JSONB to store survey responses and the differences between JSON and JSONB, using (or not using!) exceptions in Ruby and the fail keyword, the pros and cons of namespacing models in Rails to organize features, and a new recommendation for running tests from vim. This episode is brought to you by ScoutAPM. Give Scout a try for free today and Scout will donate $5 to the open source project of your choice when you deploy! Seagull Mic Drop...more

  • 250: To Infinity and Beyond

    Jun 30 2020

    On this week's episode, Chris and Steph discuss the importance of using inclusive language, branching into new branch names, and strategies that encourage the use of inclusive terminology. Chris also shares his latest experience with merging two systems that were split apart back into one system, tackling conflicting foreign keys and competing auth libraries. Steph discusses using polling vs web sockets to monitor work being completed in a background job and communicating to the user the var...more

  • 249: What Would You Say You Do Here?

    Jun 23 2020

    On this week's episode, Steph and Chris trade some consulting and everyone comes out a winner. Steph talks about a win and a loss on the battlefield of refactoring, and Chris shares a related effort around identifying and removing unused code. Chris shares a pattern his team has been using with a special "demo" flag to provide small enhancements but otherwise keep sales demos within the product. Steph then shares some friction related to using dependabot on her team's project ...more

  • 248: Here Be Dragons

    Jun 16 2020

    On this week's episode, Steph shares a keyboard confession and interest in migrating to a split keyboard layout. Chris dives into creating static error pages that are independent of the app while still leveraging the app's CSS framework. They also respond to a listener question about Conventional Commits and discuss when automation tooling feels helpful vs harmful. ErgoDox EZ Keyboard Keyboardio Atreus Tailwind CSS PurgeCSS CSS Used Chrome Extension Conventional Commits SemVer semantic-...more

  • 247: Acronyms By Moonlight

    Jun 09 2020

    On this week's episode, Steph and Chris discuss potential approaches to a complex client-side workflow, Chris shares the highs and lows of his recent adventures revising the caching in a REST API, Steph shares an Ember testing pro-tip and then explores the questions it brings up, and lastly, they revisit prettier-ruby and it's fantastic configuration setup. This episode is brought to you by Datadog. Click through to get a free 14-day trial and a free Datadog t-shirt! prettier-ruby con...more

  • 246: A True Movement (Pariss Athena)

    Jun 02 2020

    We are pausing our normal tech-talk this week in support of the ongoing protests and to re-share the #BlackTechTwitter episode with Pariss Athena from our sister podcast, Giant Robots. During the past week, millions of people across the country have participated in protests in response to the killing of George Floyd and the systemic racism that plagues our nation. For everyone fighting for equality and justice, we see you, we love you, and we support you. Black lives matter. Black culture matt...more

  • 245: Developer Therapy (German Velasco)

    May 27 2020

    On this week's episode, Steph is joined by thoughtbotter German Velasco. German and Steph chat about remote work and the rewards and challenges of their new(ish) roles as Development Team Leads. German also shares that he is writing a book! German shares his approach for defining a MVB (Minimum Viable Book), ideas for how to collect feedback, and plans for publishing. Lastly, they discuss a vim plugin that lives up to the hype. This episode is brought to you by Datadog. Click through to get...more

  • 244: Existential JavaScript

    May 19 2020

    On this week's episode, Steph troubleshoots a mysterious Ember test failure that can't find a visible element, and Chris recounts an exciting three-act adventure that spans N+1 queries, caching, and SQL window functions. Steph also touches on upgrading to Ember Octane and Glimmer components and Chris shares a new helpful tool for drawing architecture diagrams. Window.find() Dash Wat - Lightning talk by Gary Bernhardt Draw.io batch-loader SQL Window Function Advanced ActiveRecord Queryi...more

  • 243: I'm Not a Couch Worker

    May 12 2020

    On this week's episode, Chris shares his recent explorations of railway oriented programming (hint: not what you think!) while doing his best to avoid words like "monad" and "functor" (he does not succeed in this effort). Steph updates on her quest for the ultimate personal note taking app and some misadventures in DNS and networking, and they touch on their shared search for ergonomics in the home office world we all live in these days. This episode is brought to you by...more

  • 242: As Few Consonants as Possible

    May 05 2020

    On this week’s episode, Chris and Steph share their excitement for Roam Research and formatting Ruby with Prettier Ruby. They also discuss writing test coverage for an important GDPR process, embracing async communication, and share their preferred strategies for knowledge sharing within teams and the broader community. Roam Research Bear DayOne Reveal.js Github Draft Pull Requests Prettier Ruby CoC GDPR Stack Overflow for Teams Basecamp Twist The Golden Rule for programmers Support The Bike S...more

  • 241: What If We Just Put a Phone Number?

    Apr 28 2020

    On this week's episode Steph and Chris dig into MVP thinking and asking how we can write as little code as possible before finding out if any user will actually want the thing we're building. They also tackle a listener question around Vim and the general ROI on honing our developer tools, discuss some of the subtleties of HTTP and forms as well as the difficulties when half of our UI is in React and the other half Rails, and lastly chat a bit about their adaptation to full-time remote ...more

  • 240: A Framework in Motion Tends to Stay in Motion

    Apr 21 2020

    On this week's episode, Chris and Steph discuss troubleshooting a race condition, trusting your intuition and pessimistic locks. They also touch briefly on TailWind CSS before diving deep into first impressions of Inertia.js. This episode is brought to you by ExpressVPN. Click through to get three months for free. ActiveRecord::Locking::Pessimistic#with_lock Derek Prior's blog post - "Validation, Database Constraint, or Both?" TailWind CSS Inertia.js Sponsored By:ExpressVPN...more

  • 239: Admins All the Way Down

    Apr 07 2020

    On this week's episode, Steph and Chris discuss what it really means to make a project "open source". Is it just about making the code publicly available, or should we be considering licenses and responsibility to update? They also discuss the need for breaks and structure now that everyone is working from home, revisit previous discussions around building functionality for admin users and the various admin systems out there, and they round out the conversation with a discussion a...more

  • 238: All the Single Quotes

    Mar 31 2020

    In this week's episode, Chris shares details about his new greenfield project, implementing static pages with high voltage, opting for just-in-time architecture decisions and working with various admin libraries. Steph discusses various ways to advocate for change across larger engineering teams, recognizing when it's important to push for change vs letting go of strong opinions, and how to gain buy-in from your team. Enroll in our free online-workshop on going remote Being Human in th...more

  • 237: I Love The Squiggles

    Mar 17 2020

    On this week's episode, Steph and Chris discuss the pros and cons of memoization, Chris revisits the discussion around the value of react snapshot tests as well as his continued explorations with Inertia.js while Steph updates us on living in a schema-less world, and they round out the conversation with a listener question about pairing tools, setup, and approaches. This episode is brought to you by ExpressVPN. Click through to get three months for free. memoization Jest snapshot tests R...more

  • 236: What's GNU With You?

    Mar 10 2020

    On this week's episode, Chris and Steph discuss recent challenges associated with upgrading React Router and uploading files to Amazon S3. Steph also shares her latest reading adventure in cybersecurity and Chris reflects on his time at thoughtbot, how his approach to web development has shifted over the past seven years, and what he plans to do next. The Cuckoo's Egg by Cliff Stoll GNU UNIX POSIX PAX React Router Enzyme React Testing Library Amazon S3 FTP Inertia.js New Pepperjuice Tr...more

  • 235: Take a Deep Breath

    Mar 03 2020

    On this week's episode, Steph and Chris dig into their shared love of refactoring. How do they think about it, have they ever reverted a refactor, thoughts on deferred refactoring, and more. They also discuss some positive team habits, snapshot testing, the importance of keeping your testing as close to production as possible, and finally, Chris shares some big personal news. Snapshot tests styled-components rollup react-testing-library "Don't worry about this tech debt, we'l...more

  • 234: No More Weird Stuff

    Feb 25 2020

    On this week's episode, Chris and Steph respond to a listener question about the complex tradeoffs between craft, preferences, and business needs. They also revisit Steph's recent work with mirage factories, Chris's struggles with test failures, and discuss Steph's recent use of the acts_as_paranoid gem. This episode is brought to you by Clubhouse. Click through to get 2 free months on any paid plan. Mirage.js Creating Ember Data models on the client with Mirage FactoryBot Sam...more

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

    Feb 18 2020

    On this week's episode, Steph is joined by Joël Quenneville. It's the season for CFPs (call for proposals) and Joël shares insights about his past conference talk submissions, both the accepted and rejected. They also discuss writing habits that help increase blogpost frequency and helping teams upgrade their Rails application. Joël's "Rolling Random Romans" talk Steph's "Building Compliant Health Tech Products" Workshop Joël's "Working with Maybe&q...more

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

    Feb 11 2020

    On this week's episode, Chris and Steph celebrate the new Bike Shed website and logo! Steph finds a new way to optimize her keyboard happiness and Chris dabbles with Zsh auto-suggestions. They also explore the team and technical trade-offs in the pursuit of clean code and respond to a listener question about building products that meet strict security policies. This episode is brought to you by Clubhouse. Click through to get 2 free months on any paid plan. Karabiner-Elements Oh My Zsh ...more

  • 231: Fun and Useful

    Feb 04 2020

    On this week's episode, Steph shares more of her Ember adventures, specifically sharing some of her work with the Mirage API mocking and prototyping library, and her search for factories and more ergonomic data in tests. Chris shares some struggles he's had recently with automation and tooling around deployment and releasing packages, and they discuss the inherent trade-offs that we have to consider when automating anything. Lastly they touch on Twitter's alt text accessibility fea...more

  • 230: The Broken Road

    Jan 28 2020

    On this week's episode, Chris and Steph revisit the long-lived feature branch Chris has been working on and chat about adventures with Yalc. They also dive into the common questions and concerns associated with coding bootcamps, thoughtbot's exciting new partnership with Resilient Coders, and what it would be like to "start over". This episode is brought to you by Clubhouse. Click through to get 2 free months on any paid plan. yalc thoughtbot + Resilient Coders Bless the Br...more

  • 229: Nothing but Positive Fire

    Jan 21 2020

    On this week's episode, Steph and Chris catch up in their first recording of 2020. They discuss git workflows and the surprisingly strong opinions often associated with them, testing at all levels of your application, Steph gives a quick summary of her Ember adventures, and they round out the discussion with some new years systems building and Star Wars reviews. This episode is brought to you by Clubhouse. Click through to get 2 free months on any paid plan. Ember Documentation JSON Schem...more

  • 228: Friends and Food (George Brocklehurst)

    Jan 14 2020

    On this week's episode, Steph is joined by George Brocklehurst, a Development Director in the NYC thoughtbot office. Steph and George chat about the variety of projects and technologies that caught their attention during thoughtbot's recent internal hackathon. They also dive into Gitsh, a dedicated shell for Git commands, as they chat about preferred git workflows and George shares his recent adventure in updating Gitsh to support tab completion. FirebaseFlowGitsh - An interactive shell ...more

  • 227: Hacks and Cheats

    Jan 07 2020

    On this week's episode, Chris and Steph discuss their recent holiday hackathon efforts building a game in Elm. They discuss their experiences with Elm and the broader prospects of using Elm in more production applications. They also discuss the new git subcommands "git switch" and "git restore", and round things out with a listener question concerning FactoryBot and "minimum viable factories".Git new commands (git switch & git restore)Live playable version o...more

  • 226: Bespoke Nonsense

    Dec 31 2019

    On this week's episode, in celebration of the new year, Thom shares the 2019 blooper reel! Words are hard and here's the audio to prove it. Listen to all of the silly mishaps, goofs, and general nonsense captured in between the moments of "professional podcasting". Chris and Steph also reflect on their top themes of 2019 and discuss New Year Systems vs New Year Resolutions.Karabiner-ElementsRailsConf 2016 - The Guest: A Guide To Code Hospitality by Nadia OdunayoAtomic Habits: J...more

  • 225: Pepper in Some Security

    Dec 10 2019

    On this week's episode, Steph gets Chris to share his biggest developer regrets over the years. They also revisit a favorite topic of estimation and story points, and round out the conversation with some details from the world of application security.ActiveSupport secure_compare and fixed_length_secure_comparethoughtbot's Application security guidePepper (cryptography)How did this complicated RegEx come to be? (Derek's tweet)Vim RFactoryWhat I Believe About Software - Bike Shed episo...more

  • 224: The One Manhattan Rule

    Dec 03 2019

    On this week's episode, Chris catches us up on his latest keyboard adventures and Steph shares her first impression of working with Ember.They also dive into Chris's experience triaging errors Sentry, their love for Elm, how teams achieve a consistent velocity, and Steph's upcoming workshop on how to stay agile when building a healthcare product. To bring it home, they respond to a listener who's wondering when is it a good idea to convert a loose data structure (e.g.: hash) into a class?Prettie...more

  • 223: Terrible and Easy

    Nov 26 2019

    On this week's episode, Chris and Steph discuss identifying refactoring opportunities by highlighting overly coupled code and Chris announces that he has advanced his vim setup into the 21st century by making the switch to Neovim. Types of CouplingHuskyConquer of Completion PluginDive Into Neovim on UpcaseMastering the Vim LanguageOnramp to VimPostgres Check ConstraintsSupport The Bike Shed

  • 222: That Eureka Moment

    Nov 12 2019

    On this week's episode, Steph and Chris dive into the world of crafting pull requests for optimal code review, as well as the flip side of providing code review. How can we make it easy for reviewers, and as reviewers, how can we make it easy for our teammates to incorporate our suggestions?They also discuss the world of testing, from integration to visual to unit testing, and some of the tools an practices they use at each level.Lastly, they discuss Steph's continued pairing adventures and poss...more

  • 221: An Informed Opinion

    Nov 05 2019

    On this week's episode, Chris and Steph catch up on recent client adventures, revisit their feelings on using let in rspec, and spend a bit of time outside their respective comfort zones. There's also some talk about nearly full-time pairing, mechanical keyboards, debugging thorny datetime issues, and how we interact with our developer tools and workflows.This episode of The Bike Shed is sponsored by Honeybadger.Tuple (remote pairing app)Leopold 660 with Cherry MX BrownsHusky - "git...more

  • 220: Adequately Fun

    Oct 29 2019

    On this week's episode, Chris and Steph chat about their new client projects, VimScript, and ways to automate refreshing materialized views in tests. They also play the game Overrated/Underrated, created by Tyler Owen, and respond to a CS student who is feeling overwhelmed by the various technologies and looking to transition from tutorials to meaningful projects.This episode of The Bike Shed is sponsored by Honeybadger.thoughtbot dotfilesctrlp.vimFZFLearn Vimscript the Hard Waythoughtbot laptop...more

  • 219: Seeking That Middle Option

    Oct 22 2019

    On this week's episode, Steph catches us up on her ever-growing collection of mechanical keyboards, Chris talks about his recent purchase of an apple watch, and they follow up a previous discussion around case-sensitivity (or insensitivity) in URLs and email addresses. They round out the discussion with a chat about writing blog posts and some postgres fun, and finally discuss the merits and drawbacks of monorepos.This episode of The Bike Shed is sponsored by Honeybadger.MechanicalKeyboards.comF...more

  • 218: Finesse in Quitting (Brittany Martin)

    Oct 15 2019

    On this week's episode, Steph is joined by Brittany Martin, an avid Rubyist and the host of the Ruby on Rails Podcast. They discuss Brittany's passion for roller derby and her upcoming Ruby conference talk: "Hire Me, I'm Excellent at Quitting." They also discuss using AWS Serverless, troubleshooting Postgress connection errors and working with Google Pay and Apple Wallet to introduce digital tickets.@BrittJMartin - Brittany on TwitterRuby on Rails PodcastRubyConf 2019 - Hir...more

  • 217: A Vote For Reasonableness

    Oct 08 2019

    On this week's episode, Steph shares an update on her mechanical keyboard adventures and provides a summary for the Ruby pipeline operator being reverted. Chris gets Steph's opinion on a possible improvement around using materialized views in tests and describes a recent debugging adventure he and Steph went on. They also discuss a listener question regarding encouraging companies to use Ruby and Rails and asking how we identify ourselves as developers. Finally, they round out the conver...more

  • 216: I'm Not the Best Criminal

    Oct 01 2019

    On this week's episode, Steph recounts an issue with an email client that lowercases URLs and Chris ponders the art of logging and using structured logs. They also highlight a plugin that improves TypeScript support in Vim, how the Pinterest team celebrates the "retirement" of code, and respond to a listener who is debating between refactoring their app or investing in a full rewrite.TopreLeopold FC660C KeyboardCherry MX SwitchesActiveSupport::MessageVerifierClearanceDeviseActiveSupport Message ...more

  • 215: Start With People

    Sep 24 2019

    On this week's episode, Steph returns from vacation and Chris makes some noise about a fantastic new button. They discuss Steph's continued adventures in search of the perfect mechanical keyboard and then dig into two listener questions on landing a first job as a developer and what frameworks and languages to focus on, as well as discussing some of the common objections to GraphQL.Rails ActionableErrors - Migration ButtonCODE KeyboardKeychron K2 keyboardCassidy Williams on TwitterAvdi C...more

  • 214: Have You Tried Refreshing the Page?

    Sep 17 2019

    On this week's episode, Matt Sumner guest stars to discuss his recent adventures on a project that uses React, TypeScript and GraphQL. Along the way, Matt and Chris discuss VS Code features, Apollo caching and reflect upon their first year as Development Directors. 
RoR Podcast episode with StephEtheriumReactTypeScriptGraphQLTDD
VS CodeApollo
Apollo tooling
ElmReduxGerman Velasco - A Function by Any Other NameGerman Velasco - I Feel Like We Should've Solved This By NowPlucky
thoughtbot i...more

  • 213: Admins Matter Too

    Sep 10 2019

    On this week's episode, Steph discusses a mini design sprint she led to help validate an internal admin tool while Chris muses on the merits of net negative lines of code on a project. They dig into the idea that while code can certainly be an asset, it may also be a liability. They investigate ActiveSupport::MessageVerifier for secure time-sensitive tokens. Steph shares details about her recent visit to the Ruby on Rails Podcast and Chris shares the recording for a talk he gave on understan...more

  • 212: Award Winning Sheds

    Sep 04 2019

    On this week's episode, Steph and Chris share the news that The Bike Shed won the Best Dev Podcast on the Hackernoon Noonies awards! After a bit of celebration, they get back to their normal adventures with a discussion around onboarding covering the importance, approach, and pitfalls that they've seen in their time joining countless teams. They also touch on the relevance and increasing ease of SSL everywhere, and they answer a listener question about technical debt and rewriting applications. ...more

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

    Aug 27 2019

    On this week's episode, Chris and Steph discuss their preferred strategy when building an admin portal (spoiler: it's not using a client-side technology), separating our identity from our preferred technology, coding styles that require greater mental effort, and answer a listener's question about deleting migrations. JQuery Elm Enumerable#drop_while rails dev prime task Active Record Migrations Factory Bot - linting factories Support The Bike Shed

  • 210: Stop Trying to Make Fetch Happen

    Aug 20 2019

    On this week's episode, Steph and Chris discuss mechanical keyboards, combating error fatigue, the joy of admin features and respond to two listener questions about typed vs dynamic languages and various ways to "speed up" third-party API calls. AppSignal New Relic - Six Steps to Combat Alert Fatigue Details and Summary HTML elements Elm Scala Typescript Active Job Action Cable Stimulus Ajax Typheous Rails HTTP Streaming JQuery Become a Sponsor of The Bike Shed!Support The Bike She...more

  • 209: We Will Never Know Enough (Michael Chan)

    Aug 13 2019

    On this week's episode Chris is joined by Michael Chan aka @chantastic, host of the React Podcast and prolific maker and sharer throughout the internets. They discuss Micheal's work on the React Podcast and themes in open source in general, Michael's focus on communication and delivering value, and the honest take that no one has all the answers or a silver bullet. Michael Chan @chantastic - Michael on twitter React Podcast Michael's Blog Michael's writing on dev.to Hot Garbage - the Death Of ...more

  • 208: Goldilocks and the Three Monitors

    Aug 06 2019

    On this week's episode, Chris and Steph weigh-in on curved monitors, discuss how pairing improves productivity and team morale, and respond to two listener questions inquiring what makes Rails successful and new project nerves. Vote for us for 'Best Dev' Podcast in this year's Noonie Awards. Rails react-testing-library React Elm active_model_serializers RABL Jbuilder Ruby Scala Python Support The Bike Shed

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

    Jul 30 2019

    On this week's episode, Steph and Chris discuss a handful of utilities that help with their workflows and GitHub, and then dive into a handful of ActiveRecord, SQL, and postgres-related topics. They discuss safe vs unsafe migrations when dealing with larger volumes of data, adding an index safely in migration without downtime, and bringing postgres enums into Rails. Vote for us for 'Best Dev Podcast' in this year's Noonie Awards. This episode of The Bike Shed is sponsored by Indeed Prime ...more

  • 206: No-One Wants to be the Canary

    Jul 23 2019

    On this week's episode, Steph and Chris discuss working with Django, Angular, and explore the new features released in Ruby 2.7.0-preview1! They also respond to a listener's question regarding the trade-offs of using client state management tools like NgRx and Redux. Vote for us for 'Best Dev' Podcast in this year's Noonie Awards. Python Django Angular TypeScript MySQL GraphQL Ruby Ruby 2.7.0-preview1 Manual Compaction for MRI's GC submitted by Aaron Patterson IRB - Interactive Ruby S...more

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

    Jul 09 2019

    On this week's episode, Chris is joined in a live recording from RailsConf by the one and only Aaron Patterson. They discuss Aaron's many RailsConf keynotes, his recent work on Rails view rendering and his three-year-long effort to bring more advanced garbage collection to Ruby which will finally be seeing the light of day. And of course, plenty of puns. This episode of The Bike Shed is sponsored by Indeed Prime Aaron’s Closing Keynote - RailsConf 2019 Aaron on GitHub Aaron on Twitter DHHs K...more

  • 204: I Don't Like Rest

    Jul 02 2019

    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 they approach client relationships and share thoughtbot's Agile-like process. Slack GitHub - Pull Request Review React Angular Postgres MySQL REST RPC GraphQL PostGraphile Ruby PostGraphile Pair programming Agile Manifesto Extreme Programming- K...more

  • 203: A Blessed Monkeypatch (Eileen M. Uchitelle)

    Jun 25 2019

    On this week's episode, we revisit RailsConf 2019 for another live recording, this time with Eileen M. Uchitelle, GitHubber and rails core team member. Eileen joins Chris to discuss her RailsConf talk on how GitHub maintained a custom fork of Rails for years, how they finally moved off it, and what lessons we can take away from their experience. They also discussed Eileen's recent work on automatic database switching coming in Rails 6, microservices and monoliths, and getting into working on Rai...more

  • 202: I Left it All on The Dance Floor

    Jun 18 2019

    In this week's episode, Chris and Steph discuss how working with typed-languages influences their work with dynamic languages. They also chat about the benefits of pair programming, tracking performance events using Rails' Instrumentation API and respond to a listener's question about how to structure code that doesn't fit neatly within the default Rails' structure. Elm React TypeScript Scala JavaScript "Making Impossible States Impossible" by Richard Feldman "Working with Maybe...more

  • 201: Artisanally Indented Code (Kevin Deisz)

    Jun 11 2019

    On this week's episode, Chris is joined by Kevin Deisz, CTO of CultureHQ, live from RailsConf. They discuss Kevin's RailsConf talk on preevalution in Ruby, but dig further into Kevin's core philosophies that drive his work on tools like preval. They round out the discussion with Kevin's work on prettier-plugin Ruby, an automated code formatter to finally tame the wild west of Ruby syntax, and the hopeful path to a v1.0 in the not too distant future. Kevin on Twitter Kevin's RailsConf 2019 talk...more

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

    May 29 2019

    On this very special Bike Shed, Steph and Chris celebrate reaching the 200th episode. They discuss the origins of the show and thank some of the wonderful folks who helped make it happen (thanks Derek, Sean, Amanda, Laila, and of course Thom!). They discuss Chris's recent trip to RailsConf and some strategies for making the most of conference attendance. Also, Steph's recent work hosting an intro to web development course. They wrap things up with a series of questions captured live from RailsCo...more

  • 199: Pave That Path

    May 21 2019

    On this week's episode, Steph and Chris talk about PR sizing, load testing (the weird way), and ponder the merits and pitfalls of personal style in code. They also discuss Hertz suing Accenture for undelivered software and the belief that engineers should talk to users! This one truly has something for everyone. prettier elm-format Query objects Prettier plugin-ruby Stop Coding and Start Drawing - Joël's post on drawing Server sent events WebSockets Copy as cURL Google App Engine HireFire Hert...more

  • 198: In Terms of Tradeoffs (Glenn Vanderburg)

    May 14 2019

    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. They also discuss Glenn's famous talk, "Real Software Engineering", and what the term "software engineering" means within our communities. Glenn on Twitter Glenn's RailsConf talk - The 30-Month Migration Glenn's blog...more

  • 197: Don't Go Chasing Waterfalls

    May 07 2019

    Steph and Chris discuss Redux, integration testing strategies, scoping data for React components, and take a question from a listener about improving process and reducing bugs in a complex service-oriented system with a hint of waterfall in their workflow. Angular Apollo Capybara CircleCI CircleCI Orbs Cypress Docker Enzyme GraphQL HTTP Heroku Buildpack Mystery Guests Nightmare.js Normalizer RSpec React Redux Reselect SOA - Service Oriented Architecture Selenium Swagger The Real Story Behind S...more

  • 196: I Can Be Wrong on the Internet

    Apr 30 2019

    On this week's episode, Chris welcomes Steph as the new co-host of The Bike Shed! Chris and Steph discuss their experiences using React, TypeScript, and Angular. Angular Backbone BDD Elm Ember ES6 HTTP Javascript Python Rails React RSJX TDD Typescript Vue Support The Bike Shed

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

    Apr 19 2019

    On this week's episode, Chris is joined by Lin Clark and Till Schneidereit of Mozilla to discuss all things WebAssembly. Lin and Till are helping to lead the development and advocacy around WebAssembly and in this conversation they discuss the current state of WASM, new developments like the WebAssembly System Interface (WASI), and the longer term possibilities and goals for WASM. Lin Clark Till Schneidereit Code Cartoons WebAssembly Rust TC39 JavaScript committee W3C WebAssembly WebIDL Rust w...more

  • 194: My PGP Shame

    Apr 12 2019

    On this week's episode, Chris is joined by Mike Burns, developer in our New York studio, to discuss the ins and outs of application security. Mike recently added a comprehensive Application Security Guide to the thoughtbot guides, and in this chat they discuss some of the high points of the guide, some of the low points of common security holes, and some of the fantastically specific workflows and approaches Mike has for his personal information and security management. Mike Burns on Mastodon ...more

  • 193: A Thing I Know Almost Nothing About

    Apr 05 2019

    On this week's episode, Chris is joined by Edward Loveall, former thoughtbot design apprentice and now thoughtbot developer. After a quick chat about Edward's thoughtbot origin story, podcasts, and DNS, they dig into the heart of the conversation talking about their respective "must have" developer tools on new machines. edwardloveall.com thoughtbot apprenticeship Domain Name Sanity Heroku DNSimple Amazon Route53 Giant Robots podcast Edward's episode on Giant Robots talking about the...more

  • 192: I Don't Want to Think That Hard

    Mar 29 2019

    On this week's episode, Chris is joined by Sid Raval, developer in our New York studio. Chris and Sid chat about functional programming, strong types, and accessibility. Along the way they touch on TypeScript, Haskell, Scala, Elm, and plenty in between. They round out the conversation with a discussion around accessibility and developer tools. Ruby Haskell Scala Elm GHCJS Reflex (frp library for Hasekll) Scala.js TypeScript How Elm Slays a UI Antipattern RemoteData library in Elm Sid's blog po...more

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

    Mar 22 2019

    Chris is joined by Devon Zuegel who recently joined GitHub in the new Open Source Product Manager role. Devon and Chris discuss the complexities inherent to open source including funding models, managing motivation and burnout, different open source models, and end with a discussion around how we can be better open source citizens, both as consumers and maintainers. Devon on Twitter Devon's Blog Nadia Eghbal - Roads and Bridges: The Unseen Labor Behind Our Digital Infrastructure Patreon Sindre...more

  • 190: Going Steady With a Platform

    Mar 15 2019

    On this week's episode, Chris is joined by Alex Sullivan, mobile developer in our Boston office. Alex takes Chris on a tour of the mobile landscape comparing the core native platforms (Android and iOS), the languages, developer tooling and IDEs, and fundamental thinking. They also dip into a discussion around React Native highlighting some of its strengths, as well as areas where native still clearly wins. Finally they touch on Flutter, the newest entrant into the mobile space to round out the d...more

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

    Mar 01 2019

    On this week's episode, Chris is joined by Steph Viccari to chat about Steph's recent experience working on the Hubspot API ruby wrapper as a client project. They discuss strategies for testing third-party APIs, focusing on VCR and some of the benefits and trade-offs inherent to that style of API testing. Following that they chat about using exceptions for control flow, digging into why this seems to be a common pattern in Ruby API wrappers, what the alternatives are, and even a quick tour to Re...more

  • 188: A Function by Any Other Name

    Feb 22 2019

    On this week's episode, Chris is joined by German Velasco for a conversation that fully lives up to the name of the show with plenty of opinions and impressively deep dives on topics that folks outside the world of programming would never think could warrant this much discussion. How much duplication should we have? Is there such a thing as too DRY? Is there ever a need for code comments, really? Lest you worry that Chris & German spend the whole episode just volleying opinions, have no fea...more

  • 187: Convincing People Not to Build Software

    Feb 15 2019

    On this week's episode, Chris is joined by Matt Sumner, development director in our Boston Studio. Chris & Matt start with a quick update on Matt's crypto adventures, and then transition to the core of the conversation as Matt describes the past few weeks of starting a new project and all the decisions that come with that. The project kicked off with a product design sprint to help determine the initial direction for MVP. From there, Matt describes some of the thinking that went into the te...more

  • 186: Let's Duplicate Stuff

    Feb 01 2019

    On this week's episode, Chris is joined by Daniel Colson, developer in our New York studio and current maintainer of all things FactoryBot. Chris & Daniel discuss Daniel's work as maintainer of one of thoughtbot's most popular open source projects and some of the parallels to thoughtbot's consulting work. They then discuss a bit more on the specifics of FactoryBot and what's in store for upcoming versions. To round out the conversation Daniel and Chris also dig into some of the testing rela...more

  • 185: The Transactional Fallacy (Avdi Grimm)

    Jan 25 2019

    On this week's episode, Chris is joined by Ruby Hero Avdi Grimm. They discuss Avdi's history of guiding the Ruby and broader programming communities, his thoughts about where we're at with object-oriented programming, and where he's looking to next for our industry. This conversation touches on a variety of topics both technical and personal. Avdi shares some of his thinking around where we've failed with our approaches to object-oriented programming and viewing the world as transactional, and ...more

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

    Jan 18 2019

    On this week's episode, Chris is joined by Eebs Kobeissi, a developer in our Boston studio, for a discussion encompassing the front end, back end, and everything in between. They start by discussing Eebs' recent work with both Elm & TypeScript, and the relative merits of these two strongly typed languages for the front end. From there they move on to a discussion around the different communities and rates of change in each. Shifting gears, Chris then asks Eebs about his experience with more...more

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

    Jan 11 2019

    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 inherent to building this sort of app (WebRTC & firewalls, oh my), as well as a discussion around the merits and value of pair programming. To round out the conversation, Ben checks in on whether Chris is still "nerding out hard on V...more

  • 182: What's it in the Service Of?

    Jan 04 2019

    Chris is joined by Eric Bailey, thoughtbot designer and champion for all things accessibility on the web. Chris & Eric chat about how Eric approaches accessibility and works to include it throughout the design process, design systems, functional CSS, CSS in JS, and more. Eric's recent accessibility talk Shifting Left Vimium Salesforce Lightning Design System Shadow DOM Introducing the CSS Cascade The element Heydon Pickering - Reluctant Gatekeeping: The Problem With Full Stack Nicole Suli...more

  • 181: Strong Types and a Functional Flair

    Dec 14 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 sources, and our approaches and frameworks need to evolve to match these needs. Joe provides the low down on how this can shape the way we build our applications. As part of the discussion around data they dig into the idea of event logs, most n...more

  • 180: A Citizen of the Internet (John Resig)

    Dec 07 2018

    On this episode of the Bike Shed, we're thrilled to welcome special guest John Resig, creator of jQuery and front-end architect at Khan Academy. The conversation begins with a discussion around John's work on jQuery, one of the most influential libraries in the history of the web. From there the discussion shifts to John's role as front-end architect at Khan Academy and how he balances feature development and paying down tech debt or exploring new technologies. John and Chris then discuss the r...more

  • 179: We CAN Just Use a Form!

    Nov 30 2018

    On this episode of the Bike Shed, Matt Sumner returns to chat with Chris about their recent adventures. They start by discussing Matt's ongoing work building an open source Ethereum implementation in Elixir and the joys of a test suite guiding your work. From there, Matt asks Chris about Chris's recent trip to speak at GraphQL Summit and his take on the current state of affairs in the GraphQL world (hint, it's good). Matt and Chris then discussed the progress they've made on simpler form handli...more

  • 178: Friday is For Spikes

    Nov 16 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. During their conversation they talk about Derek's experience shipping the "Suggested Changes" feature on github.com, and the MVP process Derek brought to the planning and development of the feature. They also touch on the architecture of GitHub and where servi...more

  • 177: Tricking Computers Into Doing Things

    Nov 09 2018

    On this episode of the Bike Shed, Chris is joined by Christina Entcheva, developer from thoughtbot's New York studio who has been a product manager and designer previously in her career, but has since settled in to her role as a developer. Chris & Christina share a conversation ranging from their shared love of "boring Rails apps", Christina's recent work with headless CMSs like Contentful & Prismic, and a discussion around Rails performance. Throughout the conversation they t...more

  • 176: The Machines Will Learn

    Nov 02 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 to focus on George's recent explorations of machine learning. This episode is a perfect introduction to the topic of ML, and provides a great summary of why you might want to start working with it and how to go about that. Does Progressive Enhanceme...more

  • 175: Tell Me When It's Real

    Oct 26 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. Specifically, they touch on server side frameworks like Ruby on Rails and Phoenix in the Elixir world. In addition, they discuss a variety of front end trends including the move towards typed languages like ReasonML, TypeScript, Elm, PureScript, and Scala.js, as...more

  • 174: I've Watched a Lot of Vim Courses

    Oct 18 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 learning platform, FREE. Giant Robots Podcast Upcase Test Driven Rails Mastering Git Fundamentals of TDD SOA on The Bike Shed Onramp to Vim thoughtbot Purpose Statement Chad on Twitter Support The Bike Shed

  • 173: A Combinatoric Explosion of Nulls

    Oct 12 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 somewhat controversial removal of custom operators. Anecdotally, Joël and team saw a reduction from 31.5K to 16.6K in bundle size going from 0.18 to 0.19 and felt no pain from the custom operators removal, so a big net win for them with this new ver...more

  • 172: What I Believe About Software

    Oct 05 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 unstructured data. The heart of the conversation revolves around the core processes we use to develop software touching on sprint planning & story points, deadlines, the place for refactoring and code review in the regular cadence of development, and...more

  • 171: What If We Just Used a Form?

    Sep 21 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 considerations to keep in mind when tackling rich client development. Ethereum Ethereum Proof of Stake Browser History APIs including pushState SOAP Ember's heroic focus on the URL & Routes GraphQL TypeScript Vimium Boston React Conference Sup...more

  • 170: Less Charted Territory

    Sep 14 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 enthusiasm for the Crystal language shines through in this discussion covering some of the unique features of Crystal & Lucky, but there is plenty to enjoy even if you're not specifically interested in Crystal. With Lucky, Paul has done a great job ...more

  • 169: Fear Driven Development

    Sep 07 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 conversation Chris and Kane discuss their shared desire to hide all implementation details and their love of Ruby for how it allows us to do that, testing vs test driven development, and approaches for refactoring large untested systems. 18F - A con...more

  • 168: An Escape Rope of Learning

    Aug 31 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 know a new language and paradigm. Along they way they dip into the complexity of twitter as a platform for discussion and making improvements to development workflows. Scala Scala implicits Kotlin Four stages of competence Scala Play - Full-featured...more

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

    Aug 24 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! tmate - shared terminal sessions via a special build of tmux Sneak - Human contact for remote teams (persistent video chat for teams) Ryan Tomayko - Your team should work like an open source project - great post with actionable advice for teams adoptin...more

  • 166: Are Services the New Rewrite?

    Aug 10 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 about services within your platform, and even includes an anecdote about thoughtbot's foray into the world of SOA on Upcase. Things You Should Never Do, Part I The Entity Service Antipattern The Past, Present, and Future of GraphQL Native - Nic...more

  • 165: The Tables Have Turned

    Aug 03 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. bin/setup ActiveStorage confi on heroku Rails encrypted "Credentials" 12 Factor App Semisonic- Closing Time Suspenders changes moving to per-topic generators Ruby bug Methods with more than 32 keyword arguments with default values have some of the arguments set to default despite being passed in...more

  • 164: A Piece of My Identity

    Jul 27 2018

    Support The Bike Shed

  • 163: Insert Some Colons For Me

    Jul 20 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. Visual Studio Code Language Server Protocol Vim-LSP Seamlessly Navigate Vim and tmux Splits rcm: rc file (dotfile) management Add facility for syncing VSCode extensions How to exit the Vim editor? Have you evaluated your toolchain recently? Tuple Support The Bike Shed

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

    Jul 13 2018

    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 bundle update --conservative docs Use create_or_find_by to avoid race condition in Rails 6.0 Dgraph — A Distributed, Fast Graph Database 100: Nouns You Can Verb | The Bike Shed - Sam's previous discussion of GRPC on the podcast PostgreSQL: WI...more

  • 161: Re-Incoherence

    Jul 06 2018

    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 Shed Re-Rebalancing Coherence Support The Bike Shed

  • 160: Praise Hands Emoji 🙌 (Vaidehi Joshi)

    Jun 29 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 our RailsConf audience. Vaidehi Joshi on Twitter Base CS – The Blog Posts Base CS - The Podcast Base CS - The Video Series RailsConf 2018: Re-graphing The Mental Model of The Rails Router by Vaidehi Joshi Deckset for Mac: Presentations from Mark...more

  • 159: Confusing and Hard to Use

    Jun 22 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! Diesel v1.3.0 RailsConf 2018: Up And Down Again: A Migration's Tale by Derek Prior ActiveSupport::Inflector Support The Bike Shed

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

    Jun 15 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. Aaron Patterson (@tenderlove) on Twitter Parkinson's Law of Triviality (The Bike Shed Effect) Cargo Cult Building a Compacting GC for MRI by Aaron Patterson Allison McMillan on Twitter CAR and CDR Honeypot The method JIT compiler for Ruby 2.6 Closing Keynote by Aaron Patterson Opening Keynote: FIXME by David He...more

  • 157: Whiz-Bangy Frontend Thing (Chris Toomey)

    Jun 08 2018

    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 it Closes RailsConf 2017: In Relentless Pursuit of REST by Derek Prior Jobs at thoughtbot graphiql Support The Bike Shed

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

    Jun 01 2018

    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 The Life and Death of a Rails App by Olivier Lacan Online Learning Service Pluralsight Acquires Code School For $36 Million Human Errors by Olivier Lacan Log the original call site for an ActiveRecord query Olivier on Twitter Support The Bike S...more

  • 155: Abstractions on Abstractions (Alex Sullivan)

    May 25 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. Flutter - Beautiful native apps in record time WTFs per minute Kotlin/Native thoughtbot's BART sign React Native at Instagram Xamarin Jake Whorton I/O Talk I/O: how to smartly use Fragments in your UI I/O: what's new in Architecture Components I/O: What's new in Android Support The Bike Shed

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

    May 18 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! Eileen on Twitter The Future of Rails 6: Scalable by Default - Eileen's RailsConf Keynote The Bike Shed #22: No Capes! (Eileen Uchitelle) ActiveSupport::PerThreadRegistry Parallel Tests Test Queue DatabaseCleaner LHM: Online MySQL schema migrations GH-ost: GitHub's Online Schema Migrations for MySQL pt-online-sc...more

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

    May 11 2018

    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 also get the total number of rows ActiveRecord: retrieving records in batches See open positions at thoughtbot! Become a Sponsor of The Bike Shed!Support The Bike Shed

  • 152: I Look For Stories (Nickolas Means)

    May 04 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. Nick on Twitter The Bike Shed #71: It's a Total Hack - Our earlier episode discussing Nick's previous keynote at RailsConf Skunk Works by Nickolas Means Skunk Works: A Personal Memoir of My Years at Lockheed The Field Guide to Understanding 'Human Error' Atomic Accidents: A History of Nuclear Meltdowns and Disasters Retro Report | Go...more

  • 151: Scheming About Schema

    Apr 27 2018

    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 Support The Bike Shed

  • 150: I Fight For the Users

    Apr 13 2018

    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 Bobbie Duncan Recalls Getting Outed Accidentally On Facebook Tesla Criticized for Blaming Autopilot Death on Model X Driver Self-Driving Mercedes-Benzes Will Prioritize Occupant Safety over Pedestrians GDPR The Bike Shed at RailsConf 2018 Supp...more

  • 149: E With an Umlaut

    Apr 06 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. TracePoint documentation Unicode Normalization Forms Buildkite Struct inheritance is overused Deprecate controller level force_ssl XFINITY Data Usage Center — FAQ Support The Bike Shed

  • 148: Baseball is a Legacy App

    Mar 30 2018

    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 Reality Baseball scorekeeping Room Persistence Library OkHttp Let’s Stop Ascribing Meaning to Code Points Support The Bike Shed

  • 147: Is a Lambda a Sandwich?

    Mar 23 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. Using yield_self for composable ActiveRecord relations What is the difference between a block, a proc, and a lambda in ruby? Ruby 2.5 prints backtrace and error message in reverse order ActiveRecord #merge Sean's Formulas Changed Timezones (The West Wing) Could New England actually change time zones? Pi Day - Wikipedia PostgreSQL Date/Time Functions and Opera...more

  • 146: --YOLO

    Mar 16 2018

    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 Elm 0.19 Android Performance: Avoid using ENUM on Android Support The Bike Shed

  • 145: The Internet is Ruined

    Mar 09 2018

    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 mine cryptocurrency Brave: Secure, Fast & Private Web Browser with Adblocker iOS 11 Safari View Controller cookie passthrough Purpose-built - thoughtbot Internet2 Support The Bike Shed

  • 144: Fisher Price™ Tools

    Mar 02 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. RailsConf 2018 Schedule “Just an Ass-Backward Tech Company”: How Twitter Lost the Internet War James Edward Gray II on Twitter's use of Rails Use create_or_find_by to avoid race condition in Rails 6.0 Shotgun Surgery Shuttle Reference Manual kOS: Kerbal Operating System Support The Bike Shed

  • 143: It's Hard to Have a Secret Rocket

    Feb 16 2018

    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 SQL in dangerous AR methods Active Storage Overview — Ruby on Rails Guides Support The Bike Shed

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

    Feb 09 2018

    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 database. Lucky Migrations in Crystal ActiveRecord::Migration reversible ActiveRecord::Migration revert Parity: Shell commands for development, staging, and production parity for Heroku apps Support The Bike Shed

  • 141: Go Baby, Go

    Feb 01 2018

    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 thoughtbot Support The Bike Shed

  • 140: A Sign of... Stability?

    Jan 25 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. Rust API Evolution Guide Embracing Promiscuous Gemfiles bundle outdated mix hex.outdated Keep a Changelog Support The Bike Shed

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

    Jan 19 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. Testing Rails Four-Phase Test Test-Driven Development Course on Codecademy Red-Green-Refactor Chai WebdriverIO - WebDriver bindings for Node.js SuperTest - Super-agent driven library for testing node.js HTTP servers using a fluent API Support The Bike Shed

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

    Jan 12 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. Announcing Diesel 1.0 - Congratulations to Sean and all committers. Where do Rubyists Go? Testing apps that use Geocoder PostgreSQL Mailing List Archives Respect user-set Capybara.server with Rails system tests Default Puma to non-clustered mode with Rails system tests Suspenders Chrome 63 forces .dev domains to ...more

  • 137: What's Up, Docs

    Jan 05 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 document Diesel 1.0. Stick around for the spoiler-filled after show about Star Wars: The Last Jedi. Diesel Guides Prepared Statements Diesel Documentation ActiveRecord Root Documentation Support The Bike Shed

  • 136: Propagating Conspiracy Theories

    Dec 22 2017

    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 React App in Kotlin by Dave Ford Kotlin Static Analysis with Android Lint by Tor Norbye ReSharper: Visual Studio Extension for .NET Developers thoughtbot Trail Maps Lucky - a web framework for Crystal Frinkiac thoughtbot does screen printing ...more

  • 135: A Series of Unfortunate Examples

    Dec 13 2017

    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 in Rails 4.0 pgFormatter: A PostgreSQL SQL syntax beautifier How would you format this SQL query? Support The Bike Shed

  • 134: Fastributes

    Dec 08 2017

    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 The Impermanence of Software by Andy Croll Git Driven Refactoring by Ashley Ellis Pierce The Unbearable Vulnerability of Open Source by Eileen Uchitelle All The Great Talks from RubyConf thoughtbot Podcast Swag Sale Support The Bike Shed

  • 133: A Very Special Bike Shed

    Nov 23 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. Helix Fast Blank Turns out, Rails Fast Attributes might be more on the order of 2x faster! Bootsnap Do I need Database Cleaner? GraphQL Query Resolver PostGraphQL Headless Capybara! Working in Siebel… Ugh Rebecca wrote a book Upcase Crossroads Support The Bike Shed

  • 132: What Went Well?

    Nov 16 2017

    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 framework by thoughtbot Support The Bike Shed

  • 131: Nouns For Verbs Sake

    Nov 08 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. factory_bot visitor pattern Visitor pattern and double dispatch in ruby Sean drives for Lyft Support The Bike Shed

  • 130: I Grew Up in Balloons

    Nov 03 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. Integrate with ActionDispatch::SystemTest Database Cleaner RSpec 3.7 has been released! Bundler template moves bins to exe Suspenders Exclude all 4xx Rails errors from Sentry reporting Balloon Fiesta Support The Bike Shed

  • 129: You Wanna Talk About GraphQL?

    Oct 27 2017

    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 Formatter Support The Bike Shed

  • 128: And Now for My Next Trick!

    Oct 19 2017

    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? Support The Bike Shed

  • 127: Bike Shed: Discovery

    Oct 13 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. Stick around post credits for some spoiler-filled chatter about the first couple episodes of Star Trek: Discovery. SpaceX Moon Base SpaceX Travel RubyConf talk involving Kerbal Space Program Bundler warns users to install pre-release version *Gemf...more

  • 126: Speaking of Compilers...

    Oct 05 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. Sputnik lamp Contracts.ruby Don't use exceptions for flow control Crystal Matz doesn't like current proposals for types in Ruby Support The Bike Shed

  • 125: Less Bad Than Expected

    Sep 28 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. Stripe Mock Web Valve Seeding Faker Speed Up Tests by Selectively Avoiding Factory Girl Why the Equifax breach is very possibly the worst leak of personal info ever Credit Freeze FAQs Support The Bike Shed

  • 124: Nope. Nope. Nope. Nope.

    Sep 20 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. What Your Conference Proposal is Missing by Sarah Mei Add a configuration option to cause tests to fail if they write stderr or stdout Survivorship Bias Cultivating a Code Review Culture by Derek Goldilocks and the Three Code Reviews by Vaidehi Joshi Support The Bike Shed

  • 123: Too Many Parameters

    Sep 13 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. 16 positional arguments Ruby's keyword arguments Rails Param Stronger Params Meditations on a Class Method Tell Don't Ask Get a Whiff of This by Sandi Metz Support The Bike Shed

  • 122: Name That Smell

    Sep 05 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. The thoughtbot laptop script bin/setup VCR Mystery Guest How to Stub External Services in Tests Fake Stripe Breaking change in how #round works Support The Bike Shed

  • 121: The Bike Log (Jerod Santo)

    Aug 21 2017

    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 Your Inner Code Monkey by Patrick McKenzie Support The Bike Shed

  • 120: Free Apples

    Aug 03 2017

    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 Open Source IBM uses JSLint for evil Notarize is hiring Contracts.ruby method_added counter_cache called twice with after_create callback “Why, sometimes I've believed as many as six impossible things before breakfast.” Support The Bike She...more

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

    Jul 26 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. Video Version myglu.com (The project being discussed) Sandi Metz' Rules for Developers Facade pattern Diesel's association API has_many The foreigner gem Goose talks about designing a programming language Service Objects Monban Why you shouldn't roll your own authentication Please send Caleb sunglasses. Rails 5.1 did ship while ...more

  • 118: Nonsense In, Nonsense Out

    Jul 18 2017

    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 Together Support The Bike Shed

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

    Jul 10 2017

    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 Double Deep Work Support The Bike Shed

  • 116: A More "WALL-E" Future

    Jun 28 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. Twitter Thread Machine Learning in Ruby Resources Apple Machine Learning Resources Chariot on TechCrunch Safecast- Open Environmental Data Contribute to Safecast Ask Tia Heat Seek Support The Bike Shed

  • 115: I Don't Need Another Google Hangout (Cecy Correa)

    Jun 22 2017

    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 Support The Bike Shed

  • 114: Reasonably Thread Safe

    Jun 16 2017

    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 HSTS Firesheep Use a secure session cookie for new installs pshtt Observatory by Mozilla Encrypted secrets in Rails 5.1 PhantomJS maintainer steps down Sean solves his problem: Multi-tabls joins in Rust Support The Bike Shed

  • 113: Have You Considered Rust? (Matt Casper)

    Jun 09 2017

    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 Support The Bike Shed

  • 112: Lifecycles Are Dead, Long Live Lifecycles!

    Jun 01 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"! I/O '17 Recap JetBrains Android Studio Android Architecture Components Joda-Time Library Anko Support The Bike Shed

  • 111: Trike Shed (Aaron Patterson)

    May 25 2017

    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 Ruby Benchmark Windows 98 Defragging Support The Bike Shed

  • 110: Green Chips

    May 18 2017

    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 Kitchens - Perusing the Rails Source Code - A Beginners Guide Abstract syntax tree Visitor Pattern Refactor the query builder to make it easier to add new AST passes Turn to_sql into a standard AST pass Support The Bike Shed

  • 109: The Final Countdown

    Apr 26 2017

    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 Google's Intrusive Pop-Up Announcement Thank you to our sponsor this week, SparkPostSupport The Bike Shed

  • 108: Have You Tried Rebooting?

    Apr 18 2017

    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 Language LLVM Cambrian Explosion Crystal Rob Pike on Googlers Rob Pike on the programmer prerequisites Thank you to our sponsor this week, SparkPostSupport The Bike Shed

  • 107: "Composition" Over Inheritance

    Apr 14 2017

    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 Rocket Lands on Drone Ship Little Boy Blue Single Table Inheritance Polymorphic Associations Tagged Union Canada Snoo Thank you to our sponsor this week, SparkPostSupport The Bike Shed

  • 106: Nerd Sniping (Chris Toomey)

    Apr 05 2017

    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 GraphQL API The $500,000 mruby Relase Curl is C Thank you to our sponsor this week, SparkPostSupport The Bike Shed

  • 105: For Display Purposes Only

    Mar 30 2017

    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 targeted for Ruby 2.5 Complexity and Strategy How to Build a Skyscrapper Rein - database constraints for Rails Scenic - database views for Rails Validation, Database Constraint, or Both? The Perils of Uniqueness Validations Ecto Validations and C...more

  • 104: It's Dangerous to Refactor Alone!

    Mar 23 2017

    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 Doesn’t Work On HDTVs NES R.O.B reverse dependencies query Snipperclips Second Quests in Zelda Games Brickseek Support The Bike Shed

  • 103: I Just Want to See Green Dots

    Mar 16 2017

    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 Functions Remove the max_version column from Crates Support The Bike Shed

  • 102: To the Moon!

    Mar 10 2017

    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 Process for Writing a Talk by Eileen Uchitelle Summary of the Amazon S3 Service Disruption in the Northern Virginia (US-EAST-1) Region Chaos Monkey Support The Bike Shed

  • 101: Hey, You Leaned!

    Feb 28 2017

    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 Write/Speak/Code Thank you to our sponsor this week, FreshBooksSupport The Bike Shed

  • 100: Nouns You Can Verb

    Feb 24 2017

    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 Buffers The Listen gem breaks my laptop Thank you to our sponsor this week, FreshBooks!Support The Bike Shed

  • 99: Just Sayin'

    Feb 16 2017

    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 Now BIGINT Using reversible in migrations Gary's tweet Thank you to our sponsor this week, FreshBooks!Support The Bike Shed

  • 98: I Have Good Branch Hygiene

    Feb 08 2017

    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: Prioritizing low latency and simplicity Modern Garbage Collection which calls out the tradeoffs of Go's approach WebKit’s Retreating Wavefront Concurrent Garbage Collector The Joel Test Tig: text-mode interface for Git Thank you to our spons...more

  • 97: One Equals Zero

    Jan 31 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 Rails. RequestStore The IDs writer patch Derek sent Sean Skunk Works by Nickolas Means It’s a Total Hack The Bike Shed episode inspired by Skunk Works Hanami Thank you to our sponsor this week, FreshBooks!Support The Bike Shed

  • 96: Who Stinks?

    Jan 27 2017

    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 you to our sponsor this week, FreshBooks!Support The Bike Shed

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

    Jan 20 2017

    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, FreshBooks!Support The Bike Shed

  • 94: It's Not Supposed to Work

    Jan 11 2017

    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 Flowers and Marios: Marketing Rust Thank you to our sponsor this week, FreshBooks!Support The Bike Shed

  • 93: I Have Complex Feelings

    Dec 21 2016

    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 thoughtbot Code of Conduct Disabling submit on invalid forms without JavaScript Purple Train Elm Native React Native Our earlier episode on Purple Train and React Native Homebrew SemVer issue Support The Bike Shed

  • 92: The Queen of Canada

    Dec 16 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. An awesome gif Justin Trudeau’s Shopify selfie The Toonie Slow Counting in Postgres N+1 is a Feature Managing dependencies with Rails’ Russian doll caching Postgres Upsert Support The Bike Shed and other thoughtbot podcasts Support The Bike Shed

  • 91: I Think It's a Fish

    Dec 08 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. Can I Use: HTML 5 validations checkValidity() ESLint Rails 5.1 can use Webpack and Yarn A Tour of Rails’ jQuery UJS How Does Origin Pull Work? PaperTrail Rails 5.1 pull request A shim for Rails 5 controller tests Support The Bike Shed

  • 90: Freedom Units

    Dec 01 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. How to Solve a Rubik’s Cube GenServer Agent Mocks and Explicit Contracts by José Valim VCR and exvcr actual radio buttons Support The Bike Shed

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

    Nov 23 2016

    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 One Infinity READMEs mansplain CocoaPods' impact on GitHub npmCamp 2016 Panel - Package Managers: Before and After npm Node Together A Very Brief Intro to Rust Support The Bike Shed

  • 88: How Many Puppies Now?

    Nov 18 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. Expandable RecyclerViews and You - Amanda's DroidCon talk. Deckset How to Talk to Developers Is UTF-8 a Racist Kludge or Stroke of Genius? Senior Android Developer at thoughtbot in New York City Kotlin 1.0.5 Build a Responsive UI with ConstraintLayout Support The Bike Shed

  • 87: The Refrigerator Took Down Your Website

    Nov 10 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. Deprecate the behavior of AR::Dirty inside of after_(create|update|save) callbacks Distributed Denial of Service attack on DNS Provider Dyn What is an ALIAS Record? ANAME records Why can't a CNAME record be used at the apex (aka root) of a domain? Avoid using non-standard DNS entries Is Your Site Leaking Password Reset Links? with Comments from Hacker...more

  • 86: Purple Train, Purrrple Train (Ian Anderson)

    Nov 02 2016

    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 Support The Bike Shed

  • 85: Are We in a Black Hole?

    Oct 26 2016

    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 Computing Glitch May Have Doomed Mars lander ActiveRecord’s from method ActiveRecord’s where.not method ActiveRecord’s WhereClause class Let’s fix deep_munge Object-relation impedance mismatch Support The Bike Shed

  • 84: Why Are Manhole Covers Round?

    Oct 19 2016

    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 GitHub Issues The fruits of Derek’s FactoryGirl pairing session The Infield Fly Rule Support The Bike Shed

  • 83: Canadian Halloween

    Oct 12 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. Diesel 0.8.0 Derive Rust Macros 1.1 CSS Support in GMail GMail REST API Bundler’s Multiple Source Security Vulnerability Bundler Response Listener Survey Support The Bike Shed

  • 82: I Just Want a Dog in a Spacesuit

    Oct 05 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. Podcast Patreon Survey Clearance password reset fix iwantacve.org Over 6,000 vulnerabilities went unassigned by MITRE's CVE project in 2015 Handling Security Issues in Open Source Projects by Tute Costa Elon Musk unveils plan to colonise Mars SpaceX Jobs Red Dragon Spacecraft NASA Orion Major Malfunction: Re...more

  • 81: Is This Really a CVE?

    Sep 28 2016

    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 Database Ruby security announcement mailing list Destroy All Software Support The Bike Shed

  • 80: Back to the Futures

    Sep 21 2016

    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" Support The Bike Shed

  • 79: Comments in Your Queries

    Sep 14 2016

    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 Uninstall All Installed Gems on OS X Support The Bike Shed

  • 78: I'm an Adult and I Choose Java

    Sep 09 2016

    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 Kotlin Tropos Weather Runes: Monadic Functions in Swift Receiving Location Updates in Android Dagger: A fast dependency injector for Android Introducing ExpandingRecyclerView RxAndroid Marial Codex Support The Bike Shed

  • 77: The Floors Are Not Zero Indexed

    Aug 31 2016

    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 Weiss Support The Bike Shed

  • 76: The One With Laila & Brenda

    Aug 17 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, The Laila & Brenda Show! Give their latest episode a listen here, and if you like it subscribe to their feed however you listen to podcasts! The Laila & Brenda Show Support The Bike Shed

  • 75: I'm Not Sure That's Better

    Aug 11 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. RSpec Bisect RSpec 3.3 Release Notes Git Bisect Unused The Halting Problem Diesel 0.7 Support The Bike Shed

  • 74: A Dip in the Connection Pool

    Aug 03 2016

    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 Support The Bike Shed

  • 73: Probably In My Other Pants

    Jul 28 2016

    We discuss Pokémon Go and what it's success might mean for software developers before Sean lays out his case for replacing the pg gem and libpq. Derek on Full Stack Radio The Laila and Brenda Show Google's Project Tango devices Pokemon Go gets full access Google auth token Why your email address isn't your identity The pg gem libpq SQL Server data types Support The Bike Shed

  • 72: Surprises Cut For Time (Aaron Patterson)

    Jul 20 2016

    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 link, just a fact. Sean's terrifying test script, slightly out of date rails.vim, the tpope jam Support The Bike Shed

  • 71: It's a Total Hack

    Jul 13 2016

    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 Big Design Up Front Kelly’s 14 Rules and Processes Rules Made Up by You - Kelly’s rules as applied to modern software development Factory, Workshop, Stage by Sarah Mei The Tyranny of Structurelessness How to Crash an Airplane by Nickolas Means...more

  • 70: Make Small Things (Sandi Metz)

    Jul 06 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. The Bike Shed - Episode 1: Sandi and Derek's Rules Sandi Metz' Rules For Developers Sandi on the Ruby Rogues Don't Create Verb Classes Swift Proposal for Default Final GoRuCo 2009: SOLID Object-Oriented Design by Sandi Metz How to Talk to Developers by Ben Orenstein What Your Conference Proposal is Missing by Sarah Mei A big thanks to eve...more

  • 69: No More Drills

    Jun 29 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. Jonathon Coulton: IKEA Derek's thoughtbot ♥️ Elixir tweet. Fuck Bullshit HTC Vive Office Simulator Demo ExMachina and Bamboo from Paul Smith Elixir 1.3 CHANGELOG Ecto 2.0 CHANGELOG Phoenix Presence Support The Bike Shed

  • 68: Mostly Undocumented

    Jun 22 2016

    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 Support The Bike Shed

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

    Jun 15 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. Rafael Franca Rails Contributors Sprockets Reintroducing gzip file generation in Sprockets LibSass is Sass in C (and fast) Spriting with Compass Rails Assets is not Dead turbograft TC39 Sean said you'd all "definitely" have the final build of Rails 5 by now. Whoops!Supp...more

  • 66: Make Ruby Scripting Great Again (Terence Lee)

    Jun 08 2016

    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 Keep Ruby Weird Support The Bike Shed

  • 65: Free as in Puppy (Katrina Owen)

    May 25 2016

    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 the easy change Skunk Works by Nickolas Means Factory, Workshop, Stage by Sarah Mei The Product Design Sprint Exercism.io Exercism GitHub Organization Support The Bike Shed

  • 64: Open Mic SF

    May 18 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. Croniker Monica Dinculescu on emoji Gabe learns about emoji on Twitter thoughtbot blog Fear of missing out on Wikipedia FOMObot Design Sprint Tropos Gabe Berke-Williams on Twitter Tony DiPasquale on Twitter Amanda Hill on Twitter Support The Bike Shed

  • 63: Types Are Only Good If You Use Them

    May 11 2016

    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 Support The Bike Shed

  • 62: Shipping is the Fastest Way to Get Somewhere

    May 04 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. Make Diesel faster than a SQL String How can an ORM be faster than a SQL string? ActionSupport::Executor and ActionSupport::Reloader APIs "I strongly discourage the use of autoload in any standard libraries” Support The Bike Shed

  • 61: I'm Not Telling You My Birthday

    Apr 27 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? DATE_PART or EXTRACT Triggers Using EXPLAIN Using ANALYZE VACUUM Derek's (mostly useless) Approximately Gem Support The Bike Shed

  • 60: Remote Control (Katherine Fellows)

    Apr 20 2016

    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 Bias PLIBMTTBHGATY Support The Bike Shed

  • 59: I Wish They Wouldn't Do That

    Apr 13 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. Bash on Ubuntu on Windows I’ve Just Liberated My Modules by Azer Koçulu A discussion about the breaking of the internet (Kik’s side of the story) by Mike Roberts Kik, left-pad, and npm by Isaac Z. Schlueter from npm npm Package Hijacking: From the Hijackers Perspective by Nathan Johnson Is gem yank a security concern? Kill Your De...more

  • 58: Nobody Gets Fired For Buying IBM

    Apr 06 2016

    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 choosing IBM" mean? When Understanding Means Rewriting by Jeff Atwood The Big Rewrite, revisited by DHH Thank you to Hired for sponsoring this episode!Support The Bike Shed

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

    Mar 30 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. José Valim on Twitter Introducing unifying calendar types to Elixir Falsehoods programmers believe about time and time zones by Lau Taarnskov mix deps.tree in Elixir 1.3 mix app.tree in Elixir 1.3 Ecto.Query.preload Working with Ecto Associations and Embeds by José Valim. Ecto.Changeset Ecto 2 beta is out, including concurrent database tests github_ecto:...more

  • 56: Most People Aren't Building Trello

    Mar 23 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. ActiveRecord is Reinventing Sequel Ryan Bigg gives up his open source projects Maybe We Could Tone Down the JavaScript by Evee Stronger Parameters Mother F*cking Website Discourse Ember CLI Fastboot Introduction to HTML Imports TC39 Modernizr Can I Use: Date and Time Input Types Support The Bike Shed

  • 55: Hot Dog is Not a Dessert

    Mar 09 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. Ides of March Presence validation of virtual attribute not firing appropriately ActionDispatch request helpers don't properly rewrite positional arguments to keyword arguments Strong Parameters migration path to Rails 4 A Rule of Thumb for Strong Parameters by Pat Shaughnessy Concurrent Ruby Appraisal Support The Bike Shed

  • 54: Argument Error

    Mar 02 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. GoodTImes, Timex, and Ecto.DateTime When should you use DateTime and when should you use Time by Andrew White Twitter conversation with Brandon Hikert Postgres RETURNING Preloading in Ecto User Focused Design in Elm by Evan Czaplicki Getting Started with Diesel...more

  • 53: Cache Machine

    Feb 24 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? The Road to 2 Million Websocket Connections in Phoenix by Gary Rennie Toxic Synovitis Memoization is a Liability by Henrik Nyh Use a leading underscore for memoization Two Hard Things in Computer Science Rails SQL Cache Low-Level Caching (Rails.cache.fetch) Association counter_cache Fragment Caching Introduction to C...more

  • 52: You're an Elixir Developer Now

    Feb 17 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? Elixir and Phoenix Routes in Phoenix Using ctags with Elixir Static Assets in Phoenix ja_serializers ecto Is There a JSON Schema describing JSON API? Elixir 1.2 Map and MapSet scale better ExMachina - factories for Elixir Elixir Typespecs and Behaviours Support The Bike Shed

  • 51: Is Sim City Running? (Steve Klabnik)

    Feb 10 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. Steve Klabnik - twitter, website, blog Let’s Talk About Ecosystem Documentation SimCity Mode in Windows 3.1 from Joel Spolsky Rescuing Resque… Again Netrunner IntermezzOS Writing an OS in Rust by Philipp Oppermann Bors - an automated integrator for GitHub High Five - a...more

  • 50: Open Mic

    Feb 03 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. Matt Sumner Hunchpig Podcast Haskell Programming The Lambda Calculus Learn You a Haskell for Great Good Is Everyone Trying Their Best? - The Bike Shed on software quality Cole Townsend Velocity JS Cole on Dribbble The Buffalo Bills` Playoff Drought - The longest current drought in sports Joël Quenneville Alt...more

  • 49: A More Practical Haskell

    Jan 27 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. What is the difference between traits in Rust and typeclasses in Haskell? What is a pure function? Why Rust Ditched Pure Functions The ActiveRecord and DataMapper patterns (not libraries) as defined by Martin Fowler in Patterns of Enterprise Application Architecture Zero-cost abstractions in Rust by Aaron Turon. What should Diesel associ...more

  • 48: Is Everyone Trying Their Best?

    Jan 21 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. The origin of "software engineering" The Coq Proof Assistant NASA's 10 rules for developing safety critical code The differences between strong and static typing "If it compiles it works" Derek adds IS NULL to Diesel "Quickcheck in Ruby" Note: Shopify is fewer than 700 developers Support The Bike Shed

  • 47: Star Wars Oranges

    Jan 13 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 Star Wars Fruit What is Kerberos? Safe navigation operator (AKA the lonely operator) by Georgi Mitrev ActiveSupport’s #try might not be doing what you think it’s doing by Avdi Grimm The history of try in Rails a comment from Myron Marston In Ruby, &method Passes You! Hash#dig Hash Comparison in Ruby 2.3 b...more

  • 46: Don't Breathe, Save the Planet

    Jan 06 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. Don't Breathe DHH on The Bike Shed DHH's ActionCable Demo Fixing Scenic view dumping Updatable materialized views in Scenic A first pass at Diesel migrations Teachable moments Support The Bike Shed

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

    Dec 23 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 they will or should carry a major version bump. Scenic Semantic Versioning - See points 4 and 5 Implementing Multi-Table Full Text Search with Postgres in Rails Issue handling view dependencies in Scenic migrations and a potential partial solution The...more

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

    Dec 17 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. Diesel Semantic Versioning SemVer for Library Maintainers by Richard Schneeman Rust RFC 1122 - Language SemVer Lobsters API hole in diesel updates Implementing IS NULL and IS NOT NULL for Diesel Diesel issue for migrations Crates.io PR for using Database behavior Support The Bike Sh...more

  • 43: That's DOCTOR Internet Technologist

    Dec 09 2015

    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 PostgreSQL COPY FROM Guarding against truncating the production database in Suspenders Have Some (Referential) Integrity with Foreign Keys "Inheritance is not for sharing code" tweet from Sarah Mei "Inheritance is for specialization, ...more

  • 42: That's Incredibly Ambitious (Grayson Wright)

    Dec 02 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. Announcing Administrate Administrate on GitHub Administrate Demo Bourbon and Neat Responsive tables Spree Keep A Changelog Clearance's NEWS file Code For America Grayson on Twitter Support The Bike Shed

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

    Nov 25 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. The Elixir Programming Language Phoenix Web Framework Announcing Ex Machina ex_machina on Github touches are now batched in Rails 5 Basecamp 3 Source Code Bullet and Rack MiniProfiler Railing About Performance with Sam Saffron A Client Project, Two Years Later Derek at a Coworking Space Support The Bike Shed

  • 40: ActiveRecord Deprecated Persistence

    Nov 18 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? 40 Prevent Information leaking In Rails Different ways to update in Rails The Perils of Uniqueness Validations disable with is default in Rails 5 The Bike Shed #11: Forming Opinions Support The Bike Shed

  • 39: Okay with Instability (Yehuda Katz)

    Nov 11 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. Remove The Stress, Pick a Deadline Writing Software by DHH Skylight The Log Normal Reality - On how our statistical intuition leads us astray. Yehuda on Twitter Support The Bike Shed

  • 38: Ugh, Forms

    Nov 03 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. HTML Form Validations HTML5 Validation Browser Support Parsely JS Client Side Validations SimpleForm 7 Ways Form Accessibility Can Boost Conversions Support The Bike Shed

  • 37: The Web is Faster Without Garbage

    Oct 29 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 Rails 5. Sean and his wife in a hot air balloon iOS 9 Content Blockers The Cost of Mobile Ads on 50 News Websites Do No Track HTTP Header ActiveModel Dirty API ActiveRecord Dirty Support The Bike Shed

  • 36: Python Unchained

    Oct 15 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? Writing your first Django app The Python Tutorial Django URLs Django filters Learn You A Haskell For Great Good CIS 194: Introduction to Haskell Two Scoops of Django Ruby Science Suspenders thoughtbot's research board Validating Schemas with an RSpec Matcher json_matchers scenic Support Th...more

  • 35: GitHub Ate My Résumé

    Oct 07 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. Set your Git email address to an address you own "forever". Git .mailmap Jobs at thoughtbot rest-client Ruby's Kernel#raise documentation Ruby's Exception#cause documentation Spring overrides raise, but feels uneasy about it. Exceptional Ruby by Avdi Grim. Proc#=== documentation. Upcase: 50% Off Your F...more

  • 34: README.md

    Sep 29 2015

    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 documentation of the top 40 crates in Rust. FactoryGirl Getting Started Clearance SignInGuard documentation Rails Security Guide Jobs at thoughtbot Laila on Twitter Support The Bike Shed

  • 33: Just Put it in a Module, Man

    Sep 22 2015

    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 sharing code" Eric Hayes' Rails PR Larry Bird Thanks for sending us your questions and feedback. Got more? You can email us at hosts@bikeshed.fm or tweet us.Support The Bike Shed

  • 32: Bug For Bug Compatibility

    Sep 15 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. Developing on Windows PowerShell Cygwin Does Windows fork? Modern.ie ievms Internet Explorer compatibility mode PostGIS Using Arel to Compose SQL Queries Ransack Rust specialization Rust grapples with orphan instances Sean's in-progress Rust ORM Support The Bike Shed

  • 31: Oxidizing an ORM

    Sep 08 2015

    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 query thoughts Support The Bike Shed

  • 30: Just Go to Slash Wibble

    Sep 01 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. The Bike Shed listeners make disable_with default on submit_tag Derek tries to explain the trouble with unrestricted routes to a client. The trouble with singular resources and form_for Use derailed benchmarks to find memory leaks and bloat. ActiveRecord memory bloat Matz: String literals frozen by default in Ruby ...more

  • 29: Django Unchained (Mike Burns)

    Aug 25 2015

    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 Support The Bike Shed

  • 28: Minisode 0.1.1

    Aug 18 2015

    Did you know Rails has no integration test suite? What could go wrong? ActionController::Parameters no longer inherits from Hash Support The Bike Shed

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

    Aug 11 2015

    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 Shrinkwrap Support The Bike Shed

  • 26: My Cache is in the Cloud

    Aug 04 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. Spree Browserscope network profile details RFC2616 is Dead Original HTTP/1.1 connection limit Updated HTTP/1.1 connection specification removes the specific limit cloud-to-butt turbolinks jquery.turbolinks async script loading Disabling form buttons with disable_with FOUT: flash of unstyled text Support The Bike Shed

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

    Jul 28 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 learning for existing and aspiring developers. Leave a review on our iTunes page to be entered to win a free month of Code School. Links / Show Notes JSON API Argo: Functional JSON parsing in Swift Swift Optionals Spine: A Swift JSON API client ...more

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

    Jul 21 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 developers. Leave a review on our iTunes page to be entered to win a free month of Code School. Links & Show Notes Speed Science - Richard's Railsconf 2015 talk mail gem memory use mime-types memory use Deprecate *_path methods in mailers XK...more

  • 23: Why Did They Call it Rust?!

    Jul 14 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 win a free month of Code School. Rust The Rust Programming Language Guaranteeing Memory Safety in Rust Rust traits Cargo include_str! Pattern matching in Rust Support The Bike Shed

  • 22: No Capes! (Eileen Uchitelle)

    Jul 07 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 learning for existing and aspiring developers. Leave a review on our iTunes page to be entered to win a free month of Code School. Links & Show Notes No Capes! CRUD! The Consequences of Not Understanding How ActiveRecord - Eileen's Midwest ...more

  • 21: The "Best" Canada (Godfrey Chan)

    Jun 30 2015

    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 Infrastructure Vancouver Ruby Group Godfrey on Twitter Support The Bike Shed

  • 20: Intentionally Excruciatingly Painful

    Jun 23 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. Verifying partial doubles Decent exposure Defining helpers directly on the view in view specs Don't stub the system under test Clearance Back Door Automatic form filling driven by i18n and Factory Girl with Formulaic Mystery guests Using data attributes to decouple data from presentation Testing pyramid Shoulda M...more

  • 19: The Oncoming Storm (Sam Phippen)

    Jun 16 2015

    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 stub_const method. Don't Stub the System Under Test assigns and assert_template are deprecated in Rails 5 Sam's RailsConf talk: Understanding Rails Test Types in RSpec Fun & Plausible Solutions Sam on Twitter Support The Bike Shed

  • 18: This Podcast is Rigged (But Not Animated)

    Jun 09 2015

    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 Rendering The Carmack Constant or Fast Inverse Square Root Bending the Curve: Writing Safe & Fast Native Gems With Rust Support The Bike Shed

  • 17: Railing About Performance (Sam Saffron)

    Jun 02 2015

    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 dumps Message Bus Logster Feedback? You can tweet us, email us, or leave a comment on our website.Support The Bike Shed

  • 16: Wizards Are Hard to Kill

    May 27 2015

    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 Sean's talk on Designing a Great Ruby API Attributes API documentation Minimum Viable Product Chandra Carney's talk on Programming with Accessibility in Mind Nothing is Something by Sandi Metz Sometimes a Controller is Just a Controller by Ju...more

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

    May 19 2015

    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 Support The Bike Shed

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

    May 12 2015

    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 Protection error_messages_for removed in Rails 3 Sandi Metz on the cost of the wrong abstraction WebSockets Event Machine Faye Basecamp Support The Bike Shed

  • 13: Begrudging Applause (Aaron Patterson)

    May 05 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. Video-version of this podcast! DHH's RailsConf Keynote Aaron's RailsConf Keynote Action Cable Long Polling TurboLinks Ember RFC Process Rack 2 Neko Atsume (also on Android) Ruby Together Chicken Scheme Awful Offal Node/IO Fork Agile Web Development With Rails Cells Support The Bike Shed

  • 12: A Poor Man's binding.pry

    Apr 17 2015

    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 bundle search command Ruby Mine Sean's talk at windy city rails How to talk to Developers by Ben Orenstein Support The Bike Shed

  • 11: Form-ing Opinions

    Apr 03 2015

    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. Simple Form wrappers ScalaForms Type-safe URLs in Yesod Django forms Batching up touch calls Issues with uniqueness validations Support The Bike Shed

  • 10: I Don't Get Functional Programming

    Mar 20 2015

    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 Haskell Carnival - Open source, Haskell-powered commenting for the Giant Robots Blog Pointfree Style How to say dots and dollars The Maybe data type The Incomplete Guide to Lazy Evaluation (in Haskell) Building Haskell Projects ...more

  • 9: Monorails, For the Kids

    Mar 06 2015

    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 Support The Bike Shed

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

    Feb 20 2015

    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 shared abstractions. Ernie Miller's RailsConf talk on the consequences of Rails' abstractions. load_schema makes sense now. DelegateClass Steve Klabnik tweets about companies not giving back significantly to Ruby open source Sean spe...more

  • 7: At the Car Wash

    Jan 30 2015

    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 your rails app. Bullet for hunting down N+1 queries and unused eager loading. What does Faraday middleware look like? The Clearance redirect loop Derek introduced and fixed. before filter and its friends have been deprecated in Rail...more

  • 6: Shh! Library Under Maintenance

    Jan 16 2015

    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 type casting Narrowing the scope - a less impactful ARel deprecation Rails changes to accompany the ARel API changes. An example of an issue these refactorings solve. Support The Bike Shed

  • 5: Rails is Not Your Architecture

    Dec 31 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. Rails Does Not Define Your Application Architecture What the hell is a service object? Fuzzy file finding with ctrl-p Query Objects Uncle Bob's Clean Architecture Form Objects Scala Play forms Haskell Yesod Forms But Pointfree Has More Points! Support The Bike Shed

  • 4: Put Everything on the Front End

    Dec 12 2014

    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 Binary Search Algorithm Writing Fast Ruby from Erik Micahels-Ober The select and pluck methods Fragment Caching Exposing CSRF token refresh in the jQuery UJS public API. Postgres Explain Plans Implementing Multi-Table Full Text Search with Po...more

  • 3: Flipping the Script

    Nov 28 2014

    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 syndrome CoffeeScript writes better JavaScript than you ES5 Compatibility Chart: When can I use map, reduce and forEach? Underscore.js removes fallbacks to native ES5 array functions Safari's LLVM-optimized FTL JIT Compiler ES6 Transpilers tr...more

  • 2: Rails 4.2

    Nov 17 2014

    Derek and Sean discuss Sean's commit access to Rails, what's coming in Rails 4.2, and how to go about making Rails code better. Ylan Segal wrote us to raise a clarification on one of Sandi's rules discussed in episode #1. Ernie Miller's RailsConf Talk The Rails 4.2 release notes. Sean's work on the attributes API. Aaron Patterson explains Adequate Record Aaron Patterson discusses adequate record, rails, and other topics on Giant Robots #100. Active Job Global Id Web Console Foreigner and Immig...more

  • 1: Sandi & Derek's Rules

    Oct 31 2014

    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 Oriented Design in Ruby, or POODR, is an excellent book you should all check out. God classes thoughtbot's Ruby style guidelines wherein we disavow ternary operators and conditional modifiers. The facade pattern Guard clause Ruby's method_add...more