The Weekly Iteration
Learn to write better code in less than 30 minutes a week
Intro to SSH
SSH is a foundational topic for anyone working on the web, and at a minimum it's important to understand how SSH is used for authentication with Git and similar tools. In this episode we'll cover these basics as well as some of the more interesting tricks we can pull off using SSH.
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.
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
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.
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
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.
Upcase Code Contest
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
"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!
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
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