Recorded Live

Real-world JavaScript development, warts and all. In the Recorded Live channel, we develop a real-time multi-user web application from scratch. Every episode deals with the issues professionals face in the real world. Mistakes, setbacks, and triumphs: it’s all here for you to see and learn from.

1. Continuous Integration

  1. E1WeeWikiPaint

    Mon, 16 July ’12
  2. E2Build Automation & Lint

    Wed, 18 July ’12
  3. E3Preparing for Continuous Integration

    Fri, 20 July ’12
  4. E4The Continuous Integration Machine

    Mon, 23 July ’12
  5. E5How to Guarantee a Good Integration Build

    Wed, 25 July ’12

2. Test Frameworks

  1. E6Which Test Framework?

    Fri, 27 July ’12
  2. E7Our First Test

    Mon, 30 July ’12
  3. E8Asynchronisity

    Wed, 1 Aug ’12

3. A Simple Node.js Server

  1. E9A Very Simple HTTP Server

    Fri, 3 Aug ’12
  2. E10Test-Driving an HTTP Server

    Mon, 6 Aug ’12
  3. E11Lots of Learning

    Wed, 8 Aug ’12
  4. E12Our First Client/Server Test

    Fri, 10 Aug ’12
  5. E13A Basic “Hello World” Server

    Mon, 13 Aug ’12
  6. E14Polishing Up the Server

    Wed, 15 Aug ’12
  7. E15Enforce the Node Version

    Fri, 17 Aug ’12
  8. E16Make Them Read Your Crap

    Mon, 20 Aug ’12

4. Serving Files

  1. E17Minimum Marketable Feature

    Wed, 22 Aug ’12
  2. E18Test-Driven Files

    Fri, 24 Aug ’12
  3. E19Serve a Static File

    Mon, 27 Aug ’12
  4. E20404: Found

    Wed, 29 Aug ’12
  5. E21Checking Our Assumptions

    Fri, 31 Aug ’12
  6. E22Custom 404 Page

    Mon, 3 Sep ’12

5. Smoke Test

  1. E23Smoke Test

    Wed, 5 Sep ’12
  2. E24Running the Server

    Fri, 7 Sep ’12
  3. E25The Startup Race

    Mon, 10 Sep ’12
  4. E26Child Killer

    Wed, 12 Sep ’12
  5. E27Smoked

    Fri, 14 Sep ’12

6. Deployment

  1. E28Which Host?

    Mon, 17 Sep ’12
  2. E29I Don’t Wanna Use Foreman

    Wed, 19 Sep ’12
  3. E30Parse the Procfile

    Fri, 21 Sep ’12
  4. E31Deploy It

    Mon, 24 Sep ’12
  5. E32To the Web!

    Wed, 26 Sep ’12

7. Cross-Browser Testing

  1. E33A Client-Side Test Tool

    Fri, 28 Sep ’12
  2. E34Cross-Browser and Cross-Platform

    Mon, 1 Oct ’12
  3. E35IE Hate

    Wed, 3 Oct ’12
  4. E36Great Expectations

    Fri, 5 Oct ’12
  5. E37Just Run Jake

    Mon, 8 Oct ’12
  6. E38Lint the Client Code

    Wed, 10 Oct ’12
  7. E39Test ALL the Things

    Fri, 12 Oct ’12
  8. E40Windows Addendum

    Mon, 22 Oct ’12

8. Testing the DOM

  1. E41Seeking the DOM

    Wed, 24 Oct ’12
  2. E42There’s Our Tag

    Mon, 29 Oct ’12
  3. E43Keep Layout and Program Separate

    Wed, 31 Oct ’12
  4. E44Raphaël

    Mon, 5 Nov ’12
  5. E45IE 8 Compatibility

    Wed, 7 Nov ’12
  6. E46Clean Up the DOM

    Mon, 12 Nov ’12
  7. E47Element-ary

    Wed, 14 Nov ’12

9. Drawing a Line

  1. E48Test It For Real

    Mon, 19 Nov ’12
  2. E49Find the Path

    Wed, 21 Nov ’12
  3. E50Damn Near Impossible

    Mon, 26 Nov ’12

10. Mouse Events

  1. E51Click, Position, and Spike

    Wed, 28 Nov ’12
  2. E52Dragging the Mouse

    Mon, 3 Dec ’12
  3. E53Too Much Test Code

    Wed, 5 Dec ’12
  4. E54Testing the Click Event

    Mon, 10 Dec ’12
  5. E55Border Patrol

    Wed, 12 Dec ’12
  6. E56Back to Click Tracking

    Mon, 17 Dec ’12
  7. E57Simplify Our Assertions

    Wed, 19 Dec ’12
  8. E58A Conundrum

    Mon, 24 Dec ’12
  9. E59A Solution

    Mon, 31 Dec ’12
  10. E60What a Drag

    Wed, 2 Jan ’13
  11. E61Refinement & Simplification

    Mon, 7 Jan ’13

11. Fine-Tuning Mouse Gestures

  1. E62Telling the Story

    Wed, 9 Jan ’13
  2. E63Outside-In

    Mon, 14 Jan ’13
  3. E64Inside-Out

    Wed, 16 Jan ’13
  4. E65A Big Step Back

    Mon, 21 Jan ’13
  5. E66Event-full

    Wed, 23 Jan ’13
  6. E67Self-Contained

    Mon, 28 Jan ’13
  7. E68Event Propagation & Defaults

    Wed, 30 Jan ’13
  8. E69IE 8 Event Insanity

    Mon, 4 Feb ’13

12. Touch Events

  1. E70Touch Events Spike

    Wed, 6 Feb ’13
  2. E71Preparing to Test-Drive Touch Events

    Mon, 11 Feb ’13
  3. E72Touch and Go

    Wed, 13 Feb ’13
  4. E73A Test-Driven Touch Interaction

    Mon, 18 Feb ’13
  5. E74Touchy

    Wed, 20 Feb ’13
  6. E75Multitouch

    Mon, 25 Feb ’13
  7. E76Feeling Our Way Along

    Wed, 27 Feb ’13
  8. E77Self-Documenting

    Mon, 4 Mar ’13

