387 episodes

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.

The Bike Shed thoughtbot

    • Technology
    • 4.5 • 4 Ratings

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.

    387: RubyKaigi 2023 with Mina Slater

    387: RubyKaigi 2023 with Mina Slater

    Stephanie is joined by very special guest, fellow thoughtboter, Senior Developer, and marathon trainer Mina Slater.


    Mina and Stephanie had just been traveling together for two weeks, sponsored by WNB.rb for RubyKaigi in Matsumoto, Japan, and together, they recount their international adventure!





    RubyKaigi
    WNB.rb
    Understanding the Ruby Global VM Lock by observing it by Ivo Anjo
    gvl-tracing
    Justin Searls' RubyKaigi 2023 live coverage
    Prioritizing Learning episode


    Transcript:


    STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Stephanie Minn and today. I'm joined by a very special guest, fellow thoughtboter Mina Slater. Mina, would you like to introduce yourself to our audience?


    MINA: Yeah. Hi, everyone. I am Mina. I am a Senior Developer on Mission Control, which is thoughtbot's DevOps and SRE team.


    STEPHANIE: So, Mina, what's new in your world?


    MINA: Well, I start marathon training this week. So I hope that this conversation goes well and lasts you for three months because you're probably not going to see or hear from me all summer.


    STEPHANIE: Yes. That sounds...it sounds hard, to be honest, marathon training in the summer. When I was doing a bit more running, I always thought I would wake up earlier than I did and, you know, beat the heat, and then I never would, and that really, like, was kind of rough.


    MINA: Yeah, actually, I was thinking about my plans for today. I didn't wake up early enough to run in the morning. And so I was calculating, like, okay, by midday, it's going to be too hot. So I'm going to have to wait until, like, 6:00 p.m. [laughs]


    STEPHANIE: Yeah, yeah. Or, if you're like me, there's a very real chance that you just skip it altogether.


    [laughter]


    MINA: Well, I have a deadline, so... [laughs]


    STEPHANIE: That's true. When is your marathon race?


    MINA: This is actually the first year I'm doing two in a calendar year. So I'm doing Berlin in September. And then, three weeks after that, I'm going to run one in Detroit.


    STEPHANIE: Nice. At least you'll be ready. You'll, like, have done it. I don't know; it kind of sounds maybe a bit more efficient that way. [laughs]


    MINA: Theoretically. But, you know, ask me in October. I'll let you know how it goes.


    STEPHANIE: That's true. You might have to come back on as a guest. [laughs]


    MINA: Just to talk about how it went. [laughs]


    STEPHANIE: Yeah, exactly.


    MINA: So that's what's new with me. What's new in your world, Steph?


    STEPHANIE: So, a while back on a previous Bike Shed episode, I talked about joining this client team and, in their daily team syncs, in addition to just sharing what we were up to and what we were working on, we would also answer the question what's something new to us. And that was a space for people to share things that they learned or even just, like, new things that they tried, like food, or activities, or whatnot. And I really enjoyed it as a way to get to know the team, especially when I was new to that client project.


    And recently, someone on the team ended up creating a random question generator. So now the question for the daily sync rotates. And I've been having a lot of fun with that. Some of the ones that I like are, what made you laugh recently? What's currently playing on your Spotify or YouTube? No cheating.


    MINA: [laughs]


    STEPHANIE: And then, yesterday, we had what's for dinner? As the question. And I really liked that one because it actually prompted me to [chuckles] think about what I was going to do for dinner as opposed to waiting till 5:00 p.m. and then stressing because I'm already hungry but don't have a plan [chuckles] for how I'm going to feed myself yet. So it ended up being nice because I, you know, kind of was inspired by what other people mentioned about their dinner plans and got my stuff together.


    MINA: That's shocking to me because we had just come off of two weeks of

    • 31 min
    386: Value Objects Revisited: The `Tally` Edition

    386: Value Objects Revisited: The `Tally` Edition

    If you're in the market for bicycle shorts, Joël's got you. Stephanie just returned from RubyKaigi in Japan and shares details of her trip.


    Recently at thoughtbot, there have been conversations around an interesting data modeling exercise. Joël and Stephanie discuss the following:



    Value Objects vs. Hashes
    Doing Math on Compound Numbers
    Monoids and Folding
    Naming Concepts in Code




    This episode is brought to you by Airbrake. Visit Frictionless error monitoring and performance insight for your app stack.





    Ruby Kaigi
    Google Translate Lens
    Video on city parks
    Enumerable#tally
    Hash#merge
    Monoids
    Enumerable#all?
    Value of specialized vocabulary
    Gist with Joël’s code solution


    Transcript:


    STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Stephanie Minn.


    JOËL: And I'm Joël Quenneville. And together, we're here to share a little bit of what we've learned along the way.


    STEPHANIE: So, Joël, what's new in your world?


    JOËL: I've made an unusual purchase this week. I went out and bought a pair of bicycle shorts. And, for those who are not aware, these are special shorts that have padding built into them. Typically, they're, like, skin-tight, but I got, I guess, what are called mountain biking shorts. So, they kind of look more like the cut of a normal short. But they've got this, like, built-in padding for biking.


    STEPHANIE: So. Just to confirm, you did get these shorts for biking purposes, right?


    JOËL: Yes. I purchased these shorts for biking purposes.


    STEPHANIE: Okay. [laughs]


    JOËL: And I got these because I was talking to a friend about this and mentioning that this was, like, probably the most ambitious cycling thing I've ever done in my life. And they recommended if you have not done bike shorts, you really should get them. They make a big difference.


    STEPHANIE: Wow. Okay, I have two thoughts here. First of all, you prefaced this saying that this was an unusual purchase. So I thought maybe that you bought these bike shorts for some other purpose. [laughs] But I am excited to talk about this because I've also been curious about trying bike shorts.


    I bike a lot in Chicago in the summer, and I've been doing, like, longer rides on the Lakefront trail. And one of my goals, actually, this summer is to do a bikepacking trip. But I have not been super comfortable on longer rides. And I was just thinking that this might be something really helpful to make them a little more enjoyable.


    JOËL: So, is the kind of biking that you're doing closer to what might be considered commuting?


    STEPHANIE: Yeah, mostly commuting. But also, just, like, going on long rides on the weekends, in addition to this, hopefully, forthcoming bikepacking trip up to a state park. So not too long, maybe, like, 60 miles, but definitely long enough to start getting a little uncomfy on your seat.


    JOËL: Yeah, is 60 miles, like, in one day?


    STEPHANIE: Yeah, exactly.


    JOËL: That's a lot. Yeah, the friend who recommended biking shorts to me told me that pretty much anything over maybe 10 miles is worth getting shorts.


    STEPHANIE: Wow, okay. I clearly have been suffering [laughs] for way too long, then. Tell me more about your cycling trip.


    JOËL: So this is a bikes plus beer trip. Basically, I plotted a bunch of breweries in Belgium on a map and constructed an itinerary that could hit a bunch of them while keeping fairly short rides between towns. And the goal is to do maybe 30-35 miles in a day. And so I'll be going probably, like, cycling in the morning, and then exploring and drinking in the afternoon and evening.


    STEPHANIE: That sounds amazing. That's really cool to do a little bit of a tour of the area and then also traveling by bike.


    JOËL: Yeah, I'm excited because other modes of transport really just give you the origin and the destination, whereas cycling, you kind of get all of the in-between places. You

    • 41 min
    385: The Boring Parts of Tech

    385: The Boring Parts of Tech

    Joël is joined by thoughtbot Software Developer and Dirt Jumper Daniel Nolan. Dirt jumping is BMX-style riding 🏍️ with really enormous dirt jumps.


    But for a person who loves excitement in his spare time, for Daniel at work, it's not the new and shiny that interests him. When he dives into something, the "boring" parts of tech are what he finds most fulfilling. He wants to know the "why," and in this conversation, he explains how it sustains his career.




    This episode is brought to you by Airbrake. Visit Frictionless error monitoring and performance insight for your app stack.





    Debugging series
    Dependabot
    Coverband
    thoughtbot maintenance service
    Sentry
    New Relic
    Custom Rubocop rules
    Daniel Nolan Twitter
    Daniel Nolan GitHub


    Transcript:


    JOËL: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Joël Quenneville. And today, I'm joined with a guest, Daniel Nolan.


    DANIEL: Hey.


    JOËL: And, together, we're here to share a bit of what we've learned along the way. So, Daniel, what's new in your world?


    DANIEL: So, recently, I just picked up a dirt jumper bicycle, and I've been learning to get better at dirt jumping. I ride mountain bikes quite a bit. But jumping is something that I haven't been super comfortable with.


    JOËL: What is dirt jumping?


    DANIEL: So, Dirt Jumping is kind of more like BMX-style riding with really huge dirt jumps. If you do it right, you don't pedal. So you should be jumping and pumping and making your way around the track or the course without the need to pedal. So it's actually pretty interesting. And it's supposed to level up your mountain bike skills if you get good at this.


    JOËL: So the idea is you start up high somewhere, and you just kind of let the gravity bring you down?


    DANIEL: Yep, that's the idea. So you start up on a platform; usually, you drop in. And then, from there, you start the series of jumps or rollers, pick up speed, and then kind of go into some bigger jumps, and berms, and stuff and make your way around the course. It's pretty fun.


    JOËL: So you're coming down from a high, and then you hit a dirt ramp somewhere. You go up in the air. You fly off, and you're doing, like, a flip or something like that?


    DANIEL: Yeah, not quite there yet. Some of the people I ride with can do flips, and no handers, and stuff; definitely not there, but just getting comfortable on big dirt jumps. I think the scariest thing is not being able to see the landing. So it's, like, if it's just a little jump, like, you know where you're going. But if it's like one of those big jumps with a huge lift, you just have no idea what's on the other side. And no matter how, you know, even if you've hit it ten times, it's still scary because you can't see it.


    JOËL: How do you land safely when you can't see your landing place?


    DANIEL: There's a technique where you kind of push the bike down. So, like, once you're in the air and you've kind of leveled the bike out, and you spot the landing, you force the bike down to kind of accentuate that movement and make the bike go down.


    JOËL: Just so I get a better mental picture here, how high up are we talking about when you're flying off this ramp?


    DANIEL: So some of these dirt jumps are probably...on the ones that I'm riding, they lift to probably, like, you know, eight, nine-feet high, and you're probably getting, like, three to four feet in the air over that to clear it.


    JOËL: Wow. That's a little bit of elevation right there.


    DANIEL: Yeah.


    JOËL: I would probably be scared.


    DANIEL: The safe jumps have what they call a table on top, so there's no risk. Like, if you land on top of the jump, you're not going to die. But, yeah, typically, they're flat on top. So you have to have enough air and enough momentum to clear that flat part and land on the downside.


    JOËL: I like to do a lot of bouldering. In this case, I do it in a gym, so y

    • 24 min
    384: Not All Numbers Are Numbers

    384: Not All Numbers Are Numbers

    Joël gives a recap after attending RailsConf 2023 in Atlanta, Georgia (and yes, there was karaoke! 🎤 🎶). Stephanie plugs the The Tightly Coupled Book Club Podcast from friends and fellow thoughtboters Aji and Mina Slater where they're reading The Rails Guides from cover to cover and treating it like a book club and having a discussions about the documentation as they read it together.


    Stemming from a Twitter thread by Joël, their main topic focuses on not all numbers being numbers. So: if someone is submitting a phone number through a form:



    How would you store that in the database?
    Would you store it as a string? Because sometimes it comes with some extra formatting.
    Would you normalize it and try to store it as an integer because it's a number?


    Thoughts, Dear Listener?




    This episode is brought to you by Airbrake. Visit Frictionless error monitoring and performance insight for your app stack.





    How to Decline by Anne Helen Petersen
    The Tightly Coupled Book Club podcast
    Rails Guides
    Michael Hartl Rails Tutorial
    Why the GOV.UK Design System team changed the input type for numbers
    Google’s libphonenumber
    GOV.UK design system’s open GitHub issue on phone numbers
    HTML numeric input mode


    Transcript:


    STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Stephanie Minn.


    JOËL: And I'm Joël Quenneville. And together, we're here to share a bit of what we've learned along the way.


    STEPHANIE: So, Joël, what's new in your world?


    JOËL: I've just returned from attending RailsConf 2023 in Atlanta, Georgia, and it was so much fun. I got a chance to attend some really good talks. I got a chance to connect with other people in the community. I always love the hallway track or any of the events that happen in the evenings after the conferences. It's a lot of fun.


    STEPHANIE: Nice. I found it funny that you emphasized just returned because you literally walked through the door of your home and then got online to record this podcast with me. [laughs]


    JOËL: Productivity.


    STEPHANIE: What were some of your highlights from the conference?


    JOËL: I really appreciated a talk by Elle Meredith about how to say no. And she gave...I think it was nine sort of different ways that you might want to have a conversation about saying no to a request. They're almost like design patterns but for interpersonal conversations. And so she covered situations where you might want to say no to maybe someone who's higher up in a hierarchy than you, so a manager.


    But also, what it's like sometimes when it's the other way around if you're a manager and you have to say no to someone who reports to you, and how to handle some of those conversations. So I really appreciated the nuance that she had to share. And I think the strategies were just really practical.


    STEPHANIE: That's awesome. Yeah, I know we, as developers, love some good patterns and frameworks. That actually reminds me of something else that I'd read recently, a newsletter called Culture Study by this journalist Anne Helen Petersen. She recently sent out a dispatch about how to say no or decline requests through email. And I was just thinking that it's such a challenging thing to do. But having a script or seeing examples of how other people do it is really helpful to just make it easier the next time that you want to say no, but then you're not sure how.


    JOËL: It's not easy to say no. I think most people want to please, and it's much easier to say yes. And maybe even you want to believe that you can say yes, that you can do everything with limited resources and not have to prioritize. And then, of course, reality hits you, and you're in a worse situation than if you'd said no upfront or had at least an honest conversation about the limitations that we have and the prioritization that needs to happen.


    STEPHANIE: Yeah, absolutely. So, over in the tho

    • 37 min
    383: Code as Storytelling with Nicole Zhu

    383: Code as Storytelling with Nicole Zhu

    Engineering manager at Vox Media and author Nicole Zhu joins Stephanie on today's episode to discuss her writing practice.


    nicoledonut is a biweekly newsletter about the writing process and sustaining a creative life that features creative resources, occasional interviews with creative folks, short essays on writing and creativity, farm-to-table memes and TikToks, and features on what Nicole is currently writing, reading, and watching.




    This episode is brought to you by Airbrake. Visit Frictionless error monitoring and performance insight for your app stack.





    Kieran Culkin on learning about billionaires filming Succession
    The Home Depot skeleton
    Nicole Zhu's newsletter
    The Making of a Manager by Julie Zhuo
    Saving Time by Jenny Odell


    Transcript:


    STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Stephanie Minn. And today, I'm joined by my friend and special guest, Nicole Zhu.


    NICOLE: Hi, I'm so excited to be here. My name is Nicole, and I am an Engineering manager at Vox Media and a writer.


    STEPHANIE: Amazing, I'm so thrilled to have you here. So, Nicole, we usually kick off the show by sharing a little bit about what's new in our world. And I can take us away and let you know about my very exciting weekend activities of taking down our Halloween skeleton. And yes, I know that it's April, but I feel like I've been seeing the 12-foot Home Depot skeletons everywhere. And it's becoming a thing for people to leave up just their Halloween decorations and, just as the other holidays keep rolling on, changing it up so that their skeleton is wearing like bunny ears for Easter or a leprechaun hat for St. Patrick's Day.


    And we've been definitely on the weird skeleton in front of the house long past the Halloween train for a few years now. Our skeleton's name is Gary. And it's funny because he's like a science classroom skeleton, so not just plastic. He's actually quite heavy.


    NICOLE: He's got some meat to the bones. [laughs]


    STEPHANIE: Yeah, yeah, and physiologically correct. But we like to keep him out till spring because we got to put him away at some point so that people are excited again when he comes back out in October. And the kids on our block really love him. And yeah, that's what I did this weekend. [laughs]


    NICOLE: I love it. I would love to meet Gary one day. Sounds very exciting. [laughs] I do get why you'd want to dress up the skeleton, especially if it's 12 feet tall because it's a lot of work to put up and take down for just one month, but that's fascinating. For me, something new in my world is the return of "Succession," the TV show.


    STEPHANIE: Oh yes.


    NICOLE: I did not watch yesterday's episode, so I'm already spoiled, but that's okay. But I've been getting a lot of Succession TikToks, and I've been learning a lot about the making of the show and the lives of the uber-rich. And in this one interview with Kieran Culkin, the interviewer asked him, "What's something that you learned in shooting the show about the uber-rich about billionaires that's maybe weird or unexpected?" And Kieran Culkin says that the uber-rich don't have coats because they're just shuttled everywhere in private jets and cars. They're not running to the grocery store, taking the subway, so they don't really wear coats, which I thought was fascinating. It makes a lot of sense.


    And then there was this really interesting clip too that was talking about the cinematography of the show. And what is really interesting about it is that it resists the wealth porn kind of lens because it's filmed in this mockumentary style that doesn't linger or have sweeping gestures of how majestic these beautiful cities and buildings and apartments they're in.


    Everything just seems very matter of fact because that is just the backdrop to their lives, which I think is so interesting how, yeah, I don't know, where I was like, I didn

    • 43 min
    382: Domain-Specific Languages

    382: Domain-Specific Languages

    Joël has been integrating a third-party platform into a testing pipeline...and it has not been going well. Because it's not something she usually keeps up-to-date with, Stephanie is excited to learn about more of the open-source side of things in Ruby, what's new in the Ruby tooling world, and what folks are thinking about regarding the future of the language.


    Today's topic is inspired by an internal thoughtbot Slack thread about writing a custom matcher for Rspec. Stephanie and Joël contrast DSLs vs. Object APIs and also talk about:



    CanCanCan vs Pundit
    RSpec DSL
    When is a DSL helpful?
    Why not use both DSLs & Object APIs?
    Extensibility
    When does a DSL become a framework?




    This episode is brought to you by Airbrake. Visit Frictionless error monitoring and performance insight for your app stack.





    RubyKaigi 2023
    Mystified by RSpec’s DSL? by Jason Swett
    Building Custom RSpec Matchers with Regular Objects
    FactoryBot
    Writing a Domain-Specific Language in Ruby by Gabe Berke-Williams
    Capybara
    Acceptance Tests at a Single Level of Abstraction
    CanCanCan
    Pundit
    Discrete Math and Functional Programming


    Transcript:


    STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Stephanie Minn.


    JOËL: And I'm Joël Quenneville. And together, we're here to share a little bit of what we've learned along the way.


    STEPHANIE: So, Joël, what's new in your world?


    JOËL: I've been integrating a third-party platform into our testing pipeline for my client. It has not been going well. We've been struggling a little bit, mostly just because tests just kind of crash. Our testing pipeline is pretty complex. It's a lot of one script, some environment variables, does a few things, shells out to another script, which is in a different language. Does a few more things, shells out to another script, maybe calls out to rake, calls out to a shell script. There are four or five of these in a chain, and it's a bit of a mess.


    Somewhere along in there, something is not compatible with this third-party service that we're trying to integrate with. I was pairing this week with a colleague. And we were able to reproduce a situation where we were able to get a failure under some conditions and a success under other conditions. So these are basically, if we run the whole chain of scripts that call each other from the beginning, we know we get a failure. And if we skipped entirely the chain of scripts that set up things and then just manually try to invoke a third-party service, that works.


    And so now we know that there's something in between that's incompatible, and now it's just about narrowing things down. There are a few different approaches we could take. We could try to sort of work our way forward. We know a known point where it breaks and then just try to start the chain one step further and see where it fails. We could try to get fancy and do a binary search, like split it in half and then half and half again.


    We ended up doing it the other way, where we started at the end. We had our known good point and then just stepping one step back and saying, okay, now we introduce the last script in the chain. Does that work? Okay, that pass is great. Let's go one step further; two scripts up in the chain. And at some point, we find, okay, here's the one script that fails. Now, what is it within this script? And it was a really fun debugging session where we were just narrowing things down until we found the source of the bug.


    STEPHANIE: Wow, that sounds pretty complicated. It just seems like there are so many layers going on. And it was really challenging to pinpoint where the source of the issue was.


    JOËL: Definitely. I think all the layers made it really complicated. But having a process that we could follow and then kind of narrowing it down made it almost mechanical to figure out where the bug was once we got to a point where we had a k

    • 36 min

Customer Reviews

4.5 out of 5
4 Ratings

4 Ratings

Texelate ,

Enjoyable and knowledgable

The Bikeshed guys are fantastic to listen to each week. They're both enjoyable and knowledgable, a perfect balance. Great for a more technical podcast. Recommended.

Top Podcasts In Technology

Lex Fridman
Apple
Jason Calacanis
Jack Rhysider
The New York Times
Ben Gilbert and David Rosenthal

You Might Also Like

Changelog Media
Wes Bos & Scott Tolinski - Full Stack JavaScript Web Developers
Jason Charnes, Chris Oliver, Andrew Mason
Changelog Media
37signals
Jason Swett

More by thoughtbot

thoughtbot
thoughtbot
thoughtbot
thoughtbot
thoughtbot