Videos

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

Ben and Joe review several pull requests against the Learn database, pointing out techniques and patterns for having a constructive and efficient code review. Learn how the thoughtbot protocol leads to cleaner and faster reviews. Follow along as...

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

Ben and Joe discuss the dos and (mostly) don'ts when it comes to ActiveRecord callbacks. You'll find out why you're generally better off not using this feature, with several suggestions for better alternatives.

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

In this episode, Joe and Ben look at a class which was written without using TDD. By rewriting it with tests first, we discover that a new class was waiting to be extracted, making the overall solution clearer.

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

How do functional program and object-oriented programming stack up in Ruby? In this episode, Ben and Joe dive find out. We've put together a number of code samples, each of which follows an object-oriented, functional, or hybrid approach. We'll...

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

In this episode, Ben shares a story of how he screwed up but still had some good come of it. Further reading: Kent Beck's tweet When to refactor

Hosted by

Ben Orenstein and Tony

Ben Orenstein
Tony

In this episode, special guest Tony joins us to give his first impressions on Swift as an Objective-C developer. Swift Programming Book WWDC Swift Session Videos: Tony recommends Intro, Intermediate & Advanced Swift to get started.

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

By popular demand, Ben and Joe return with the "Ship A Feature" series. This time, they add Markdown support to the comment field for Learn's exercises. The pull request Previous Ship A Feature

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

In this episode, Ben and Joe extract a matcher written in a project and create a pull request to include it in shoulda-matchers. Check out the pull request

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

Learn how to debug confusing test failures using interactive tools like byebug. Also learn the difference between REPLs like pry and stepping debuggers.

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

In this episode, Ben and Joe ship a feature from start all the way into production. For more info, check out: The actual pull request and commit in the Learn codebase. Our protocol for getting things done, The parity gem and Travis, our CI...

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

In this episode, Joe demonstrates his setup for development including: How he uses rcm to combine the thoughtbot dotfiles with his own customizations How he uses MacVim, vim-rspec, and OS X Terminal to streamline TDD How he uses snippets to...

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

Ben and Joe follow up on a previous episode on extracting classes to demonstrate the classic followup punch to Extract Class: Invert Control. They show the previous example in the context of an integration-tested Rails application, and...

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

In this episode, Ben and Joe discuss value objects. You can learn more about value objects in Ruby Science, or on Martin Fowler's blog. You might also want to try you hand at our Extract Value Object exercise on the Refactoring Trail.

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

This episode covers the D in SOLID, the Dependency Inversion Principle (DIP). In it, you'll learn why you might want to inject a class' dependencies and how to do so. Additionally, we'll show how following this principle makes it easier to follow...

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

Take a tour through the history of dependency management in statically compiled languages. Learn why languages like C++ and Java need to explicitly build up small interfaces where Ruby is saved by duck typing, and then discover the lessons Ruby...

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

Ben and Joe tackle the third principle in SOLID: the Liskov Substitution Principle. Learn some basic rules you can apply to subclasses and other "is a" relationships to improve flexibility in your applications and reduce subtle bugs from interface...