13. Design, Objects, & Abstraction

  1. E78Reflective Design

    Wed, 6 Mar ’13
  2. E79The DOM Element Abstraction

    Mon, 11 Mar ’13
  3. E80Object-Oriented Programming

    Wed, 13 Mar ’13
  4. E81The Next Abstraction

    Mon, 18 Mar ’13
  5. E82Take Smaller Steps

    Wed, 20 Mar ’13
  6. E83Exploiting Our Abstraction

    Mon, 25 Mar ’13
  7. E84Function Functions

    Wed, 27 Mar ’13
  8. E85A Well-Oiled Machine

    Mon, 1 Apr ’13
  9. E86Beautification

    Wed, 3 Apr ’13
  10. E87Metaprogramming

    Mon, 8 Apr ’13
  11. E88DomElement: Done

    Wed, 10 Apr ’13
  12. E89The Final Polish

    Mon, 15 Apr ’13

14. Third-Party Code

  1. E90A New File Server

    Wed, 17 Apr ’13
  2. E91Not Invented Here

    Mon, 22 Apr ’13
  3. E92A Bit of a Rant

    Wed, 24 Apr ’13
  4. E93Another Migration

    Mon, 29 Apr ’13

15. Front-End Smoke Tests

  1. E94Unit Tests Aren’t Enough

    Wed, 1 May ’13
  2. E95PhantomJS

    Mon, 6 May ’13
  3. E96Smoke Test Infrastructure

    Wed, 8 May ’13
  4. E97Housekeeping

    Mon, 13 May ’13
  5. E98The SvgCanvas Class

    Wed, 15 May ’13
  6. E99Fixing Encapsulation

    Mon, 20 May ’13
  7. E100Fundamental Abstractions

    Wed, 22 May ’13
  8. E101“Good” vs. “Good Enough”

    Mon, 27 May ’13

16. Modularity

  1. E102AMD vs. CommonJS

    Wed, 29 May ’13
  2. E103Browserify

    Mon, 3 June ’13
  3. E104The Build Step

    Wed, 5 June ’13
  4. E105Bundled Code

    Mon, 10 June ’13
  5. E106Testing with Browserify

    Wed, 12 June ’13
  6. E107Require() All the Code

    Mon, 17 June ’13
  7. E108Eliminating the Global Namespace

    Wed, 19 June ’13
  8. E109Light the Test-Signal!

    Mon, 24 June ’13

17. The Karma-CommonJS Bridge

  1. E110Into the Sausage Factory

    Wed, 26 June ’13
  2. E111The Module Casing

    Mon, 1 July ’13
  3. E112Twisting the Ends

    Wed, 3 July ’13
  4. E113Extracting the Export Meat

    Mon, 8 July ’13
  5. E114Labelling the Vat

    Wed, 10 July ’13
  6. E115Superdog

    Mon, 15 July ’13
  7. E116Links

    Wed, 17 July ’13
  8. E117Make Me One with Everything

    Mon, 22 July ’13
  9. E118Binding Agent

    Wed, 24 July ’13
  10. E119All Beef

    Mon, 29 July ’13
  11. E120Prepare the Next Batch

    Wed, 31 July ’13

18. Drag and Drop

  1. E121Toward a Minimum Viable Product

    Mon, 5 Aug ’13
  2. E122jake run

    Wed, 7 Aug ’13
  3. E123A Question of Design

    Mon, 12 Aug ’13
  4. E124Return of the HtmlElement Abstraction

    Wed, 14 Aug ’13
  5. E125Radical Simplification

    Mon, 19 Aug ’13
  6. E126relativeOffset()

    Wed, 21 Aug ’13
  7. E127Dumbfounded

    Mon, 26 Aug ’13
  8. E128If Not for Those Meddling Kids

    Wed, 28 Aug ’13
  9. E129Too Many Events

    Mon, 2 Sep ’13
  10. E130Broken Windows

    Wed, 4 Sep ’13
  11. E131Special Cases

    Mon, 9 Sep ’13
  12. E132Abstraction, or Just Reinventing the Wheel?

    Wed, 11 Sep ’13

19. Karma 0.10

  1. E133More Karma

    Mon, 16 Sep ’13
  2. E134CommonJS in Karma 0.10

    Wed, 18 Sep ’13
  3. E135Debugging with Karma 0.10

    Mon, 23 Sep ’13
  4. E136Reliable Tests for Unreliable Browsers

    Wed, 25 Sep ’13

20. Modernizr

  1. E137Refactor First

    Mon, 30 Sep ’13
  2. E138Smooth Sailing

    Wed, 2 Oct ’13

21. Cross-Browser Incompatibility

  1. E139Production-Grade

    Mon, 7 Oct ’13
  2. E140Send in the Spies

    Wed, 9 Oct ’13
  3. E141A Time Bomb

    Mon, 14 Oct ’13
  4. E142A Crazy Little Idea

    Wed, 16 Oct ’13
  5. E143Truly, Lovely, Nasty

    Mon, 21 Oct ’13
  6. E144Some Intense Troubleshooting

    Wed, 23 Oct ’13
  7. E145A True Cross-Browser Test

    Mon, 28 Oct ’13

22. Fixing Bad Code

  1. E146Fix the Mess

    Wed, 30 Oct ’13
  2. E147How to Test Legacy Code

    Mon, 4 Nov ’13
  3. E148Abstractions: What and When?

    Wed, 6 Nov ’13
  4. E149Testing the Capture API

    Mon, 11 Nov ’13
  5. E150Maintain Your Tests

    Wed, 13 Nov ’13
  6. E151A Clever Little Event Monitor

    Mon, 18 Nov ’13
  7. E152A Cure Worse than the Disease

    Wed, 20 Nov ’13
  8. E153A Happy Middle Ground

    Mon, 25 Nov ’13

