
The State of Debugging in Ruby — A Puts-tastic Journey
03/28/24 • 34 min
In this episode of "Ruby for All," hosts Andrew and Julie take us through a journey of debugging, from dealing with weather-induced moods to squashing tricky bugs in their code. They touch on the challenges of debugging without audio guidance, leveraging logs for troubleshooting, and the logical approach to handling errors in Ruby or JavaScript. They dive into the variations of different debugging tools, such as Pry and the Rails Logger, and the complexities of transitioning to new debugging gems. Andrew recounts a perplexing bug only replicable in production and details his process and concluding the issue. As they navigate the intricacies of problem-solving, they contemplate the worth of fixing minor bugs versus prioritizing major ones, drawing on real-life examples from their experiences. Andrew wraps up with a reminder of the importance of teamwork in debugging, while they both acknowledge the reality that sometimes, a bug might just remain unfixed. Join them as they share insights and laughter, reminding us of the human element in the world of code.
[00:00:54] Andrew describes the bug issue he had and the difficulties of debugging it without audio in the screen recording, and Julie shares her own debugging challenges on her new team.
[00:02:00] Let’s talk about debugging, as Andrew explains different types of bugs and shares his process for understanding and reproducing bugs. Julie emphasizes the importance of understanding the product and the expected behavior to replicate and debug issues.
[00:03:31] Andrew describes his approach to getting unstuck during debugging, which includes revisiting the problem statement and using logs to trace the issue.
[00:05:14] Andrew asks Julie if she can replicate her bug in production and suggests using logs for troubleshooting. Julie talks about her approach to errors, which differs as she doesn’t typically see the red Rails error page in her work. They discuss how to deal with JavaScript errors and the importance of reading error messages.
[00:08:57] Julie inquires why some developers may overlook details in error messages, and Andrew suggest that assumptions and a form of panic might play roles and discusses when he’s more likely to Google error messages, especially regarding dependencies.
[00:13:22] Andrew explains why he prefers using the ‘Rails Logger’ over ‘puts’ for debugging. He also mentions using Overmind and tmux for viewing Rails logs.
[00:14:39] Julie draws a parallel between ‘puts’ debugging and JavaScript’s console.log debugging. Andrew confirms they are similar, and he shares his transition from using Pry to the official debug gem and the difficulty of changing old habits.
[00:16:30] Andrew clarifies that binding.irb now uses the debug gem by default in Ruby 3, he discusses the usefulness of Pry’s context-switching feature, and he outlines additional steps for effective debugging.
[00:19:52] There’s a conversation on using git for tracking code changes and git-bisect for isolating commits that caused issues, and questioning assumptions, reading documentation, and getting a second opinion or sleeping on the problem.
[00:23:17] Andrew discusses the mindset required for effective debugging: patience, persistence, and the willingness to step away and return to a problem. Julie describes a very specific bug affecting a small number of users questioning with her manager whether it’s worth the effort to fix it.
[00:25:43] Back to Andrew’s story about a bug that he couldn’t replicate in development, but could in production, and he details his process and realization that it was a display issue in the front-end.
[00:31:09] Julie relates to Andrew’s difficulty in replication bugs in development and suspects filtering differences in production. Andrew suggests troubleshooting methods for errors related to data discrepancies.
[00:33:11] Andrew shares a tip about using data to back up arguments when trying to convince others during decision-making, and Julie recounts realizing the low impact of the bug she’s working on and it it’s worth the effort.
Panelists:
Andrew Mason
Julie J.
Sponsors:
Links:
- (00:54) - Debugging Dilemmas: Screen Recordings ...
In this episode of "Ruby for All," hosts Andrew and Julie take us through a journey of debugging, from dealing with weather-induced moods to squashing tricky bugs in their code. They touch on the challenges of debugging without audio guidance, leveraging logs for troubleshooting, and the logical approach to handling errors in Ruby or JavaScript. They dive into the variations of different debugging tools, such as Pry and the Rails Logger, and the complexities of transitioning to new debugging gems. Andrew recounts a perplexing bug only replicable in production and details his process and concluding the issue. As they navigate the intricacies of problem-solving, they contemplate the worth of fixing minor bugs versus prioritizing major ones, drawing on real-life examples from their experiences. Andrew wraps up with a reminder of the importance of teamwork in debugging, while they both acknowledge the reality that sometimes, a bug might just remain unfixed. Join them as they share insights and laughter, reminding us of the human element in the world of code.
[00:00:54] Andrew describes the bug issue he had and the difficulties of debugging it without audio in the screen recording, and Julie shares her own debugging challenges on her new team.
[00:02:00] Let’s talk about debugging, as Andrew explains different types of bugs and shares his process for understanding and reproducing bugs. Julie emphasizes the importance of understanding the product and the expected behavior to replicate and debug issues.
[00:03:31] Andrew describes his approach to getting unstuck during debugging, which includes revisiting the problem statement and using logs to trace the issue.
[00:05:14] Andrew asks Julie if she can replicate her bug in production and suggests using logs for troubleshooting. Julie talks about her approach to errors, which differs as she doesn’t typically see the red Rails error page in her work. They discuss how to deal with JavaScript errors and the importance of reading error messages.
[00:08:57] Julie inquires why some developers may overlook details in error messages, and Andrew suggest that assumptions and a form of panic might play roles and discusses when he’s more likely to Google error messages, especially regarding dependencies.
[00:13:22] Andrew explains why he prefers using the ‘Rails Logger’ over ‘puts’ for debugging. He also mentions using Overmind and tmux for viewing Rails logs.
[00:14:39] Julie draws a parallel between ‘puts’ debugging and JavaScript’s console.log debugging. Andrew confirms they are similar, and he shares his transition from using Pry to the official debug gem and the difficulty of changing old habits.
[00:16:30] Andrew clarifies that binding.irb now uses the debug gem by default in Ruby 3, he discusses the usefulness of Pry’s context-switching feature, and he outlines additional steps for effective debugging.
[00:19:52] There’s a conversation on using git for tracking code changes and git-bisect for isolating commits that caused issues, and questioning assumptions, reading documentation, and getting a second opinion or sleeping on the problem.
[00:23:17] Andrew discusses the mindset required for effective debugging: patience, persistence, and the willingness to step away and return to a problem. Julie describes a very specific bug affecting a small number of users questioning with her manager whether it’s worth the effort to fix it.
[00:25:43] Back to Andrew’s story about a bug that he couldn’t replicate in development, but could in production, and he details his process and realization that it was a display issue in the front-end.
[00:31:09] Julie relates to Andrew’s difficulty in replication bugs in development and suspects filtering differences in production. Andrew suggests troubleshooting methods for errors related to data discrepancies.
[00:33:11] Andrew shares a tip about using data to back up arguments when trying to convince others during decision-making, and Julie recounts realizing the low impact of the bug she’s working on and it it’s worth the effort.
Panelists:
Andrew Mason
Julie J.
Sponsors:
Links:
- (00:54) - Debugging Dilemmas: Screen Recordings ...
Previous Episode

