

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

Oct 26, 2018 • 42min
175: Tell Me When It's Real
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 well as frameworks like React, Ember, Angular, and Vue.js.
Bike Shed 20 w/ Josh Clayton: Intentionally Excruciatingly Painful
Google Lighthouse
Beyond React 16 by Dan Abramov - JSConf Iceland
AirBnB Moving Away from React Native
Josh Steiner - Elm native UI in production
Announcing Purple Train
ReasonML
Elm
TypeScript
PureScript
Scala.js
Software disenchantment blog post
166: Are Services the New Rewrite?
Apollo Client
Vue.js
Thoughtworks Technology Radar
Parcel Bundler
Terser javascript minifier
Rufo - Ruby autoformatter
Support The Bike Shed

Oct 18, 2018 • 31min
174: I've Watched a Lot of Vim Courses
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

Oct 12, 2018 • 50min
173: A Combinatoric Explosion of Nulls
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 version.
Along the way Joël and Chris detour into the complexity of managing a project and community like Elm's and discuss Joël‘s recent work with the thoughtbot apprentice program. To round things out, Joël and Chris discuss the power of using a type system like Elm's to constrain the valid states of your application and make your apps more robust and maintainable.
Elm - A delightful language for reliable webapps.
Elm 0.19 Release Notes
Webpacker
Elm 0.19 - Dead Code Elimination
Scala.js
The reasoning behind removing user-defined operators
Minesweeper for JavaScript Equality
WebAssembly
Linus Torvalds - "I am going to take time off and get some assistance..."
Also Linus, on the importance of "trivial patches" as entry points for new kernal developers
Derek Prior - Implementing a Strong Code-Review Culture
thoughtbot code review guidelines
thoughtbot apprentice program
How Elm Slays a UI Antipattern
"Making Impossible States Impossible" talk by Richard Feldman
"Working with Maybe" talk by Joël Quenneville
"Confident Code" talk by Avdi Grimm
"Nothing is Something" talk by Sandi Metz
The Zen of Python
Breakable Toys
Joel’s many posts on the Giant Robots blog
Stop Coding and Start Drawing
Support The Bike Shed

Oct 5, 2018 • 56min
172: What I Believe About Software
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 the often lamented retrospective meeting.
Aptible - PAAS with strong security and HIPAA compliance
Heroku Shield
Google hiding www in URLs
Auth0 - Identity management and auth as a service
ActiveStorage - Rails's built in filie attachment framework
Postgres JSON & JSONB Types
The Real Story Behind Story Points
Laurie Young Post on His Use of Story Points
Deadlines
XKCD - And Check Whether the Photo is of a Bird
Headspace meditation
Support The Bike Shed

Sep 21, 2018 • 46min
171: What If We Just Used a Form?
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
Support The Bike Shed

Sep 14, 2018 • 49min
170: Less Charted Territory
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 of taking the best of what has been built in other frameworks and bring it to Crystal, drawing inspiration from Ruby & Rails, Elixir & Phoenix, and even PHP and the Laravel framework. There's something in this episode for everyone!
Crystal
If You Gaze Into nil, nil Gazes Also Into You
Elm
Scala
Elixir
Elixir Phoenix
Laravel
Laravel Mix
Lucky on GitHub
Render HTML pages in Lucky
Actions and Routing in Lucky
Browser tests with LuckyFlow
Dusk selectors
Guido Van Rossum, Python BDFL, Stepping down
VS Code
BikeShed episode w/ German Velasco disucssing Elixir
Support The Bike Shed

Sep 7, 2018 • 39min
169: Fear Driven Development
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 consulting team within the government helping to introduce modern
software development practices.
Kane's tweet about the enjoyment of the refactoring and design parts of the process.
Sarah Mei on The Bike Shed
Uniform Access Principle
Observations on the testing culture of Test Driven Development - TDD
article that introduces the phrase "calling the shot" for the practice of TDD.
Convenience class methods on service objects
Testing Pyramid - A way to think about the cost and value of the
various types of tests.
Therapeutic Refactoring by Katrina Owen
Katrina Owen on The Bike Shed
Strangler Pattern - A systematic approach to refactoring and decomposing
large-scale
The encasement strategy: on legacy systems and the importance of APIs
Martin Fowler on the Strangler Pattern
Support The Bike Shed

Aug 31, 2018 • 42min
168: An Escape Rope of Learning
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 Scala web framework, comparable to Rails
http4s - Lower level Scala web framework
SOAP - An approach to building APIs popular before the focus on REST APIs
WSDL - Schemas in the land of SOAP
Sangria - Scala GraphQL library
neo4j - An example of a graph database
Are Services the New Rewrite? - recent Bike Shed episode discussion
microservice architecture
283: Overcoming Awkward Data (Joe Ferris) - Recent Giant Robots episode
with Joe Ferris discussing "awkward data"
GraphQL Code Generation
Purple Train App
Support The Bike Shed

Aug 24, 2018 • 44min
167: I Feel Like We Should've Solved This By Now
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 adopting the remote life
How to Create a Distributed Work Culture
5 Things that Suck about Remote Work
Taking the Pain Out of Video Conferences
thoughtbot.com/jobs - Come work with us!
Elixir - The language German loves!
Pattern matching in Elixir
Hindley–Milner type system
dialyzer - Erlang static analysis
Erlang OTP - a set of Erlang libraries & principles that carry over to
Elixir
Erlang "Let It Crash"
Blockchain
Ethereum
Proof of Authority
GraphQL
VS Code
Language Server Protocol
TypeScript 3.0
Support The Bike Shed

Aug 10, 2018 • 37min
166: Are Services the New Rewrite?
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 - Nick Schrock
Netflix - Chaos Monkey
Goodbye Microservices: From 100s of problem children to 1 superstar (Segment)
Upcase
Support The Bike Shed