23. Troubleshooting the Windows 7 EPERM Issue

  1. E154An Unexpected Detour

    Wed, 27 Nov ’13
  2. E155The Simplest Possible Test Case

    Mon, 2 Dec ’13
  3. E156A Single Test Method

    Wed, 4 Dec ’13
  4. E157pipe() dreams

    Mon, 9 Dec ’13
  5. E158An Interesting Journey

    Wed, 11 Dec ’13
  6. E159A Question of Quality

    Mon, 16 Dec ’13

24. SVG Dots

  1. E160MVP, not MV PoS

    Wed, 18 Dec ’13
  2. E161Make It Click

    Mon, 23 Dec ’13
  3. E162Unwrapping SVG

    Wed, 25 Dec ’13
  4. E163IE 8 Ate My Brains

    Mon, 30 Dec ’13
  5. E164A Decent Result

    Wed, 1 Jan ’14
  6. E165IE 8 Ate My Line-Caps, Too

    Mon, 6 Jan ’14
  7. E166Serving Two Masters

    Wed, 8 Jan ’14
  8. E167Colors and Fills

    Mon, 13 Jan ’14
  9. E168A Surplus of Circles

    Wed, 15 Jan ’14
  10. E169Dat Dot Polish

    Mon, 20 Jan ’14

25. Multitouch Events

  1. E170A Multitouch Misconception

    Wed, 22 Jan ’14
  2. E171A Multitouch Event Monitor

    Mon, 27 Jan ’14
  3. E172Generalizing Our Multitouch Monitor

    Wed, 29 Jan ’14
  4. E173Tappety-Tap Tap

    Mon, 3 Feb ’14

26. Refactoring

  1. E174Don’t Forget the “Refactor” Part

    Wed, 5 Feb ’14
  2. E175A Useful Test Abstraction Technique

    Mon, 10 Feb ’14
  3. E176Refactoring Cycles

    Wed, 12 Feb ’14
  4. E177Figure It Out As We Go

    Mon, 17 Feb ’14
  5. E178Fixing the Leaky Abstraction

    Wed, 19 Feb ’14
  6. E179The Advantage of TDD

    Mon, 24 Feb ’14
  7. E180Better Enough

    Wed, 26 Feb ’14
  8. E181The Itch to Ship

    Mon, 3 Mar ’14
  9. E182Clean Code

    Wed, 5 Mar ’14

27. Dimensions and Positioning

  1. E183Know Your Audience

    Mon, 10 Mar ’14
  2. E184Element Dimensions

    Wed, 12 Mar ’14
  3. E185The Nuclear Option

    Mon, 17 Mar ’14
  4. E186Prepare the Way

    Wed, 19 Mar ’14
  5. E187Down the Rabbit Hole

    Mon, 24 Mar ’14
  6. E188A Fresh Start

    Wed, 26 Mar ’14
  7. E189IE 8 Don’t Play That

    Mon, 31 Mar ’14
  8. E190I Can Haz getComputedStyle()?

    Wed, 2 Apr ’14
  9. E191The Last Resort

    Mon, 7 Apr ’14
  10. E192Throw It Away

    Wed, 9 Apr ’14
  11. E193Fail Fast

    Mon, 14 Apr ’14
  12. E194Appropriate Failure

    Wed, 16 Apr ’14
  13. E195Don’t Allow Mistakes into Production

    Mon, 21 Apr ’14

28. Like Magic

  1. E196Surprisingly Clear

    Wed, 23 Apr ’14
  2. E197An Interface Design Exercise

    Mon, 28 Apr ’14
  3. E198It’s Finally Paying Off

    Wed, 30 Apr ’14
  4. E199Failing Fast for Fun and Profit

    Mon, 5 May ’14

29. The MVP

  1. E200Ship It!

    Wed, 7 May ’14

30. Web Design

  1. E201A Cross-Functional Team

    Mon, 12 May ’14
  2. E202Typography

    Wed, 14 May ’14
  3. E203Colors

    Mon, 19 May ’14
  4. E204Layout

    Wed, 21 May ’14
  5. E205Agile Collaboration

    Mon, 26 May ’14
  6. E206Non-Responsive

    Wed, 28 May ’14
  7. E207A Third Design

    Mon, 2 June ’14
  8. E208Iterating on the Design

    Wed, 4 June ’14
  9. E209The Designer’s Bane

    Mon, 9 June ’14
  10. E210Ready for Implementation

    Wed, 11 June ’14

31. The Test-Driven CSS Experiment

  1. E211Why Test-Drive CSS?

    Mon, 16 June ’14
  2. E212Tilting at Windmills

    Wed, 18 June ’14
  3. E213Inventing the Future

    Mon, 23 June ’14
  4. E214isElementCenteredInPage()

    Wed, 25 June ’14
  5. E215Asserting the Layout

    Mon, 30 June ’14
  6. E216A CSS Loading Conundrum

    Wed, 2 July ’14
  7. E217A Promising Beginning

    Mon, 7 July ’14

32. Positioning & Layout

  1. E218Making It Real

    Wed, 9 July ’14
  2. E219Centering the Logo

    Mon, 14 July ’14
  3. E220Visual Verification

    Wed, 16 July ’14
  4. E221An Important Distinction

    Mon, 21 July ’14
  5. E222Element Deduplication

    Wed, 23 July ’14
  6. E223It’s Coming Along

    Mon, 28 July ’14
  7. E224Styling the Drawing Area

    Wed, 30 July ’14
  8. E225Overlapping Elements

    Mon, 4 Aug ’14
  9. E226Positioning Contortions

    Wed, 6 Aug ’14
  10. E227background-image

    Mon, 11 Aug ’14
  11. E228Cross-Browser Rendering Differences

    Wed, 13 Aug ’14
  12. E229Browser Bugs

    Mon, 18 Aug ’14

