Upcase header logo small 74d881f2938298c588db0b7c93de56caf020a767f5981ad9919f1ab5728e278f

Learn with thoughtbot

The Weekly Iteration

Learn to write better code in less than 30 minutes a week


This video is a preview. Subscribe to Upcase to access the full-length video, and all other videos.

Responsive Design

23 minutes

Responsive design is a critical approach to making sure your content is useful and readable on the increasingly large array of device sizes in use today. Tune in as Chris and Ryan discuss the ins and outs of responsive design, sharing the techniques, workflows, and thinking we use here at thoughtbot.


24 minutes

This week, Chris is joined by thoughtbot's Development Director, Josh Clayton, to talk about factory_girl; a topic near and dear to Josh's heart, as he's been the maintainer of the project for over five years.

Factory Girl is one of thoughtbot's most popular open-source projects, and is one of the few gems that we consider a requirement for every project, new or old. Let's discover why.

Encapsulation and Global State in Rails

28 minutes

Rails makes many of our day to day tasks much easier, but sometimes this ease comes at a cost. Consistently across applications we see a lack of encapsulation and the shared global state of controllers and views to be one of the biggest sources of complexity and bugs. In this episode Chris and Josh dive into the causes, and solutions to this complexity in hopes of building easier to maintain Rails apps.


14 minutes

gitsh, a thoughtbot open-source project, is an interactive shell specifically designed for git. This week, Chris shows us how it can really streamline our workflow.

Generating PDFs With Rails

25 minutes

On this week's episode, Chris takes us through everything we need to work with PDFs in our Rails apps: the easiest way to generate them, how to properly serve them as responses in our controllers, and even how to test them.

Rspec Bisect

9 minutes

On this week's episode, Chris is joined by Derek Prior to discuss Rspec's Bisect, a tool to track down order-dependence in your test suite and banish pesky intermittent test failures.

Upcase Code Contest

37 minutes

Recently, we ran a group-coding app-building contest for Upcase subscribers. In this video, Ben and Chris review each of the submissions, both highlighting great aspects and suggesting some areas for improvement. Live code review at its finest!

Let's Build a CLI

23 minutes

"Just mark it as executable and place it somewhere on your PATH." If that sentence leaves you with more questions than answers, then today's episode is right up your alley. Chris & Harry team up to provide a concise but thorough introduction to writing command line utilities. Tune in to learn everything you need to get started with using, and even writing your own command line utilities!

Emacs Intro

24 minutes

We've avoided it for a hundred episodes now, but the time has finally come to talk about that other text editor. Join Chris and Harry as they dive into the wild world of Emacs and see what things look like on the other side of the aisle.

Chrome Dev Tools

24 minutes

The Chrome DevTools are an amazing tool and a critical part of our workflow on Upcase and client apps. Tune in as Ben & Chris discuss their favorite features and tips for getting the most out of the DevTools.

Building Static Sites with Middleman

33 minutes

When all you have is the hammer of Rails, everything looks like a database backed dynamic site. But often we'd be much better served by a simple static site, and Middleman is a great choice for building these static sites. Join Chris as he shows off some of the more advanced tips and techniques you can use to efficiently build and deploy your next static site.

Advanced Query Optimization

29 minutes

Slow and redundant database queries got you down? Well have no fear! On this week's episode, Chris and Joe dive deep into the strategies you can use to optimize your queries and get your app back to ludicrous speed ASAP.

Testing Antipatterns

23 minutes

Tests are code too, and they deserve the same love and careful refactoring you'd show to your production code. In fact, there are a number of antipatterns and pitfalls unique to test code that can trip you up. Tune in to learn all the dos and don'ts as Chris and Joe dive deep into testing antipatterns.

Elm - A Front End Language with Style

29 minutes

Elm is a new language for building browser based applications that brings together the purity of Haskell and the pragmatism of JavaScript in hopes of getting the best of both worlds. Tune in as Chris and Joël dive into Elm to see what it's all about.


20 minutes

Rack is the glue that binds application frameworks like Rails and Sinatra to web servers like thin and puma. In this episode Joël Quenneville takes us on a tour of Rack and shows us how we can take advantage of the Rack pattern to build more robust and decoupled applications.


20 minutes

This week we take a quick detour into the design world to learn about Flexbox, a major enhancement to defining layouts in CSS. Chris is joined by thoughtbot designer Mike Borsare to learn the ins and outs of flexbox and how it can make our lives easier when designing modern webapps.

ES6 - JavaScript Evolved

23 minutes

Chris is joined by Blake Williams for a discussion about ES6, the collection of proposed enhancements and updates to the JavaScript specification.

Intro to Elixir

12 minutes

Chris is joined by Blake Williams to get an introduction to the Elixir programming language. Tune in to learn about this functional, concurrent, fault tolerant wonder-language with a Ruby-like syntax.

Intro to Accessibility

19 minutes

Derek gives Chris a rundown on a11y, aka web accessibility. Tune in to the learn why accessibility matters for all apps, how to approach it, and what tools are available to help on the journey.

Web Security

19 minutes

On this week's video, Chris is joined by Derek to discuss web security. Tune in to learn about the available resources and tools, and some specific issues to watch out for in Rails apps.

Intro to Docker

35 minutes

On this week's episode, Chris is joined by thoughtbot CTO Joe Ferris to discuss Docker, the open platform for building and running containerized applications.

Live Refactoring with Joe

19 minutes

In this episode, Chris is joined by thoughtbot CTO Joe Ferris.

With the magic of live-coding, Joe demonstrates how a simple Extract Class refactoring can lead to a host of code improvements.

Page Objects

20 minutes

On this week's episode, Chris is again joined by Josh Clayton, Boston Development Director and TDD master, this time to discuss the power of page objects for cleaning up feature specs.

Heroku Tips and Tricks

20 minutes

On this week's episode, Chris is joined by Boston Development Director and TDD master Josh Clayton to discuss some of the tips we have here at thoughtbot for working with Heroku-deployed applications.

Building a Gem

20 minutes

On this episode of the Weekly Iteration, Chris is again joined by Derek Prior, this time discussing building and extracting gems.


16 minutes

On this week's episode, Chris is again joined by fellow bot Derek Prior, this time to discuss Turbolinks. Tune in to learn how to speed up your Rails apps, almost automatically!

Active Support

17 minutes

On this week's episode, Chris is again joined by Melanie Gilman to discuss the amazing array of extensions added to Ruby by Rails' Active Support component.

Enumerable & Comparable

18 minutes

On this week's episode, Chris is joined by fellow thoughtbotter, Melanie Gilman, to discuss the wonder of Ruby's Enumerable and Comparable interfaces and how you can incorporate them into your own classes.

Speaking For Developers

22 minutes

Chris and Ben discuss the magic of speaking, from lightning talks all the way to conferences. Tune in to learn the specific tips and approach that will help you land a spot and deliver a great talk.


29 minutes

In this week's episode, Chris is joined by Gabe Berke-Williams to discuss all things API, HTTP, and JSON. Tune in to learn the tools, workflows, and approach that Chris, Gabe, and thoughtbot at large use to interact with APIs.

Intro to Dotfiles

25 minutes

In this weeks episode, Chris & Gabe dive into the world of dotfiles, the files we use to configure some of our favorite tools. Tune in to find out how Chris, Gabe, and thoughtbot think about and organize these critical files.

The Story of a Feature: Flashcards

22 minutes

On this episode of the Weekly Iteration, Chris and Ben discuss the recently added Flashcards feature on Upcase. See a behind the scenes look at the processes, decisions, and code used to release this new feature.

Parsing Program Languages

13 minutes

