The Weekly Iteration
Learn to write better code in less than 30 minutes a week
Chrome Dev Tools
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
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
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.
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
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.
Intro to Accessibility
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.
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.
Building a Gem
On this episode of the Weekly Iteration, Chris is again joined by Derek Prior, this time discussing building and extracting gems.
Enumerable & Comparable
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
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.
APIs, HTTP, & JSON
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
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
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
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.
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.
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!
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.
Intro to Ember
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
In this episode, Ben shows you how to use vim's windows to efficiently edit code.
Getting Help in Vim
In this episode, Ben shows you how to use vim's powerful built-in help.
Surviving Your First Week in Vim (and beyond)
Ben & Chris give some tips and tricks on how to survive your first week in Vim.
The Second Feature is Easier
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
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
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!
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
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: Move Method
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.
Haskell: Pattern Matching
Haskell: Intro to Types
Haskell: Intro to Functions
Property-Based Testing in Swift
You Got Your Objective-C In My Swift!
Stubs, Mocks, Spies, and Fakes
Tightening the TDD Feedback Loop
Vim: To Config or Not to Config?
Rubyisms In Swift
Integration vs Unit Testing
Intro to ClojureScript
Isolated Unit Testing
Testing Vanity Metrics
Improving Vim Speed
Dependency Management in Rails
Four Phases of Testing
Functors Are More Fun Than Nil
Sandi Metz's Rules
Landing a Rails Job
Composition Over Inheritance
Tips For Code Review
Demonstrate Class Design Via TDD
Swift First Impressions
Ship A Feature: Supporting Markdown
Contributing To Open Source, Step-By-Step
Interactively Debugging Test Failures
Ship a Feature
Show Your Setup: Joe Ferris
Dependency Inversion Principle
Interface Segregation Principle
Liskov Substitution Principle
Single Responsibility Principle
RSpec Best Practices
Ping-Pong, Paired Programing
Noodling Around [part 2, Haskell]
Noodling Around [part 1, Clojure]
Law of Demeter
Inject: Ruby's Fold
Tell, Don't Ask
Refactoring Fast Order Line, with Joe Ferris
Polymorphic Finder, with Joe Ferris
Improving your Workflow, with Chris Toomey
Coupling, with Joe Ferris
Nil is Unfriendly, with Joe Ferris