33. CSS Buttons

  1. E230Button Block

    Wed, 20 Aug ’14
  2. E231T̶he ͘center̨ c̕ann͞o͞t̀ ͘h̛o͠ld̛

    Mon, 25 Aug ’14
  3. E232Rounding Errors

    Wed, 27 Aug ’14
  4. E233Rounded Corners

    Mon, 1 Sep ’14
  5. E234Drop Shadow of the Colossus

    Wed, 3 Sep ’14
  6. E235Stylish Text

    Mon, 8 Sep ’14
  7. E236Cheating Our Way Through :hover

    Wed, 10 Sep ’14
  8. E237Quick and Smooth

    Mon, 15 Sep ’14
  9. E238Clearing It Out

    Wed, 17 Sep ’14

34. Z-Order and Stacking

  1. E239Z

    Mon, 22 Sep ’14
  2. E240Sibling Rivalry

    Wed, 24 Sep ’14
  3. E241Decorative Details

    Mon, 29 Sep ’14

35. Programmatic IFrames

  1. E242Testing in an IFrame

    Wed, 1 Oct ’14
  2. E243Asynchronis-iframe-ity

    Mon, 6 Oct ’14
  3. E244Inside the Insanity

    Wed, 8 Oct ’14
  4. E245So Frikkin’ Hard

    Mon, 13 Oct ’14
  5. E246Well and Truly Stumped

    Wed, 15 Oct ’14
  6. E247Unstylish Safari

    Mon, 20 Oct ’14
  7. E248Styled and Tested

    Wed, 22 Oct ’14
  8. E249IFinale

    Mon, 27 Oct ’14

36. Testing Real HTML

  1. E250Don’t Repeat Your HTML

    Wed, 29 Oct ’14
  2. E251Got It!

    Mon, 3 Nov ’14
  3. E252Bringing It Home

    Wed, 5 Nov ’14
  4. E253Never Forget

    Mon, 10 Nov ’14

37. Fonts

  1. E254font-family

    Wed, 12 Nov ’14
  2. E255@font-face

    Mon, 17 Nov ’14
  3. E256A Font Normalization Algorithm

    Wed, 19 Nov ’14
  4. E257Typekit

    Mon, 24 Nov ’14
  5. E258font-weight

    Wed, 26 Nov ’14

38. Third-Party Embed Scripts

  1. E259The Challenge of Third-Party Embed Scripts

    Mon, 1 Dec ’14
  2. E260Reverse-Engineering the Typekit Script

    Wed, 3 Dec ’14
  3. E261The Real Question

    Mon, 8 Dec ’14
  4. E262Phantom Menace

    Wed, 10 Dec ’14
  5. E263Check the Fonts

    Mon, 15 Dec ’14
  6. E264Race to the Polls

    Wed, 17 Dec ’14
  7. E265Fonts in Use

    Mon, 22 Dec ’14
  8. E266Questioning Our Approach

    Wed, 24 Dec ’14
  9. E267Set and Match

    Mon, 29 Dec ’14
  10. E268Remember the Future

    Wed, 31 Dec ’14

39. Selenium

  1. E269From PhantomJS to Selenium

    Mon, 5 Jan ’15
  2. E270Promise Me

    Wed, 7 Jan ’15
  3. E271Selenium Soliloquy

    Mon, 12 Jan ’15
  4. E272Sweet, Suite Failure

    Wed, 14 Jan ’15
  5. E273The Better Part of Valor

    Mon, 19 Jan ’15
  6. E274SecurityError

    Wed, 21 Jan ’15
  7. E275Origin Story

    Mon, 26 Jan ’15
  8. E276Expectations and Actuals

    Wed, 28 Jan ’15
  9. E277As Clever As Can Be

    Mon, 2 Feb ’15

40. The Five-Second Build

  1. E278Slack === Speed

    Wed, 4 Feb ’15
  2. E279Quick Build

    Mon, 9 Feb ’15
  3. E280Fast Tests

    Wed, 11 Feb ’15
  4. E281Incremental Builds

    Mon, 16 Feb ’15
  5. E282Lint Rules!

    Wed, 18 Feb ’15
  6. E283A Real Programming Language

    Mon, 23 Feb ’15
  7. E284Performance Optimization and Profiling

    Wed, 25 Feb ’15
  8. E285Up In Flame Graphs

    Mon, 2 Mar ’15
  9. E286From Synchronous to Asynchronous

    Wed, 4 Mar ’15
  10. E287From Asynchronous to Synchronous

    Mon, 9 Mar ’15
  11. E288Integrating Our Spike

    Wed, 11 Mar ’15
  12. E289Incremental Tests

    Mon, 16 Mar ’15
  13. E2900.14 seconds

    Wed, 18 Mar ’15

41. Test Framework Migration

  1. E291External Dependencies

    Mon, 23 Mar ’15
  2. E292From NodeUnit to Mocha

    Wed, 25 Mar ’15
  3. E293How To Migrate Test Frameworks

    Mon, 30 Mar ’15
  4. E294Isomorphic Build Infrastructure

    Wed, 1 Apr ’15
  5. E295Eliminate NodeUnit

    Mon, 6 Apr ’15
  6. E296An Isomorphic Assertion Library

    Wed, 8 Apr ’15
  7. E297From expect() to assert()

    Mon, 13 Apr ’15
  8. E298Build Cleanup

    Wed, 15 Apr ’15
  9. E299Extract Module

    Mon, 20 Apr ’15
  10. E300Extract Tool Runner

    Wed, 22 Apr ’15
  11. E301A Pretty Build

    Mon, 27 Apr ’15
  12. E302A Composable Build Tool

    Wed, 29 Apr ’15

42. Node.js 0.12

  1. E303An Imperfect Version Transition

    Mon, 4 May ’15
  2. E304A Breaking Change

    Wed, 6 May ’15

43. Quixote

  1. E305CSS Unit Testing

    Mon, 11 May ’15
  2. E306Installing Quixote

    Wed, 13 May ’15
  3. E307Cross-Browser CSS Tests

    Mon, 18 May ’15
  4. E308A Cross-Browser Test Success

    Wed, 20 May ’15
  5. E309Careful Positioning

    Mon, 25 May ’15
  6. E310Modernizr Safety

    Wed, 27 May ’15
  7. E311z-index and background-image

    Mon, 1 June ’15
  8. E312How to Parse a Stinkin’ URL

    Wed, 3 June ’15
  9. E313Test Design

    Mon, 8 June ’15
  10. E314Speak to Me

    Wed, 10 June ’15
  11. E315Button It Up

    Mon, 15 June ’15
  12. E316Pixel-Perfect

    Wed, 17 June ’15

44. Cache Busters

  1. E317Who Ya Gonna Call?

    Mon, 22 June ’15
  2. E318Something Strange in the Neighborhood

    Wed, 24 June ’15
  3. E319I Ain’t Afraid of No Ghost

    Mon, 29 June ’15
  4. E320Somethin’ Weird and It Don’t Look Good

    Wed, 1 July ’15
  5. E321Things Runnin’ Through Your Head

    Mon, 6 July ’15

45. IE 11, iOS 8, and Android

  1. E322Hello, IE 11

    Wed, 8 July ’15
  2. E323Goodbye, IE 8

    Mon, 13 July ’15
  3. E324Rapid Release

    Wed, 15 July ’15
  4. E325The Android Emulator

    Mon, 20 July ’15
  5. E326Testing Touch Events on Android

    Wed, 22 July ’15
  6. E327A Mutual Incompatibility

    Mon, 27 July ’15
  7. E328Testing Touch Events on iOS 8

    Wed, 29 July ’15

46. Styling the 404 Page

  1. E329Back to the 404 Page

    Mon, 3 Aug ’15
  2. E330CSS Infrastructure

    Wed, 5 Aug ’15
  3. E331Getting Stylish

    Mon, 10 Aug ’15
  4. E332Fonterrific

    Wed, 12 Aug ’15
  5. E333Bringing It Together

    Mon, 17 Aug ’15
  6. E334Verticality

    Wed, 19 Aug ’15
  7. E335Totally Stylish

    Mon, 24 Aug ’15

47. Engineering Tasks

  1. E336The ‘Content-Type’ Header

    Wed, 26 Aug ’15
  2. E337Webfont Smoke Test Redux

    Mon, 31 Aug ’15
  3. E338Busted

    Wed, 2 Sep ’15

48. CSS Refactoring and Design

  1. E339The Holy Grail

    Mon, 7 Sep ’15
  2. E340Normalize

    Wed, 9 Sep ’15
  3. E341Unit Testing a CSS Component

    Mon, 14 Sep ’15
  4. E342A Test-Driven CSS Component

    Wed, 16 Sep ’15
  5. E343Refactoring CSS

    Mon, 21 Sep ’15
  6. E344A Block with Elements

    Wed, 23 Sep ’15
  7. E345block__element

    Mon, 28 Sep ’15
  8. E346Test-Driven Elements

    Wed, 30 Sep ’15
  9. E347Challenges of CSS Reuse

    Mon, 5 Oct ’15
  10. E348Don’t Repeat Your CSS

    Wed, 7 Oct ’15
  11. E349block--modifier

    Mon, 12 Oct ’15
  12. E350Fully Abstracted

    Wed, 14 Oct ’15
  13. E351The Logo Block

    Mon, 19 Oct ’15
  14. E352The Test-Driven Block Pattern

    Wed, 21 Oct ’15
  15. E353Theme

    Mon, 26 Oct ’15
  16. E354Themed Paragraphs

    Wed, 28 Oct ’15
  17. E355Strongly-Typographied

    Mon, 2 Nov ’15
  18. E356A Layout Class

    Wed, 4 Nov ’15
  19. E357Questionable Layout

    Mon, 9 Nov ’15
  20. E358Spacing and Width

    Wed, 11 Nov ’15
  21. E359Unconventional Wisdom

    Mon, 16 Nov ’15

49. Code Layout

  1. E360Directory Structure

    Wed, 18 Nov ’15
  2. E361The Challenges of Directory Refactoring

    Mon, 23 Nov ’15
  3. E362Directory Refactoring: Solved!

    Wed, 25 Nov ’15
  4. E363Subsetting Karma

    Mon, 30 Nov ’15
  5. E364Incremental Client Tests

    Wed, 2 Dec ’15
  6. E365Split Tests

    Mon, 7 Dec ’15
  7. E366Extracting Files

    Wed, 9 Dec ’15
  8. E367Extract Module

    Mon, 14 Dec ’15
  9. E368Distribution Files

    Wed, 16 Dec ’15
  10. E369Workarounds

    Mon, 21 Dec ’15

50. Real-Time Web

  1. E370Our Story Thus Far

    Wed, 23 Dec ’15
  2. E371Real-Time Libraries

    Mon, 28 Dec ’15
  3. E372Socket.IO

    Wed, 30 Dec ’15
  4. E373Sand in the Gears

    Mon, 4 Jan ’16
  5. E374Back on Track

    Wed, 6 Jan ’16
  6. E375A Live Real-Time Chat App

    Mon, 11 Jan ’16

51. The Reflector

  1. E376From Spike to Production

    Wed, 13 Jan ’16
  2. E377Testing Socket.IO

    Mon, 18 Jan ’16
  3. E378Test-Driving a Socket.IO Reflector

    Wed, 20 Jan ’16
  4. E379A Multi-Client Test

    Mon, 25 Jan ’16
  5. E380Async

    Wed, 27 Jan ’16

52. Testing Client-Side Networking

  1. E381Client Marching Orders

    Mon, 1 Feb ’16
  2. E382Isolating the Client Build

    Wed, 3 Feb ’16
  3. E383Focused Integration Test

    Mon, 8 Feb ’16
  4. E384Client Clean-Up

    Wed, 10 Feb ’16
  5. E385Network Test Harness

    Mon, 15 Feb ’16

53. A Network Test Harness

  1. E386Hang Ten

    Wed, 17 Feb ’16
  2. E387A Question of Test Quality

    Mon, 22 Feb ’16
  3. E388The AJAX Back-Channel

    Wed, 24 Feb ’16
  4. E389Connection Query

    Mon, 29 Feb ’16
  5. E390Show Some ID

    Wed, 2 Mar ’16
  6. E391Racing to Disconnect

    Mon, 7 Mar ’16
  7. E392This Kills the Browser

    Wed, 9 Mar ’16
  8. E393Pointing the Way

    Mon, 14 Mar ’16
  9. E394An Eventful Race

    Wed, 16 Mar ’16

54. From UI to Network

  1. E395A Client Networking Spike

    Mon, 21 Mar ’16
  2. E396Preparing for Dependency Injection

    Wed, 23 Mar ’16
  3. E397Object-Orientatiating

    Mon, 28 Mar ’16
  4. E398Build the Spy

    Wed, 30 Mar ’16
  5. E399Waiting for Connection

    Mon, 4 Apr ’16
  6. E400Connect the UI

    Wed, 6 Apr ’16
  7. E401A Successful Spy

    Mon, 11 Apr ’16
  8. E402Wire It Up

    Wed, 13 Apr ’16

55. Abstraction Design

  1. E403Location, Location, Location

    Mon, 18 Apr ’16
  2. E404A Value Judgement

    Wed, 20 Apr ’16
  3. E405Equality

    Mon, 25 Apr ’16
  4. E406String Theory

    Wed, 27 Apr ’16
  5. E407Baby Steps

    Mon, 2 May ’16
  6. E408Data Clumps

    Wed, 4 May ’16
  7. E409A Distinctive Signature

    Mon, 9 May ’16
  8. E410Shit’s on Fire, Yo

    Wed, 11 May ’16
  9. E411At Least the Tests Pass

    Mon, 16 May ’16
  10. E412Refactoring in Place

    Wed, 18 May ’16
  11. E413Simplifying Our Assumptions

    Mon, 23 May ’16
  12. E414The Final Abstraction

    Wed, 25 May ’16
  13. E415Test Migration

    Mon, 30 May ’16
  14. E416Method Overloading

    Wed, 1 June ’16
  15. E417Speakeasy

    Mon, 6 June ’16
  16. E418Coordinated

    Wed, 8 June ’16
  17. E419Abandoning JQuery

    Mon, 13 June ’16
  18. E420Refactoring for the Win

    Wed, 15 June ’16
  19. E421Faster

    Mon, 20 June ’16

56. From Network to UI

  1. E422Back to Networking

    Wed, 22 June ’16
  2. E423Digging Into the Network Tests

    Mon, 27 June ’16
  3. E424Our Little Socket.IO Server

    Wed, 29 June ’16
  4. E425Cohesion

    Mon, 4 July ’16
  5. E426Encapsulation

    Wed, 6 July ’16
  6. E427Simplifying the Test Harness Client

    Mon, 11 July ’16
  7. E428Send Pointer Location

    Wed, 13 July ’16
  8. E429Rethinking the Network Event API

    Mon, 18 July ’16
  9. E430Serving the Unique ID

    Wed, 20 July ’16
  10. E431Data Channel

    Mon, 25 July ’16
  11. E432File Factor

    Wed, 27 July ’16

57. Ghost Pointers

  1. E433Ghost Spike

    Mon, 1 Aug ’16
  2. E434Two Pointers

    Wed, 3 Aug ’16
  3. E435Production Pointers

    Mon, 8 Aug ’16
  4. E436Selection Criteria

    Wed, 10 Aug ’16
  5. E437equal() Rites

    Mon, 15 Aug ’16
  6. E438Network Test Double

    Wed, 17 Aug ’16
  7. E439Ghost Events

    Mon, 22 Aug ’16
  8. E440Taking a Position

    Wed, 24 Aug ’16
  9. E441Ghost in the Machine

    Mon, 29 Aug ’16
  10. E442Positioning Epilogue

    Wed, 31 Aug ’16

58. Pointer CSS

  1. E443Pointer Style Spike

    Mon, 5 Sep ’16
  2. E444Pointing Out

    Wed, 7 Sep ’16

59. Isomorphic Network Events

  1. E445Subtle Duplication

    Mon, 12 Sep ’16
  2. E446Replace in Place

    Wed, 14 Sep ’16
  3. E447Psuedo-Deserialization

    Mon, 19 Sep ’16
  4. E448Over-Engineering?

    Wed, 21 Sep ’16
  5. E449Isolation Layer

    Mon, 26 Sep ’16
  6. E450Exploiting the Event Objects

    Wed, 28 Sep ’16
  7. E451Test Target

    Mon, 3 Oct ’16

60. Grab Bag

  1. E452Stuff That Needs Doing

    Wed, 5 Oct ’16
  2. E453Dependency Consistency

    Mon, 10 Oct ’16
  3. E454Vendor Synchronization

    Wed, 12 Oct ’16
  4. E455../../..

    Mon, 17 Oct ’16

61. De-Mocking

  1. E456An Alternative to Test Doubles

    Wed, 19 Oct ’16
  2. E457A Null Connection

    Mon, 24 Oct ’16
  3. E458State in the Union

    Wed, 26 Oct ’16
  4. E459Re-Port-ing

    Mon, 31 Oct ’16
  5. E460getLastSentPointerLocation()

    Wed, 2 Nov ’16
  6. E461Trigger the Network Event

    Mon, 7 Nov ’16
  7. E462No More Test Double

    Wed, 9 Nov ’16
  8. E463Null Socket

    Mon, 14 Nov ’16
  9. E464Managing Complexity

    Wed, 16 Nov ’16
  10. E465Testing Concurrency

    Mon, 21 Nov ’16
  11. E466Event Handling

    Wed, 23 Nov ’16
  12. E467Test the Null

    Mon, 28 Nov ’16

62. Multi-User Smoke Tests

  1. E468Into the Smoke

    Wed, 30 Nov ’16
  2. E469Two Browsers

    Mon, 5 Dec ’16
  3. E470Multi-Browser Assertions

    Wed, 7 Dec ’16
  4. E471Racing the Smoke

    Mon, 12 Dec ’16
  5. E472Idiomacracy

    Wed, 14 Dec ’16

63. Networked Drawing

  1. E473Real-Time Networking Overview

    Mon, 19 Dec ’16
  2. E474Shotgun Surgery

    Wed, 21 Dec ’16
  3. E475Monkey Work

    Mon, 26 Dec ’16
  4. E476Accepting the Duplication

    Wed, 28 Dec ’16
  5. E477Data Transport

    Mon, 2 Jan ’17
  6. E478Send the Draw Event

    Wed, 4 Jan ’17
  7. E479Moment of Truth

    Mon, 9 Jan ’17

64. Desktop Touch

  1. E480Custom Configuration

    Wed, 11 Jan ’17
  2. E481Psuedo-Deprecated DOM

    Mon, 16 Jan ’17
  3. E482Can’t Touch Touch

    Wed, 18 Jan ’17

65. Network Abstraction Layer

  1. E483The Cost of Duplication

    Mon, 23 Jan ’17
  2. E484Generification

    Wed, 25 Jan ’17
  3. E485Gradual Refactoring

    Mon, 30 Jan ’17
  4. E486Generic Events

    Wed, 1 Feb ’17
  5. E487Generic Test Harness

    Mon, 6 Feb ’17
  6. E488Network Races

    Wed, 8 Feb ’17
  7. E489Cheater

    Mon, 13 Feb ’17

66. Networking the Clear Button

  1. E490Clear Events

    Wed, 15 Feb ’17
  2. E491Exactly Duplicated

    Mon, 20 Feb ’17
  3. E492DRYing Up the Server

    Wed, 22 Feb ’17
  4. E493Network in the UI

    Mon, 27 Feb ’17

67. Network Pointer Polish

  1. E494RemovePointerEvent

    Wed, 1 Mar ’17
  2. E495Vanishing Act

    Mon, 6 Mar ’17
  3. E496A Pointed Departure

    Wed, 8 Mar ’17
  4. E497A Touching Result

    Mon, 13 Mar ’17
  5. E498Touch and Click

    Wed, 15 Mar ’17

68. Season 5 Recap

  1. E499Season 5 Recap

    Mon, 20 Mar ’17

69. Season 6

  1. E500Welcome to Let’s Code JavaScript

    Wed, 22 Mar ’17

70. Real-Time Reconnection

  1. E501Real-Time Web: Reloaded

    Mon, 27 Mar ’17
  2. E502Gets Me Going

    Wed, 29 Mar ’17
  3. E503Hilarity Ensues

    Mon, 3 Apr ’17
  4. E504Wrapped Up in Knots

    Wed, 5 Apr ’17
  5. E505Replay the Events

    Mon, 10 Apr ’17
  6. E506Performance and Evolutionary Design

    Wed, 12 Apr ’17

71. Server Factoring

  1. E507Some Server Design Work

    Mon, 17 Apr ’17
  2. E508HttpServer

    Wed, 19 Apr ’17
  3. E509The Safety Net

    Mon, 24 Apr ’17
  4. E510Tests and Design

    Wed, 26 Apr ’17
  5. E511Move Tests

    Mon, 1 May ’17
  6. E512End-to-End Server Tests

    Wed, 3 May ’17
  7. E513Simplifying Integration Tests

    Mon, 8 May ’17
  8. E514The Wrong Test

    Wed, 10 May ’17
  9. E515Stop It

    Mon, 15 May ’17
  10. E516Shave That Yak

    Wed, 17 May ’17
  11. E517Eliminate the Test Race

    Mon, 22 May ’17
  12. E518Shot Down

    Wed, 24 May ’17

72. Debugging Race Conditions

  1. E519A Really Nasty Race Condition

    Mon, 29 May ’17
  2. E520Isolate the Test

    Wed, 31 May ’17
  3. E521Baffled, Bothered, and Bewildered

    Mon, 5 June ’17
  4. E522A Glimmer

    Wed, 7 June ’17
  5. E523Light Dawns

    Mon, 12 June ’17
  6. E524Reproduction

    Wed, 14 June ’17
  7. E525Issue Report

    Mon, 19 June ’17
  8. E526Open and Shut Case

    Wed, 21 June ’17
  9. E527Back from the Wilds

    Mon, 26 June ’17
  10. E528Clean Shutdown

    Wed, 28 June ’17

73. Async/Await

  1. E529A Promise-ing Beginning

    Mon, 3 July ’17
  2. E530Make Me a Promise

    Wed, 5 July ’17
  3. E531Promisify Me

    Mon, 10 July ’17
  4. E532Promise Me a Sink

    Wed, 12 July ’17
  5. E533Necessary Evil

    Mon, 17 July ’17
  6. E534By Our Powers Combined

    Wed, 19 July ’17
  7. E535One Config to Rule Them All

    Mon, 24 July ’17
  8. E536A Way to Remove Promises

    Wed, 26 July ’17
  9. E537From Async Library to Async/Await

    Mon, 31 July ’17
  10. E538Parallelization

    Wed, 2 Aug ’17
  11. E539Another Async Library Conversion

    Mon, 7 Aug ’17
  12. E540One Down

    Wed, 9 Aug ’17
  13. E541Better Utility

    Mon, 14 Aug ’17
  14. E542Nested Parallelization

    Wed, 16 Aug ’17
  15. E543Async Retry

    Mon, 21 Aug ’17