On this weeks episode Chris and Goose present an introduction to writing a programming language. From lexing to parsing find out more by watching this week's episode.

Regular Expressions

29 minutes

In this episode of the Weekly Iteration, Chris is joined by Matthew Mongeau, aka [Goose][], to discuss regular expressions. Learn how to work with them, where they fit, and perhaps more importantly where they don't.

Intro to React

19 minutes

On this weeks episode Chris presents an introduction to Facebook's React.js framework. React is a JavaScript framework used for building dynamic UIs. Learn why React is interesting and what makes it different from the other frameworks for JS UIs.

Git Workflow

18 minutes

In this week's video, Chris is joined by Josh Steiner to discuss the git and github workflow we use here at thoughtbot. We'll cover feature branches, pull requests, rebasing, and finally merging our new feature into master!


18 minutes

Internationalization (i18n) is well supported in Rails. Being aware of and using i18n in your applications as you build them can save you significant pain from having to retrofit a larger application at a later date and on a deadline.

Debugging For Fun and Profit

15 minutes

In this week's video Chris is joined by Derek Prior and they run through the process used to solve a real production bug on Upcase! Check out the PR that fixes the bug discussed in this video for more context.

Intro to Ember

16 minutes

Matt joins Ben to discuss the pros and cons of Ember, as well as resources to get started learning this framework for creating ambitious web applications.

Managing Windows in Vim

7 minutes

In this episode, Ben shows you how to use vim's windows to efficiently edit code.

Getting Help in Vim

8 minutes

In this episode, Ben shows you how to use vim's powerful built-in help.

Route, Controller, Action

8 minutes

In this screencast, Ben and Chris go back to basics and tackle the first exercise in the Rails Fundamentals trail, "Route, Controller, Action". They create a route, controller, and action using TDD to tell them what to write next.

Surviving Your First Week in Vim (and beyond)

15 minutes

Ben & Chris give some tips and tricks on how to survive your first week in Vim.

The Second Feature is Easier

29 minutes

Ben and Joe continue to develop the Pastie application, demonstrating how to introduce authentication. We discuss how to retrofit existing components with unit tests, as well as the differences between authentication and authorization.

The First Feature is the Hardest

22 minutes

Ben joins Joe and build out the first feature in a Rails application, from scratch. Learn our process for jump-starting new applications using Suspenders. We'll also use our first integration test to help sketch out the first interactions in the application.

Serving Your Front-End

27 minutes

Lydia joins Ben to talk about the front-end tools that thoughtbot designers use: Bourbon, Neat, Bitters, and Refills. Then, see them in action while styling a production app!

Apprentice.io Experiences

24 minutes

Gabe joins Ben to discuss Apprentice.io. They discuss how to be a great mentor, how to help apprentices feel comfortable, and how (and why) to run an apprenticeship program at your company.

Ruby Science: Extract Class

19 minutes

Show notes:

Melanie joins Joe again to discuss the classic refactoring step: Extract Class. Learn how to safely split up a Large Class in small steps, keeping your tests green as much as possible while Melanie demonstrates this technique live. After watching, try it out for yourself in our refactoring trail.

Ruby Science: Introduce Parameter Object

8 minutes

Melanie joins Joe to demonstrate a simple (but useful) pattern: Parameter Objects. Melanie replaces a long parameter list with one object in a single bound! Try it for yourself in our refactoring trail.

Ruby Science: Move Method

10 minutes

Show notes:

Melissa joins Joe once again to demonstrate another refactoring technique from Ruby Science: move method. Learn about Feature Envy, how to reveal it using Extract Method, and how to remove it using Move Method. Follow along yourself on our refactoring trail.

Ruby Science: Extract Method

9 minutes

Melissa joins Joe to discuss a basic refactoring technique: Extract Method. Follow along as Melissa applies this refactoring live to an example from Ruby Science. After watching, you can refine your refactoring techniques using our refactoring trail.

Speedy Tests

21 minutes