Ski Slopes, Sorbet, and Copilot — Effective Learning with Ryan Caldwell
In this episode of Ruby for All, Andrew and Julie chat about their recent experiences, including a ski trip with challenges due to a storm, and discuss burnout and returning to regular podcasting. Special guest, Ryan Caldwell, a software engineer at GitHub working on Copilot, joins the conversation to discuss his work, particularly on chat-related features of Copilot. Ryan shares insights on programming languages, leaning into his transitions between Ruby, Java, and Go, and navigating the differences between dynamically and statically typed languages. The conversation covers the benefits and challenges of implementing type checking in Ruby with Sorbet, especially in large projects like GitHub. Ryan advocates for learning Ruby on Rails, praises its efficiency for staring profitable projects, and provides tips for using Copilot Chat effectively. Press download now to hear more!
[00:00:23] Julie fills us in on a recent skiing trip to went on in California, the huge storm they encountered and leaving early to avoid being stranded, the broken chain on their car, and a scary moment on a slope with her kids. Andrew shares he experienced burnout but sees improvement.
[00:02:47] Ryan Caldwell introduces himself and tells us what he does.
[00:03:53] Andrew asks Ryan about the programming languages used for Copilot, leading to a discussion about using Go for its REST API, the manageability of the project, and Ryan’s transition from Codespaces to Copilot after paternity leave.
[00:04:49] Andrew wonders why Go was chosen, and Ryan explains the team’s familiarity with Go and the language’s simplicity.
[00:06:12] Ryan reflects his first programming language and journey through JavaScript, Python, Java, and Ruby, highlighting his appreciation for Ruby. He talks about learning Ruby on the job, and his fondness for Rails.
[00:08:02] Ryan discusses the challenges of picking up new languages and his approach to learning through project involvement.
[00:09:24] Andrew asks about the shift from dynamic to typed languages, and Ryan shares his experiences transitioning from Ruby to Go.
[00:11:53] We hear about Ryan’s work on type checking with Sorbet at GitHub, and he shares that Sorbet helped find edge cases and bugs, improving the code by requiring changes to the structure to prevent these issues.
[00:15:09] Ryan feels the biggest benefit of Sorbet is enforcing developers to consider boundaries and contracts between classes, which encourages thoughtful coding and design. A downside he mentions is the time and confusion involved in the migration process, particularly for team members unfamiliar with the new syntax.
[00:17:11] Julie inquires if Ryan would do anything differently regarding Sorbet implementation. He reflects on the challenge of estimating the time required for implementing Sorbet, dealing with complex code, and the difficulty of refactoring legacy code without comprehensive tests.
[00:18:44] Would Ryan go back to Ruby/Rails without Sorbet? He states that he would for personal projects for speed but appreciates Sorbet in team settings for defining clear code boundaries.
[00:19:31] Ryan suggests that small teams should consider Sorbet if it solves a specific problem, rather than adopting it without a clear purpose.
[00:21:40] Ryan discusses his pride in streamlining the authentication process across different clients in Copilot, leading to a simplified codebase for the team. A tip he shares is to provide as much context as possible when using Copilot Chat to get better responses.
[00:25:35] Andrew talks about custom instructions for ChatGPT, like ensuring all output is in bullet points, and wonders if such a feature exists for Copilot.
[00:28:46] Ryan advises newer developers to be intentional about what they chose to learn in software development, emphasizing the importance of investing learning time wisely. And yes, Ruby on Rails is still worth learning in 2024.
[00:31:03] Find out where you can follow Ryan on the interwebs.
Panelists:
Andrew Mason
Julie J.
Guest:
Ryan Caldwell
Sponsors:
Links:
Next Episode

Vegas Vibes — Sin City Ruby 2024 Recap with Drew Bragg
In this episode of 'Ruby for All', host Andrew is joined by guest Drew Bragg to talk about the ins and outs of the Sin City Ruby conference. Drew provides a comprehensive breakdown of the event, highlighting the mix of technical and lifestyle talks presented, the benefits of regional conferences for building community and networking, and the unique atmosphere that smaller, regional conferences offer. Additionally, the episode covers the importance of Ruby and Rails in current technology, personal experiences with speaking and organizing community events, and thoughts on the future of regional programming conferences. The conversation concludes with Drew emphasizing the value of these gatherings in strengthening the Ruby community and encouraging participation in future events. Hit download now to hear more!
[00:00:29] Drew introduces himself and tells us what he does, and Andrew explains why he didn’t attend the conference and what he did instead.
[00:02:45] Drew talks about his game show-style talk he gave, which is interactive and challenges attendees’ knowledge of esoteric Ruby syntax.
[00:05:31] Andrew brings up seeing Jason’s talk and the attendee makeup at Sin City Ruby, noting many new faces and speculating on the impact of regional conferences bringing in local attendees who might not travel to larger conferences.
[00:07:51] Andrew asks about the speakers’ dinner, which Drew describes as a communal eating experience.
[00:11:42] Drew explains the first day began with a forced socialization event which Drew found more pleasant in a smaller conference setting.
[00:12:44] Andrew inquires about the style of talks at Sin City Ruby, wondering if there was a particular focus. Drew describes the conference as having a mix of topics with some technical, business-related, and lifestyle-oriented tasks related to Ruby and Rails.
[00:14:01] Drew mentions enjoying Stéfanni Brasil’s talk, Jason’s live coding dressed as Elvis was very entertaining and hilarious, and Obie Fernandez’s closing keynote offering a different perspective on AI’s impact on the industry.
[00:15:40] Regarding lack of recordings at the conference, Drew sees benefits form a speaker’s perspective, and acknowledges that recordings can be valuable for review and as a portfolio asset.
[00:18:41] Drew prefers speaking at smaller conferences for the close-knit atmosphere and better audience interaction but acknowledges that larger conferences have their own advantages.
[00:21:12] Andrew asks what went well with this conference, and Drew explains he appreciates the laid-back nature and mentioned the relaxed atmosphere set by organizer Jason Swett made the event feel more like a meetup.
[00:24:23] Drew shares that he didn’t find any aspect of the conference that didn’t go well and praises the simplicity of regional conferences like Sin City Ruby. He emphasizes the convenience of Vegas as a conference location.
[00:25:40] Discussing Vegas itself, both Andrew and Drew enjoyed visiting Hoover Dam and the overall experience of connecting with people with shared interests in Ruby. They also touch on having fun people-watching and the vibrant environment of “Old Vegas.”
[00:27:55] Drew’s takeaway from the conference is the reaffirmation of Ruby and Rails’ potential and expresses enthusiasm for the talks he attended, singling out Tom Rossi’s as particularly energetic and engaging.
[00:31:01] Drew promotes the idea of attending or organizing local conferences for their intimate nature and the connections they foster. He gives a shout-out to several upcoming Ruby conferences.
[00:32:05] Find out where you can follow Drew and his podcast online.
Panelist:
Andrew Mason
Guest:
Drew Bragg
Sponsors:
Links:
Code and the Coders who Code it Podcast
Sin City Ruby 2024
- (00:29) - Sin City Ruby: Drew’s Introduction
- (02:45) - Game Show Talk: Testing Ruby Knowledge
- (05:31) - New Faces at Sin City Ruby
- (07:51) - Speakers' Dinner: A Communal Experience
- (11:42) - Forced Socialization: Networking Made Easy
- (12:44) - Talk Styles: Te...
If you like this episode you’ll love
Episode Comments
Generate a badge
Get a badge for your website that links back to this episode
<a href="https://goodpods.com/podcasts/ruby-for-all-418618/the-state-of-debugging-in-ruby-a-puts-tastic-journey-58054550"> <img src="https://storage.googleapis.com/goodpods-images-bucket/badges/generic-badge-1.svg" alt="listen to the state of debugging in ruby — a puts-tastic journey on goodpods" style="width: 225px" /> </a>
Copy