74. Graceful Disconnection

  1. E544A Sense of Disconnection

    Wed, 23 Aug ’17
  2. E545Spike the Disconnect

    Mon, 28 Aug ’17
  3. E546Test-Driven Disconnect

    Wed, 30 Aug ’17
  4. E547How’s It Hangin’?

    Mon, 4 Sep ’17
  5. E548Once and for All

    Wed, 6 Sep ’17
  6. E549Is It Connected?

    Mon, 11 Sep ’17
  7. E550A Passing Connection

    Wed, 13 Sep ’17
  8. E551No Need to Wait

    Mon, 18 Sep ’17

75. Preventing Defects

  1. E552The Best Way to Write Software

    Wed, 20 Sep ’17
  2. E553Easy to Understand

    Mon, 25 Sep ’17
  3. E554Fix the Design

    Wed, 27 Sep ’17
  4. E555Five by Five

    Mon, 2 Oct ’17

76. Testing the Clock

  1. E556Time for a Spike

    Wed, 4 Oct ’17
  2. E557It’s About Time

    Mon, 9 Oct ’17
  3. E558Clocking In

    Wed, 11 Oct ’17
  4. E559Time Out

    Mon, 16 Oct ’17
  5. E560Passing Time

    Wed, 18 Oct ’17

77. Client Timeout

  1. E561Test the Interval

    Mon, 23 Oct ’17
  2. E562Events and the Async Keyword

    Wed, 25 Oct ’17
  3. E563A Specific Client

    Mon, 30 Oct ’17
  4. E564Selective Timeouts

    Wed, 1 Nov ’17
  5. E565Without the Timeouts

    Mon, 6 Nov ’17
  6. E566Event Emitter

    Wed, 8 Nov ’17
  7. E567A Hive of Scum and Villainy

    Mon, 13 Nov ’17
  8. E568On Any Activity

    Wed, 15 Nov ’17
  9. E569Too Many Complications

    Mon, 20 Nov ’17
  10. E570onNextServerEmit()

    Wed, 22 Nov ’17
  11. E571Evidence of Absence

    Mon, 27 Nov ’17
  12. E572Time Out

    Wed, 29 Nov ’17

78. Extracting the Network Abstraction

  1. E573Intertwingled

    Mon, 4 Dec ’17
  2. E574Extract the Socket.IO Abstraction

    Wed, 6 Dec ’17
  3. E575Dereference

    Mon, 11 Dec ’17
  4. E576Socket Wrench

    Wed, 13 Dec ’17
  5. E577Emissions

    Mon, 18 Dec ’17
  6. E578Experiencing a Disconnect

    Wed, 20 Dec ’17
  7. E579Making the Connection

    Mon, 25 Dec ’17
  8. E580Extract the Tests

    Wed, 27 Dec ’17
  9. E581Tests Moved

    Mon, 1 Jan ’18
  10. E582Test the Networking Events

    Wed, 3 Jan ’18
  11. E583Sent and Received

    Mon, 8 Jan ’18
  12. E584Disintertwingled

    Wed, 10 Jan ’18

79. Disentangling Business Logic

  1. E585Remove the Network Complexity

    Mon, 15 Jan ’18
  2. E586Extract the Instantiation

    Wed, 17 Jan ’18
  3. E587From Child to Sibling

    Mon, 22 Jan ’18
  4. E588A Different Kind of Stub

    Wed, 24 Jan ’18
  5. E589A Null Real-Time Server

    Mon, 29 Jan ’18
  6. E590The Wrong ID

    Wed, 31 Jan ’18
  7. E591getLastSentMessage()

    Mon, 5 Feb ’18
  8. E592A Test Without a Network

    Wed, 7 Feb ’18
  9. E593Connect Null Client

    Mon, 12 Feb ’18
  10. E594Null Socket

    Wed, 14 Feb ’18
  11. E595Emit an Event

    Mon, 19 Feb ’18
  12. E596Translating Tests

    Wed, 21 Feb ’18
  13. E597Double Timeout

    Mon, 26 Feb ’18
  14. E598Look How Much Simpler It Is

    Wed, 28 Feb ’18
  15. E599I Love Deleting Code

    Mon, 5 Mar ’18

80. The Final Chapter

  1. E600The Final Chapter

    Wed, 7 Mar ’18
  2. E601Simulation vs. Event Triggers

    Mon, 12 Mar ’18
  3. E602Screechingly Obvious Code

    Wed, 14 Mar ’18
  4. E603Smoke ’Em If You Got ’Em

    Mon, 19 Mar ’18
  5. E604Async, Await, and Selenium

    Wed, 21 Mar ’18
  6. E605Selenium and Real-Time Networking

    Mon, 26 Mar ’18
  7. E606A Tiny Dot of Perfectionism

    Wed, 28 Mar ’18
  8. E607The Great Teleporting Mouse Pointer

    Mon, 2 Apr ’18
  9. E608What’s Your Location?

    Wed, 4 Apr ’18
  10. E609Put a Bow On It

    Mon, 9 Apr ’18

81. A Look Back

  1. E610A Few of My Favorite Things

    Wed, 11 Apr ’18
  2. E611Reproducible Builds

    Wed, 11 Apr ’18
  3. E612Evolutionary Design

    Mon, 16 Apr ’18
  4. E613Visual Testing

    Wed, 18 Apr ’18
  5. E614Testing Without Mocks

    Mon, 23 Apr ’18