Skip to content

Instantly share code, notes, and snippets.

@mwenger1
Last active February 17, 2017 18:27
Show Gist options
  • Save mwenger1/f4f5d684082b1c59543fca6516c1c7f3 to your computer and use it in GitHub Desktop.
Save mwenger1/f4f5d684082b1c59543fca6516c1c7f3 to your computer and use it in GitHub Desktop.
[
{
"title": "Elixir & Phoenix in Production",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "18",
"tags": [
"Foundations",
"Testing"
],
"description": "Elixir & Phoenix, so hot right now! On this week’s episode we’ll take a look at some of the great features of both Elixir and Phoenix through the lens of Bamboo, a library for sending emails in Phoenix apps, recently released by thoughtbot...",
"hosts": ["Paul Smith and Chris Toomey"]
},
{
"title": "Readline",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "18",
"tags": [
"Workflow",
"Foundations"
],
"description": "What is a line editor, and how can you use it in your workflow? In this Weekly Iteration, George Brocklehurst and Chris Toomey explore Readline, the most common line editor. Learn how to use it in the shell, your REPLs, and even in your GUI.",
"hosts": ["George Brocklehurst and Chris Toomey"]
},
{
"title": "You Might Not Need JavaScript",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "21",
"tags": [
"Clean Code",
"Design",
"JavaScript"
],
"description": "Historically, developers and designers have reached for JavaScript to build\ncertain presentational features such as animations and transitions. With modern\nCSS features, some of these capabilities can now be achieved with little to no\nJavaScript....",
"hosts": ["Chris Toomey"]
},
{
"title": "Design Patterns in Django and Python",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "20",
"tags": [
"Clean Code"
],
"description": "On this episode of The Weekly Iteration, George Brocklehurst, development\ndirector from thoughtbot's NYC office, joins us to take a tour of a handful of\ndesign patterns through the lens of the Django web framework. Specifically,\nwe'll take a look...",
"hosts": ["Chris Toomey and George Brocklehurst"]
},
{
"title": "Testing Interaction with 3rd-party APIs",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "27",
"tags": [
"Ruby on Rails",
"Clean Code",
"Testing"
],
"description": "If your application uses third-party APIs, it can be complicated to write good, flexible tests that don't depend on the service being present (or don't touch production data). In this Weekly Iteration, Joël Quenneville and Chris Toomey examine...",
"hosts": ["Joel Quenneville and Chris Toomey"]
},
{
"title": "Blocks: What Are They Good For?",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "29",
"tags": [
"Foundations"
],
"description": "Blocks are a core concept in Ruby, and while they make frequent appearances in\nRuby code, developers may not be aware of exactly how they work or all the\nthings they can do. In this video, Boston Development Director Josh Clayton\nwalks through...",
"hosts": ["Joshua Clayton and Chris Toomey"]
},
{
"title": "Optimizing SQL Queries in Postgres",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "23",
"tags": [
"Foundations"
],
"description": "Often when talking about optimizing data SQL in web applications we focus on\nthe application layer concerns like n+1 queries and the like, but occasionally\nwe'll need to dive down into the database layer itself to optimize our\nqueries. In this...",
"hosts": ["Chris Toomey and Joe Ferris"]
},
{
"title": "Running a Retrospective",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "16",
"tags": [
"Foundations"
],
"description": "Retrospectives are a core part of our process for keeping projects running\nsmoothly, encouraging open communication, and hitting our goals. In this\nvideo, Joe Ferris, thoughtbot CTO, leads Chris and Ian through a typical\nretro while describing the...",
"hosts": ["Chris Toomey, Joe Ferris, and Ian C. Anderson"]
},
{
"title": "Running Meetups and Events",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "19",
"tags": [
"Foundations"
],
"description": "Meetups are a great way to involve yourself in your local programming\ncommunities, as well as find other people with similar interests. Join Melissa\nXie and Gabe Berke-Williams to learn how to organize and run your own meetups.",
"hosts": ["Gabe Berke-Williams and Melissa Xie"]
},
{
"title": "Why Use Statically Typed Languages?",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "15",
"tags": [
"Foundations"
],
"description": "In this video we'll show you the range and power of type systems of various languages, and explain why you might be interested in checking out a more strongly typed language.",
"hosts": ["Gabe Berke-Williams and Ian C. Anderson"]
},
{
"title": "Manage and Share Your Dotfiles with rcm",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "14",
"tags": [],
"description": "Managing your dotfiles can be a real pain. rcm lets you organize related configuration files with tags, safely install your dotfiles, and share your dotfiles with others so that they can try out pieces of your configuration.",
"hosts": ["Gabe Berke-Williams"]
},
{
"title": "Metaprogramming in Ruby",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "11",
"tags": [],
"description": "A metaprogram is a program that writes other programs, and metaprogramming is\nthe process of writing these metaprograms.\n\nA common use of metaprogramming\n\nHere's an example of metaprogramming in Ruby:\n\nclass Post\n def initialize(status)\n ...",
"hosts": ["Gabe Berke-Williams and Ian C. Anderson"]
},
{
"title": "React Native",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "30",
"tags": [
"iOS",
"JavaScript"
],
"description": "React Native is a project from Facebook that allows developers to use React to\nbuild native mobile applications. This presents an amazing opportunity as now\nwe can use the same tools, workflows, and approach to build for both web and\nmobile,...",
"hosts": ["Chris Toomey and Giles Van Gruisen"]
},
{
"title": "Managing Production Applications",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "20",
"tags": [
"Ruby on Rails"
],
"description": "Take a peek behind the scenes at some of features and workflows we've built up\nto help support Upcase as a production application and manage it across the\nvaried environments of development, staging, and production.",
"hosts": ["Chris Toomey"]
},
{
"title": "Maintaining Open Source",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "31",
"tags": [
"Ruby on Rails",
"Clean Code"
],
"description": "Join Tute Costa, the maintainer of thoughtbot's Paperclip gem, as he talks about how to be the best maintainer you can be, including how to quickly respond to issues and how to version your code.",
"hosts": ["Tute Costa and Chris Toomey"]
},
{
"title": "Clearance: Rails Authentication Made Easy",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "19",
"tags": [
"Ruby on Rails"
],
"description": "Join Chris and Derek Prior (Development Director in thoughtbot's Boston office) to talk about Clearance, a great solution for email and password authentication. Just like Rails, Clearance is opinionated, and those opinions help make it more\nsecure...",
"hosts": ["Derek Prior and Chris Toomey"]
},
{
"title": "Rails 5 - What's In It For You?",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "30",
"tags": [
"Ruby on Rails"
],
"description": "Rails 5 is on the horizon and now's the perfect time to take a look at the features and changes coming with this major release. Derek Prior takes us on a tour of the changes, as well as showing us how to upgrade to the current Rails 5 beta.",
"hosts": ["Derek Prior and Chris Toomey"]
},
{
"title": "Contributing to Open Source",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "15",
"tags": [
"Foundations"
],
"description": "Join Tute Costa and Chris Toomey to learn about contributing to open source\nprojects. Let's dispel some of the myths, learn how to be a better contributor, and start giving back to the projects we use every day.",
"hosts": ["Tute Costa and Chris Toomey"]
},
{
"title": "Computer Science: Why Bother?",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "24",
"tags": [
"Foundations"
],
"description": "Computer science can seem scary, but with the right mental framework it's actually quite approachable. Follow along with Harry Schwartz, thoughtbot developer in Boston, as he walks you through his favorite parts of computer science and why it even...",
"hosts": ["Chris Toomey and Harry Schwartz"]
},
{
"title": "Refactoring, Extraction, and Naming",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "24",
"tags": [
"Clean Code"
],
"description": "As developers, naming is our most powerful tool to make our code understandable. It's an essential part of refactoring. Learning what to pull out, and what to name it, makes our code more maintainable. In this episode, you'll learn how to apply...",
"hosts": ["Ian C. Anderson and Chris Toomey"]
},
{
"title": "Extending the Vim Language",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "16",
"tags": [
"Vim"
],
"description": "Vim's true power lies in its command language. Learning that language can\nexponentially increase your knowledge because we can combine new operators with\nwhat we already know to create powerful new operators and mappings. In this\nepisode, you'll...",
"hosts": ["Chris Toomey"]
},
{
"title": "Ruby Keyword Arguments",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "15",
"tags": [
"Ruby on Rails",
"Clean Code"
],
"description": "Keyword arguments allow us to write code that is both more expressive, and more flexible. Tune in as Ian and Chris dive into some of the more subtle aspects and demonstrate how we can use keyword args to produce clear, reliable code.",
"hosts": ["Chris Toomey and Ian C. Anderson"]
},
{
"title": "JavaScript Promises",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "28",
"tags": [
"JavaScript"
],
"description": "Promises are an abstraction that makes working with asynchronous code more\nmanageable and consistent. Rather than passing a callback function to an\nasynchronous operation (and possibly falling into the dreaded callback pyramid\nof doom), the...",
"hosts": ["Matthew Sumner and Chris Toomey"]
},
{
"title": "Database Views with Scenic",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "20",
"tags": [
"Ruby on Rails"
],
"description": "Database views are a great way to separate the complexities of database persistence from your application logic. Unfortunately Rails doesn't have built-in support for them, making them difficult to work with. Scenic, a new gem from thoughtbot,...",
"hosts": ["Chris Toomey and Derek Prior"]
},
{
"title": "REST",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "31",
"tags": [
"Foundations"
],
"description": "REST is the core architectural pattern we use to build our Rails applications,\nbut it's not always clear what exactly is and isn't REST. Tune in as Matt Sumner joins Chris to discuss exactly what REST is, and how best to embrace it in your Rails...",
"hosts": ["Matthew Sumner and Chris Toomey"]
},
{
"title": "Intro to SSH",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "15",
"tags": [
"Foundations"
],
"description": "SSH is a foundational topic for anyone working on the web, and at a minimum\nit's important to understand how SSH is used for authentication with Git and\nsimilar tools. In this episode we'll cover these basics as well as some of the\nmore...",
"hosts": ["Chris Toomey and Derek Prior"]
},
{
"title": "Responsive Design",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "23",
"tags": [
"Design"
],
"description": "Responsive design is a critical approach to making sure your content is useful\nand readable on the increasingly large array of device sizes in use today.\nTune in as Chris and Ryan discuss the ins and outs of responsive design,\nsharing the...",
"hosts": ["Ryan Coughlin and Chris Toomey"]
},
{
"title": "factory_girl",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "24",
"tags": [
"Ruby on Rails"
],
"description": "This week, Chris is joined by thoughtbot's Development Director in Boston, Josh\nClayton, to talk about factory_girl; a topic near and dear to Josh's\nheart, as he's been the maintainer of the project for over five years.\n\nFactory Girl is one of...",
"hosts": ["Joshua Clayton"]
},
{
"title": "Encapsulation and Global State in Rails",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "28",
"tags": [
"Ruby on Rails"
],
"description": "Rails makes many of our day to day tasks much easier, but sometimes this ease\ncomes at a cost. Consistently across applications we see a lack of\nencapsulation and the shared global state of controllers and views to be one\nof the biggest sources of...",
"hosts": ["Joshua Clayton and Chris Toomey"]
},
{
"title": "Gitsh",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "14",
"tags": [
"Workflow"
],
"description": "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.",
"hosts": ["Chris Toomey"]
},
{
"title": "Generating PDFs With Rails",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "25",
"tags": [
"Ruby on Rails"
],
"description": "On this week's episode, Chris takes us through everything we need to work with\nPDFs in our Rails apps: the easiest way to generate them, how to properly serve\nthem as responses in our controllers, and even how to test them.",
"hosts": ["Chris Toomey"]
},
{
"title": "Rspec Bisect",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "9 ",
"tags": [
"Ruby on Rails",
"Testing"
],
"description": "On this week's episode, Chris is joined by Derek Prior to discuss Rspec's\nBisect, a tool to track down order-dependence in your test suite and banish\npesky intermittent test failures.",
"hosts": ["Chris Toomey and Derek Prior"]
},
{
"title": "Upcase Code Contest",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "37",
"tags": [
"Ruby on Rails",
"Clean Code",
"Testing"
],
"description": "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!",
"hosts": ["Chris Toomey and Ben Orenstein"]
},
{
"title": "Let's Build a CLI",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "23",
"tags": [
"Workflow"
],
"description": "\"Just mark it as executable and place it somewhere on your PATH.\" If that\nsentence leaves you with more questions than answers, then today's episode is\nright up your alley. Chris & Harry team up to provide a concise but thorough\nintroduction...",
"hosts": ["Chris Toomey and Harry Schwartz"]
},
{
"title": "Emacs Intro",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "24",
"tags": [
"Foundations"
],
"description": "We've avoided it for a hundred episodes now, but the time has finally come to\ntalk 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.",
"hosts": ["Chris Toomey and Harry Schwartz"]
},
{
"title": "Chrome Dev Tools",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "24",
"tags": [
"Workflow"
],
"description": "The Chrome DevTools are an amazing tool and a critical part of our workflow on\nUpcase and client apps. Tune in as Ben & Chris discuss their favorite features\nand tips for getting the most out of the DevTools.",
"hosts": ["Chris Toomey and Ben Orenstein"]
},
{
"title": "Building Static Sites with Middleman",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "33",
"tags": [
"Ruby on Rails"
],
"description": "When all you have is the hammer of Rails, everything looks like a database\nbacked dynamic site. But often we'd be much better served by a simple static\nsite, and Middleman is a great choice for building these static sites.\nJoin Chris as he shows...",
"hosts": ["Chris Toomey"]
},
{
"title": "Advanced Query Optimization",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "29",
"tags": [
"Ruby on Rails"
],
"description": "Slow and redundant database queries got you down? Well have no fear! On this\nweek's episode, Chris and Joe dive deep into the strategies you can use to\noptimize your queries and get your app back to ludicrous speed ASAP.",
"hosts": ["Joe Ferris and Chris Toomey"]
},
{
"title": "Testing Antipatterns",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "23",
"tags": [
"Testing"
],
"description": "Tests are code too, and they deserve the same love and careful refactoring\nyou'd show to your production code. In fact, there are a number of\nantipatterns and pitfalls unique to test code that can trip you up. Tune in to\nlearn all the dos and...",
"hosts": ["Chris Toomey and Joe Ferris"]
},
{
"title": "Elm - A Front End Language with Style",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "29",
"tags": [
"Foundations"
],
"description": "Elm is a new language for building browser based applications that brings\ntogether the purity of Haskell and the pragmatism of JavaScript in hopes of\ngetting the best of both worlds. Tune in as Chris and Joël dive into Elm to\nsee what it's all...",
"hosts": ["Joel Quenneville and Chris Toomey"]
},
{
"title": "Rack",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "20",
"tags": [
"Ruby on Rails"
],
"description": "Rack is the glue that binds application frameworks like Rails and Sinatra to\nweb servers like thin and puma. In this episode Joël Quenneville takes us\non a tour of Rack and shows us how we can take advantage of the Rack pattern\nto build more...",
"hosts": ["Chris Toomey and Joel Quenneville"]
},
{
"title": "Flexbox",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "20",
"tags": [
"Design"
],
"description": "This week we take a quick detour into the design world to learn about Flexbox,\na major enhancement to defining layouts in CSS. Chris is joined by thoughtbot\ndesigner Mike Borsare to learn the ins and outs of flexbox and how it can make\nour lives...",
"hosts": ["Mike Borsare and Chris Toomey"]
},
{
"title": "ES6 - JavaScript Evolved",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "23",
"tags": [
"JavaScript"
],
"description": "Chris is joined by Blake Williams for a discussion about ES6, the collection of proposed enhancements and updates to the JavaScript specification.",
"hosts": [""]
},
{
"title": "Intro to Elixir",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "12",
"tags": [],
"description": "Chris is joined by Blake Williams to get an introduction to the Elixir\nprogramming language. Tune in to learn about this functional, concurrent,\nfault tolerant wonder-language with a Ruby-like syntax.",
"hosts": ["Chris Toomey and Blake Williams"]
},
{
"title": "Intro to Accessibility",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "19",
"tags": [
"Foundations"
],
"description": "Derek gives Chris a rundown on a11y, aka web accessibility. Tune in to the\nlearn why accessibility matters for all apps, how to approach it, and what\ntools are available to help on the journey.",
"hosts": ["Derek Prior and Chris Toomey"]
},
{
"title": "Web Security",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "19",
"tags": [
"Foundations"
],
"description": "On this week's video, Chris is joined by Derek to discuss web security. Tune\nin to learn about the available resources and tools, and some specific issues\nto watch out for in Rails apps.",
"hosts": ["Derek Prior and Chris Toomey"]
},
{
"title": "Intro to Docker",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "35",
"tags": [
"Workflow"
],
"description": "On this week's episode, Chris is joined by thoughtbot CTO Joe Ferris to\ndiscuss Docker, the open platform for building and running containerized\napplications.",
"hosts": ["Chris Toomey and Joe Ferris"]
},
{
"title": "Live Refactoring with Joe",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "19",
"tags": [
"Clean Code"
],
"description": "In this episode, Chris is joined by thoughtbot CTO Joe Ferris.\n\nWith the magic of live-coding, Joe demonstrates how a simple Extract Class\nrefactoring can lead to a host of code improvements.",
"hosts": ["Chris Toomey and Joe Ferris"]
},
{
"title": "Page Objects",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "20",
"tags": [
"Ruby on Rails",
"Testing"
],
"description": "On this week's episode, Chris is again joined by Josh Clayton, Boston\nDevelopment Director and TDD master, this time to discuss the power of page\nobjects for cleaning up feature specs.",
"hosts": ["Chris Toomey and Joshua Clayton"]
},
{
"title": "Heroku Tips and Tricks",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "20",
"tags": [
"Ruby on Rails"
],
"description": "On this week's episode, Chris is joined by Boston Development Director and TDD\nmaster Josh Clayton to discuss some of the tips we have here at thoughtbot\nfor working with Heroku-deployed applications.",
"hosts": ["Joshua Clayton and Chris Toomey"]
},
{
"title": "Building a Gem",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "20",
"tags": [
"Ruby on Rails"
],
"description": "On this episode of the Weekly Iteration, Chris is again joined by Derek\nPrior, this time discussing building and extracting gems.",
"hosts": ["Derek Prior and Chris Toomey"]
},
{
"title": "Turbolinks",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "16",
"tags": [
"Ruby on Rails"
],
"description": "On this week's episode, Chris is again joined by fellow bot Derek Prior,\nthis time to discuss Turbolinks. Tune in to learn how to speed up your\nRails apps, almost automatically!",
"hosts": ["Chris Toomey and Derek Prior"]
},
{
"title": "Active Support",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "17",
"tags": [
"Ruby on Rails"
],
"description": "On this week's episode, Chris is again joined by Melanie Gilman to\ndiscuss the amazing array of extensions added to Ruby by Rails' Active\nSupport component.",
"hosts": ["Chris Toomey and Melanie Gilman"]
},
{
"title": "Enumerable & Comparable",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "18",
"tags": [
"Ruby on Rails"
],
"description": "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.",
"hosts": ["Chris Toomey and Melanie Gilman"]
},
{
"title": "Speaking For Developers",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "22",
"tags": [
"Foundations"
],
"description": "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.",
"hosts": ["Chris Toomey and Ben Orenstein"]
},
{
"title": "APIs, HTTP, & JSON",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "29",
"tags": [
"Workflow"
],
"description": "In this week's episode, Chris is joined by Gabe Berke-Williams to discuss all\nthings API, HTTP, and JSON. Tune in to learn the tools, workflows, and\napproach that Chris, Gabe, and thoughtbot at large use to interact with APIs.",
"hosts": ["Chris Toomey and Gabe Berke-Williams"]
},
{
"title": "Intro to Dotfiles",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "25",
"tags": [
"Workflow"
],
"description": "In this weeks episode, Chris & Gabe dive into the world of dotfiles, the\nfiles we use to configure some of our favorite tools. Tune in to find out how\nChris, Gabe, and thoughtbot think about and organize these critical files.",
"hosts": ["Chris Toomey and Gabe Berke-Williams"]
},
{
"title": "The Story of a Feature: Flashcards",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "22",
"tags": [
"Workflow"
],
"description": "On this episode of the Weekly Iteration, Chris and Ben discuss the recently\nadded Flashcards feature on Upcase. See a behind the scenes look at the\nprocesses, decisions, and code used to release this new feature.",
"hosts": ["Chris Toomey and Ben Orenstein"]
},
{
"title": "Parsing Program Languages",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "13",
"tags": [
"Foundations"
],
"description": "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.",
"hosts": ["Chris Toomey and Matthew Mongeau"]
},
{
"title": "Regular Expressions",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "29",
"tags": [
"Foundations"
],
"description": "In this episode of the Weekly Iteration, Chris is joined by Matthew Mongeau,\naka [Goose][], to discuss regular expressions. Learn how to work with them,\nwhere they fit, and perhaps more importantly where they don't.",
"hosts": ["Chris Toomey and Matthew Mongeau"]
},
{
"title": "Intro to React",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "19",
"tags": [
"JavaScript"
],
"description": "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.",
"hosts": ["Chris Toomey"]
},
{
"title": "Git Workflow",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "18",
"tags": [
"Workflow"
],
"description": "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!",
"hosts": ["Chris Toomey and Josh Steiner"]
},
{
"title": "Internationalization",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "18",
"tags": [
"Workflow"
],
"description": "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.",
"hosts": ["Chris Toomey and Derek Prior"]
},
{
"title": "Debugging For Fun and Profit",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "15",
"tags": [
"Workflow"
],
"description": "In this week's video Chris is joined by Derek Prior and they run through the\nprocess used to solve a real production bug on Upcase! Check out the PR that\nfixes the bug discussed in this video for more context.",
"hosts": ["Chris Toomey and Derek Prior"]
},
{
"title": "Intro to Ember",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "16",
"tags": [
"JavaScript"
],
"description": "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.",
"hosts": ["Matthew Sumner and Ben Orenstein"]
},
{
"title": "Managing Windows in Vim",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "7 ",
"tags": [
"Vim"
],
"description": "In this episode, Ben shows you how to use vim's windows to efficiently edit code.",
"hosts": ["Ben Orenstein"]
},
{
"title": "Getting Help in Vim",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "8 ",
"tags": [
"Vim"
],
"description": "In this episode, Ben shows you how to use vim's powerful built-in help.",
"hosts": ["Ben Orenstein"]
},
{
"title": "Route, Controller, Action",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "8 ",
"tags": [
"Testing"
],
"description": "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.",
"hosts": ["Ben Orenstein and Chris Toomey"]
},
{
"title": "Surviving Your First Week in Vim (and beyond)",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "15",
"tags": [
"Vim"
],
"description": "Ben & Chris give some tips and tricks on how to survive your first week in Vim.",
"hosts": ["Chris Toomey"]
},
{
"title": "The Second Feature is Easier",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "29",
"tags": [
"Ruby on Rails"
],
"description": "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.",
"hosts": ["Joe Ferris"]
},
{
"title": "The First Feature is the Hardest",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "22",
"tags": [
"Ruby on Rails"
],
"description": "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...",
"hosts": ["Joe Ferris"]
},
{
"title": "Serving Your Front-End",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "27",
"tags": [
"Design"
],
"description": "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!",
"hosts": ["Lydia Damon"]
},
{
"title": "Apprentice.io Experiences",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "24",
"tags": [
"Ruby on Rails"
],
"description": "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.",
"hosts": ["Gabe Berke-Williams"]
},
{
"title": "Ruby Science: Extract Class",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "19",
"tags": [
"Clean Code"
],
"description": "Show notes:\n\nMelanie 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....",
"hosts": ["Joe Ferris and Melanie Gilman"]
},
{
"title": "Ruby Science: Introduce Parameter Object",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "8 ",
"tags": [
"Clean Code"
],
"description": "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.",
"hosts": ["Joe Ferris and Melanie Gilman"]
},
{
"title": "Ruby Science: Move Method",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "10",
"tags": [
"Clean Code"
],
"description": "Show notes:\n\nMelissa 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...",
"hosts": ["Joe Ferris and Melissa Xie"]
},
{
"title": "Ruby Science: Extract Method",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "9 ",
"tags": [
"Clean Code"
],
"description": "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...",
"hosts": ["Joe Ferris and Melissa Xie"]
},
{
"title": "Haskell: Pattern Matching",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "14",
"tags": [
"Haskell"
],
"description": "Pat joins Joe again to continue our tour of Haskell. Learn how Haskell replaces most if statements with the powerful concept of pattern matching, including some instances where object-oriented programs would use polymorphism. Learn how to both...",
"hosts": ["Joe Ferris and Pat Brisbin"]
},
{
"title": "Haskell: Intro to Types",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "18",
"tags": [
"Haskell"
],
"description": "Pat joins Joe again to discuss Haskell's type system. Learn how to add type signatures to your functions, create your own types, and work with generic types using type classes.",
"hosts": ["Joe Ferris and Pat Brisbin"]
},
{
"title": "Haskell: Intro to Functions",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "9 ",
"tags": [
"Haskell"
],
"description": "Pat joins Joe to give an introduction to Haskell. Learn basic function syntax and dive into the world of pure, lazy, functional programming. We also cover basic lists, and discuss how almost everything in Haskell is a function, such as operators.",
"hosts": ["Joe Ferris and Pat Brisbin"]
},
{
"title": "Property-Based Testing in Swift",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "12",
"tags": [
"iOS"
],
"description": "Gordon joins Joe to discuss an alternative approach to testing for situations where unit testing falls flat. Learn how property-based tests can be more useful than unit tests. Gordon discusses unit testing in Swift using Quick and Nimble, then...",
"hosts": ["Joe Ferris and Gordon Fontenot"]
},
{
"title": "You Got Your Objective-C In My Swift!",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "13",
"tags": [
"iOS"
],
"description": "Joe and Tony look at how Swift can reuse code from Objective-C libraries. Dive through a real example of using the Dropbox Objective-C client. See how to use bridging headers to pull in Objective-C code, how to handle failure in a more idiomatic...",
"hosts": ["Joe Ferris and Tony"]
},
{
"title": "Form Objects",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "20",
"tags": [
"Ruby on Rails",
"Clean Code"
],
"description": "Joe and Gabe review form objects, and explain why they can almost always replace accepts_nested_attributes_for. See an example Rails app written with nested attributes and how and why we recommend switching to form objects.\n\n\nNested Attributes...",
"hosts": ["Joe Ferris and Gabe Berke-Williams"]
},
{
"title": "Stubs, Mocks, Spies, and Fakes",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "26",
"tags": [
"Testing"
],
"description": "Joe and Gabe review the four types of test doubles: stubs, mocks, spies and fakes. Learn what the key differences are between each type, as well as when you'd want to consider using them. See examples written using rspec-mocks, as well as an...",
"hosts": ["Joe Ferris and Gabe Berke-Williams"]
},
{
"title": "Tightening the TDD Feedback Loop",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "12",
"tags": [],
"description": "Gabe joins Joe to discuss how to run tests quickly and efficiently. People who\nhaven't done TDD a lot often find that running tests is painful and takes them\nout of the moment. Learn how to run tests easily while staying focused on your...",
"hosts": ["Joe Ferris and Gabe Berke-Williams"]
},
{
"title": "Functional Swift",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "12",
"tags": [
"iOS"
],
"description": "Tony joins Joe to introduce some functional programming concepts in Apple's new language, Swift. Tony uses the magic of Apple's new playgrounds to demonstrate some simple functional ideas, such as functions as values, closures, currying, enums,...",
"hosts": ["Joe Ferris and Tony"]
},
{
"title": "JavaScript MVC: Backbone, Angular",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "26",
"tags": [],
"description": "Chris joins Joe to explore the world of JavaScript MVC. Dive into Backbone and Angular, learning how they compare when it comes to models, view rendering, data binding, testing, routing, and more.",
"hosts": ["Joe Ferris and Chris Toomey"]
},
{
"title": "Vim: To Config or Not to Config?",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "29",
"tags": [],
"description": "Chris joins Joe to discuss Vim configuration. Do you customize? Do you change? Do you extend? Learn how most of Vim's power comes from Vi, and how you can embrace that power rather than fighting it to become a more efficient editor.\n\n\nYour problem...",
"hosts": ["Joe Ferris and Chris Toomey"]
},
{
"title": "Rubyisms In Swift",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "17",
"tags": [
"iOS"
],
"description": "Joe and Tony run through some common Ruby idioms, demonstrating how they work in Swift. Examples include using Swift's Optional to replace Ruby's nil and using closures to navigate collections.",
"hosts": ["Joe Ferris and Tony"]
},
{
"title": "Integration vs Unit Testing",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "23",
"tags": [
"Testing"
],
"description": "Joe and Ben discuss the reasons for testing, and how integration and unit testing each serve different reasons. Dive into the benefits of drawbacks of testing at each point in the isolation/integration spectrum by looking through examples.",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Intro to ClojureScript",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "18",
"tags": [],
"description": "Ben and Joe provide a high-level introduction to ClojureScript, featuring Flappy Bird! \n\n\nMaize\nfigwheel\nflappy bird\nclementine",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Isolated Unit Testing",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "14",
"tags": [],
"description": "Joe and Ben discuss the benefits and drawbacks of isolated unit testing.\n\nAdditional reading:\n\n\nMocks Aren't Stubs\nGOOS",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Testing Vanity Metrics",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "10",
"tags": [],
"description": "Ben and Joe discuss which testing metrics you can stop caring about (and which you should continue to watch).",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Speedy Tests",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "21",
"tags": [],
"description": "Learn how to keep your TDD cycle snappy and keep your test suites short. Ben and Joe demonstrate an ideal setup for TDD, with focused test runs integrated into the editor. They also discuss approaches for integration and unit testing, as well as...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Outside-In Testing",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "24",
"tags": [],
"description": "Learn how to use a high-level test to guide you through the requirements for a new feature or change. Ben and Joe discuss the benefits of starting with an integration test, how to descend through the layers until you find the unit which needs...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Improving Vim Speed",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "14",
"tags": [],
"description": "A grab-bag of tips to speed up your vimming!\n\n\nctrlp\ncommand-t\nrails.vim\nsurround.vim\nBen's vim talk at Railsberry",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Dependency Management in Rails",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "19",
"tags": [],
"description": "Ben and Joe dive into the Upcase exercises system, exploring inversion of control. We previously covered inversion of control, but now we tackle it with a new twist: a new dependency injection framework for Rails which makes this style of...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Four Phases of Testing",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "10",
"tags": [
"Testing"
],
"description": "This episode covers one method of dividing a test into four distinct phases and the benefits of doing so.\n\n\nxUnit Patterns Wiki\nxUnit Test Patterns book",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Functors Are More Fun Than Nil",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "12",
"tags": [
"Clean Code"
],
"description": "Joe and Ben introduce a concept from the functional world: Functors. Learn how you're using functors in your every day work already, and see how to apply those concepts to make code with nils safer.\n\nCheck out Learn You a Haskell For Great Good...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Sandi Metz's Rules",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "11",
"tags": [
"Ruby on Rails"
],
"description": "In this episode, Ben and Joe discuss Sandi Metz's rules.\n\nYou can read the summarized rules.\n\n\nPull 1\nPull 2\nPull 3\nReek",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Landing a Rails Job",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "8 ",
"tags": [
"Ruby on Rails"
],
"description": "Ben offers a few concrete tips on landing a new (or better) Rails job.",
"hosts": ["Ben Orenstein"]
},
{
"title": "Unit Testing JavaScript",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "34",
"tags": [
"JavaScript"
],
"description": "Watch Ben and Joe move some gnarly CoffeeScript into a TDD'd class. \nBonus: Ben being bad at JavaScript.\n\nTools mentioned:\n\n\nMocha\nChai\nKonacha",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Composition Over Inheritance",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "23",
"tags": [
"Clean Code"
],
"description": "Ben and Joe compare a number of code samples and compare solutions written using both inheritance and composition. Learn how to use composition to place an emphasis on objects and flexible runtime state.",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Tips For Code Review",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "29",
"tags": [
"Workflow"
],
"description": "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...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Callbacks",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "12",
"tags": [
"Clean Code"
],
"description": "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.",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Demonstrate Class Design Via TDD",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "24",
"tags": [
"Clean Code"
],
"description": "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.",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Functional & Object Oriented Programming in Ruby",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "32",
"tags": [
"Clean Code"
],
"description": "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...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Refactor First",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "9 ",
"tags": [
"Workflow"
],
"description": "In this episode, Ben shares a story of how he screwed up but still had some good come of it.\n\nFurther reading:\n\n\nKent Beck's tweet\nWhen to refactor",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Swift First Impressions",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "21",
"tags": [
"iOS"
],
"description": "In this episode, special guest Tony joins us to give his first impressions on Swift as an Objective-C developer.\n\n\nSwift Programming Book\nWWDC Swift Session Videos: Tony recommends Intro, Intermediate & Advanced Swift to get started.",
"hosts": ["Ben Orenstein and Tony"]
},
{
"title": "Ship A Feature: Supporting Markdown",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "9 ",
"tags": [
"Workflow"
],
"description": "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.\n\n\nThe pull request\nPrevious Ship A Feature",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Contributing To Open Source, Step-By-Step",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "26",
"tags": [
"Workflow"
],
"description": "In this episode, Ben and Joe extract a matcher written in a project and create a pull request to include it in shoulda-matchers.\n\nCheck out the pull request",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Interactively Debugging Test Failures",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "22",
"tags": [
"Workflow"
],
"description": "Learn how to debug confusing test failures using interactive tools like byebug. Also learn the difference between REPLs like pry and stepping debuggers.",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Ship a Feature",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "28",
"tags": [
"Workflow"
],
"description": "In this episode, Ben and Joe ship a feature from start all the way into production.\n\nFor more info, check out:\nThe actual pull request and commit in the Learn codebase. Our protocol for getting things done, The parity gem and Travis, our CI...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Show Your Setup: Joe Ferris",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "12",
"tags": [
"Workflow"
],
"description": "In this episode, Joe demonstrates his setup for development including:\n\n\nHow he uses rcm to combine the thoughtbot dotfiles with his own customizations\nHow he uses MacVim, vim-rspec, and OS X Terminal to streamline TDD\nHow he uses snippets to...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Invert Control",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "13",
"tags": [
"Clean Code"
],
"description": "Ben and Joe follow up on a previous episode on extracting classes to demonstrate the classic followup punch to Extract Class: Invert Control.\n\nThey show the previous example in the context of an integration-tested Rails application, and...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Value Objects",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "11",
"tags": [
"Clean Code"
],
"description": "In this episode, Ben and Joe discuss value objects.\n\nYou can learn more about value objects in Ruby Science, or on Martin Fowler's blog.\n\nYou might also want to try you hand at our Extract Value Object exercise.",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Dependency Inversion Principle",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "19",
"tags": [
"Clean Code"
],
"description": "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...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Interface Segregation Principle",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "12",
"tags": [
"Clean Code"
],
"description": "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...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Liskov Substitution Principle",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "14",
"tags": [
"Clean Code"
],
"description": "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...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Open-Closed Principle",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "15",
"tags": [
"Clean Code"
],
"description": "In this episode, Ben and Joe discuss the Open Closed Principle. Also mentioned was polymorphism, the composite design pattern, decorators, factory method, and chain of responsibility.\n\nFinally, you might be interested in the immutable data...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Single Responsibility Principle ",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "16",
"tags": [
"Clean Code"
],
"description": "Ben and Joe cover \"S\" from SOLID, which stands for \"Single Responsibility Principle,\" often abbreviated as \"SRP.\"\n\nWe show examples of why you might choose to obey this principle, as well as how the principle relates to [cohesion], Tell, Don't...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "RSpec Best Practices",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "16",
"tags": [
"Clean Code"
],
"description": "Ben and Joe discuss Joe's recommendations for RSpec best practices.\n\nYou can read Joe's original blog post, peruse our style guide's testing section, or review our summarized best practices for RSpec.\n\nYou might also want to read about the mystery...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Live Coding Session: Replace Conditional With Null Object",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "16",
"tags": [
"Clean Code"
],
"description": "Ben and Joe do a little live coding, demonstrating how to extract a Null Object from an existing class in order to encapsulate conditional logic related to nothingness. If you'd like to play along, we have two exercises for practicing Null...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Ping-Pong, Paired Programing",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "41",
"tags": [
"Workflow"
],
"description": "In this episode, Ben and Joe demonstrate the ping-pong approach to pair programming. They alternate back and forth, writing test for each other to pass. You'll also get a glimpse into the problem-solving tactics of thoughtbot developers as they...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Noodling Around [part 2, Haskell]",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "20",
"tags": [
"Haskell"
],
"description": "In this episode, Ben and Joe take a look at the Haskell version of Noodle, a zsh history analyzer.\n\nWe cover some interesting Haskell nuggets in the implementation. If you'd like to see more, we recommend Learn You a Haskell. You can also see...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Noodling Around [part 1, Clojure]",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "16",
"tags": [],
"description": "In this episode, Ben and Joe showcase the most interesting parts of the\nClojure implementation of\nNoodle, a zsh history analyzer.\n\nDuring the episode, we go through a few interesting Clojure-y bits of the\nimplementation. If this tickles your...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Law of Demeter",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "14",
"tags": [
"Clean Code"
],
"description": "The Law of Demeter.",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Extract Class",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "12",
"tags": [
"Clean Code"
],
"description": "In this video, Ben and Joe illustrate the steps to safely extracting new\nclasses. You'll learn a reliable, repeatable process for creating new classes\nand moving functionality into them without risking bugs in your application or\nfailures in your...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Inject: Ruby's Fold",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "14",
"tags": [
"Clean Code"
],
"description": "In this episode, Ben and Joe tackle a highly useful but lesser known method\nfrom Ruby's Enumerable module: inject.\n\nWhile watching, you'll see how inject is just an abstraction over certain\ntypes of recursion. We'll use examples to demonstrate...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Tell, Don't Ask",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "14",
"tags": [
"Clean Code"
],
"description": "In this episode, Ben and Joe discuss the an OO design principle known as Tell\nDon't Ask. They walk through a number of examples, discuss its subtleties when using\nMVC, and cover query and command methods.\n\n\nOriginal blog post\nPragProg blog post on...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Refactoring Fast Order Line, with Joe Ferris",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "34",
"tags": [
"Clean Code"
],
"description": "In this episode, Ben and Joe refactor some code submitted by a subscriber in\nour forum. Starting with a controller action containing complex business logic\nadding up to more than fifty lines, they extract a class to encapsulate that\nlogic, using...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Polymorphic Finder, with Joe Ferris",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "21",
"tags": [
"Clean Code"
],
"description": "In this episode, Joe and Ben discuss a fairly advanced example of refactoring.\n\nYou'll dive into the good, the bad, and the ugly of code before and after being rewritten. The new code uses a number of design patterns, including the Builder...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Improving your Workflow, with Chris Toomey",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "17",
"tags": [
"Workflow"
],
"description": "In this video, Chris shows off his highly-efficient programming workflow.\n\nBen and Chris discuss shell optimizations, advanced vim operators, using Dash for fast documentation lookup, and configuring Alfred to make darn near everything...",
"hosts": ["Ben Orenstein and Chris Toomey"]
},
{
"title": "Coupling, with Joe Ferris",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "17",
"tags": [
"Clean Code"
],
"description": "In this episode, Ben and Joe discuss several different types of coupling in code.\n\nWhile watching, you'll learn about three different types of coupling: Pathological Coupling, Global Coupling, and Control Coupling. You'll learn what these...",
"hosts": ["Ben Orenstein and Joe Ferris"]
},
{
"title": "Nil is Unfriendly, with Joe Ferris",
"videoUrl": "https://embedwistia-a.akamaihd.net/deliveries/28fb24ee5c38509d8726d4214e65d1420c6e775c/file.mp4",
"minutes": "35",
"tags": [
"Clean Code"
],
"description": "In this episode, Ben and Joe discuss why abusing nil is unfriendly to your fellow developers, and dive into some of the other ways of representing nothingness.\n\nWhile watching, you'll learn how nil can be contagious, confuse a domain, and violate...",
"hosts": ["Ben Orenstein and Joe Ferris"]
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment