Let's Code Screencasts

Here are screencasts of developing non-trivial open source projects, the way that I normally develop software. They might give you some tips on using TDD, refactoring, evolutionary design and other development practices. I hope these screencasts will help any aspiring software craftsmen on their road to mastery by providing some examples to look up to.

If you do not yet know how to do TDD, please have a look at my TDD Tetris Tutorial in GitHub. It will help in getting a start on TDD by providing some pre-written tests for a Tetris game and steps on how to proceed. In this Let's Code series there is also a screencasted example of how to go through that tutorial, though you should first try implementing it yourself.

New episodes will be announced at the Let's Code blog. Please subscribe to the web feed of that blog to get notified about new releases. You might also be interested in James Shore's Let's Play TDD which is an endeavour similar to this one.

Feed Subscribe to New Episodes

Projects

TDD Tetris Tutorial

Shows how to go through the TDD Tetris Tutorial where you can learn Test-Driven Development by at first writing code to pass pre-written tests, so that it will be easier to write your own tests when the time for it comes.

Project Web Site: github.com/luontola/tdd-tetris-tutorial
This Code Branch: github.com/luontola/tdd-tetris-tutorial/tree/take3

Episodes

Let's Code Jumi

Shows since day one the development of a test runner to surpass JUnit as the de facto test runner on the Java platform. Programming is done with TDD, with the unit-level TDD driven by end-to-end level TDD.

Project Web Site: jumi.fi
Source Code: github.com/luontola/jumi

Episodes

Theme: Project Setup5 h 13 min
2011-06-10Let's Code Jumi #1: Project Setup (Part 1)Download
2011-06-11Let's Code Jumi #2: Project Setup (Part 2)Download
2011-06-12Let's Code Jumi #3: Project Setup (Part 3)Download
2011-06-13Let's Code Jumi #4: Project Setup (Part 4)Download
2011-06-15Let's Code Jumi #5: Project Setup (Part 5)Download
2011-06-16Let's Code Jumi #6: Project Setup (Part 6)Download
2011-06-17Let's Code Jumi #7: Project Setup (Part 7)Download
2011-06-19Let's Code Jumi #8: Project Setup (Part 8)Download
2011-06-21Let's Code Jumi #9: Project Setup (Part 9)Download
2011-06-22Let's Code Jumi #10: Project Setup (Part 10)Download
2011-06-23Let's Code Jumi #11: Project Setup (Part 11)Download
2011-06-24Let's Code Jumi #12: Project Setup (Part 12)Download
Theme: Walking Skeleton - Running Zero Tests1 h 20 min
2011-06-27Let's Code Jumi #13: Running Zero Tests (Part 1)Download
2011-06-28Let's Code Jumi #14: Running Zero Tests (Part 2)Download
2011-06-29Let's Code Jumi #15: Running Zero Tests (Part 3)Download
Theme: Refactoring - Message Passing2 h 38 min
2011-06-30Let's Code Jumi #16: Message Passing (Part 1)Download
2011-07-01Let's Code Jumi #17: Message Passing (Part 2)Download
2011-07-02Let's Code Jumi #18: Message Passing (Part 3)Download
2011-07-03Let's Code Jumi #19: Message Passing (Part 4)Download
2011-07-04Let's Code Jumi #20: Message Passing (Part 5)Download
2011-07-05Let's Code Jumi #21: Message Passing (Part 6)Download
Theme: Walking Skeleton - Public API3 h 27 min
2011-07-07Let's Code Jumi #22: Public API (Part 1)Download
2011-07-08Let's Code Jumi #23: Public API (Part 2)Download
2011-07-10Let's Code Jumi #24: Public API (Part 3)Download
2011-07-11Let's Code Jumi #25: Public API (Part 4)Download
2011-07-12Let's Code Jumi #26: Public API (Part 5)Download
2011-07-13Let's Code Jumi #27: Public API (Part 6)Download
2011-07-15Let's Code Jumi #28: Public API (Part 7)Download
2011-07-16Let's Code Jumi #29: Public API (Part 8)Download
Theme: Walking Skeleton - Running One Test1 h 44 min
2011-07-18Let's Code Jumi #30: Running One Test (Part 1)Download
2011-07-19Let's Code Jumi #31: Running One Test (Part 2)Download
2011-07-21Let's Code Jumi #32: Running One Test (Part 3)Download
2011-07-22Let's Code Jumi #33: Running One Test (Part 4)Download
Theme: Refactoring - Actor Model18 h 10 min
2011-07-25Let's Code Jumi #34: Comparable TestIdDownload
2011-07-26Let's Code Jumi #35: Actors (Part 1)Download
2011-07-27Let's Code Jumi #36: Actors (Part 2)Download
2011-07-28Let's Code Jumi #37: Actors (Part 3)Download
2011-07-30Let's Code Jumi #38: Bug FixesDownload
2011-07-31Let's Code Jumi #39: Actors (Part 4)Download
2011-08-03Let's Code Jumi #40: Actors (Part 5)Download
2011-08-07Let's Code Jumi #41: Dynamic Events (Part 1)Download
2011-08-08Let's Code Jumi #42: Dynamic Events (Part 2)Download
2011-08-10Let's Code Jumi #43: Dynamic Events (Part 3)Download
2011-08-11Let's Code Jumi #44: Dynamic Events (Part 4)Download
2011-08-12Let's Code Jumi #45: Dynamic Events (Part 5)Download
2011-08-15Let's Code Jumi #46: Multi-Interface Actors (Part 1)Download
2011-08-16Let's Code Jumi #47: Multi-Interface Actors (Part 2)Download
2011-08-17Let's Code Jumi #48: Multi-Interface Actors (Part 3)Download
2011-08-18Let's Code Jumi #49: Multi-Interface Actors (Part 4)Download
2011-08-20Let's Code Jumi #50: Multi-Interface Actors (Part 5)Download
2011-08-22Let's Code Jumi #51: Actorified Runners (Part 1)Download
2011-08-24Let's Code Jumi #52: Actorified Runners (Part 2)Download
2011-08-25Let's Code Jumi #53: Actorified Runners (Part 3)Download
2011-08-28Let's Code Jumi #54: Actorified Runners (Part 4)Download
2011-08-29Let's Code Jumi #55: Actorified Runners (Part 5)Download
2011-08-30Let's Code Jumi #56: Actorified Runners (Part 6)Download
2011-08-31Let's Code Jumi #57: Actorified Runners (Part 7)Download
2011-09-08Let's Code Jumi #58: Worker Threads (Part 1)Download
2011-09-09Let's Code Jumi #59: Worker Threads (Part 2)Download
2011-09-10Let's Code Jumi #60: Worker Threads (Part 3)Download
2011-09-16Let's Code Jumi #61: Single-Threaded Actors (Part 1)Download
2011-09-17Let's Code Jumi #62: Single-Threaded Actors (Part 2)Download
2011-09-18Let's Code Jumi #63: Single-Threaded Actors (Part 3)Download
2011-09-20Let's Code Jumi #64: Refactoring Actor Tests (Part 1)Download
2011-09-21Let's Code Jumi #65: Refactoring Actor Tests (Part 2)Download
2011-09-23Let's Code Jumi #66: Refactoring Actor Tests (Part 3)Download
2011-09-24Let's Code Jumi #67: Refactoring Actor Tests (Part 4)Download
2011-09-25Let's Code Jumi #68: Actorified Runners (Part 8)Download
2011-09-26Let's Code Jumi #69: Actorified Runners (Part 9)Download
2011-09-27Let's Code Jumi #70: Actorified Runners (Part 10)Download
2011-09-29Let's Code Jumi #71: Actorified Runners (Part 11)Download
2011-09-30Let's Code Jumi #72: Actorified Runners (Part 12)Download
2011-10-01Let's Code Jumi #73: Actorified Runners (Part 13)Download
2011-10-05Let's Code Jumi #74: New DomainDownload
Theme: Refactoring - Code Generator Maven Plugin12 h 41 min
2011-10-06Let's Code Jumi #75: Hello Maven Plugin (Part 1)Download
2011-10-07Let's Code Jumi #76: Hello Maven Plugin (Part 2)Download
2011-10-10Let's Code Jumi #77: Code Generation (Part 1)Download
2011-10-12Let's Code Jumi #78: Code Generation (Part 2)Download
2011-10-13Let's Code Jumi #79: Generating the FactoryDownload
2011-10-14Let's Code Jumi #80: Generating the Frontend (Part 1)Download
2011-10-15Let's Code Jumi #81: Generating the Frontend (Part 2)Download
2011-10-18Let's Code Jumi #82: Generating the Frontend (Part 3)Download
2011-10-20Let's Code Jumi #83: Generating the Backend (Part 1)Download
2011-10-21Let's Code Jumi #84: Generating the Backend (Part 2)Download
2011-10-22Let's Code Jumi #85: Generating the Backend (Part 3)Download
2011-10-24Let's Code Jumi #86: Generating the Events (Part 1)Download
2011-10-27Let's Code Jumi #87: Generating the Events (Part 2)Download
2011-11-01Let's Code Jumi #88: Maven Plugin Testing (Part 1)Download
2011-11-03Let's Code Jumi #89: Maven Plugin Testing (Part 2)Download
2011-11-04Let's Code Jumi #90: Maven Plugin Testing (Part 3)Download
2011-11-07Let's Code Jumi #91: Maven Plugin Testing (Part 4)Download
2011-11-10Let's Code Jumi #92: Maven Plugin Testing (Part 5)Download
2011-11-14Let's Code Jumi #93: Embedded Java Compiler (Part 1)Download
2011-11-17Let's Code Jumi #94: Embedded Java Compiler (Part 2)Download
2011-11-19Let's Code Jumi #95: Embedded Java Compiler (Part 3)Download
2011-11-20Let's Code Jumi #96: Embedded Java Compiler (Part 4)Download
2011-11-22Let's Code Jumi #97: Embedded Java Compiler (Part 5)Download
2011-11-25Let's Code Jumi #98: Embedded Java Compiler (Part 6)Download
2011-11-30Let's Code Jumi #99: Using Code Generator (Part 1)Download
2011-12-02Let's Code Jumi #100: Using Code Generator (Part 2)Download
2011-12-04Let's Code Jumi #101: Using Code Generator (Part 3)Download
2011-12-07Let's Code Jumi #102: Using Code Generator (Part 4)Download
Theme: Testing - Thread-Safety Checking Bytecode Enhancer9 h 24 min
2011-12-09Let's Code Jumi #103: Parameterized Tests (Part 1)Download
2011-12-10Let's Code Jumi #104: Parameterized Tests (Part 2)Download
2011-12-14Let's Code Jumi #105: Parameterized Tests (Part 3)Download
2011-12-16Let's Code Jumi #106: Parameterized Tests (Part 4)Download
2011-12-18Let's Code Jumi #107: Testing Bytecode Manipulation (Part 1)Download
2011-12-21Let's Code Jumi #108: Testing Bytecode Manipulation (Part 2)Download
2011-12-23Let's Code Jumi #109: Testing Bytecode Manipulation (Part 3)Download
2011-12-27Let's Code Jumi #110: Testing Bytecode Manipulation (Part 4)Download
2011-12-30Let's Code Jumi #111: Bytecode Manipulation (Part 1)Download
2012-01-02Let's Code Jumi #112: Bytecode Manipulation (Part 2)Download
2012-01-06Let's Code Jumi #113: Bytecode Manipulation (Part 3)Download
2012-01-09Let's Code Jumi #114: Bytecode Manipulation (Part 4)Download
2012-01-16Let's Code Jumi #115: Using the Agent (Part 1)Download
2012-01-19Let's Code Jumi #116: Using the Agent (Part 2)Download
2012-01-21Let's Code Jumi #117: Generating Line Numbers (Part 1)Download
2012-01-22Let's Code Jumi #118: Generating Line Numbers (Part 2)Download
2012-01-26Let's Code Jumi #119: Generating Line Numbers (Part 3)Download
2012-01-29Let's Code Jumi #120: Finishing TouchesDownload
2012-02-01Let's Code Jumi #121: Hunting Concurrency Bugs (Part 1)Download
2012-02-12Let's Code Jumi #122: Improved Stack TracesDownload
2012-02-16Let's Code Jumi #123: Hunting Concurrency Bugs (Part 2)Download
Theme: Walking Skeleton - One Failing Test6 h 39 min
2012-02-19Let's Code Jumi #124: One Failing Test (Part 1)Download
2012-02-22Let's Code Jumi #125: One Failing Test (Part 2)Download
2012-02-25Let's Code Jumi #126: Better Mocks (Part 1)Download
2012-02-28Let's Code Jumi #127: Better Mocks (Part 2)Download
2012-03-02Let's Code Jumi #128: Better Mocks (Part 3)Download
2012-03-07Let's Code Jumi #129: Better Mocks (Part 4)Download
2012-03-10Let's Code Jumi #130: Better Mocks (Part 5)Download
2012-03-13Let's Code Jumi #131: One Failing Test (Part 3)Download
2012-03-16Let's Code Jumi #132: One Failing Test (Part 4)Download
2012-03-19Let's Code Jumi #133: Fail EarlyDownload
2012-03-22Let's Code Jumi #134: One Failing Test (Part 5)Download
2012-03-25Let's Code Jumi #135: SimpleUnit's Test Reporting (Part 1)Download
2012-03-30Let's Code Jumi #136: SimpleUnit's Test Reporting (Part 2)Download
2012-04-02Let's Code Jumi #137: One Failing Test (Part 6)Download
2012-04-04Let's Code Jumi #138: One Failing Test (Part 7)Download
Theme: Refactoring - Code Generator3 h 59 min
2012-04-07Let's Code Jumi #139: Better Printing (Part 1)Download
2012-04-09Let's Code Jumi #140: Better Printing (Part 2)Download
2012-04-12Let's Code Jumi #141: Generic Type Parameters (Part 1)Download
2012-04-15Let's Code Jumi #142: Generic Type Parameters (Part 2)Download
2012-04-17Let's Code Jumi #143: Generic Type Parameters (Part 3)Download
2012-04-20Let's Code Jumi #144: Generic Type Parameters (Part 4)Download
2012-04-24Let's Code Jumi #145: Builder (Part 1)Download
2012-04-26Let's Code Jumi #146: Builder (Part 2)Download
2012-04-30Let's Code Jumi #147: Single-Class ImportsDownload
Theme: Testing - Mutation Testing1 h 15 min
2012-05-03Let's Code Jumi #148: Mutation Testing (Part 1)Download
2012-05-06Let's Code Jumi #149: Mutation Testing (Part 2)Download
2012-05-09Let's Code Jumi #150: Mutation Testing (Part 3)Download
2012-05-13Let's Code Jumi Special #1: Contract TestsDownload
Theme: Walking Skeleton - Text UI & Stack Traces1 h 53 min
2012-05-16Let's Code Jumi #151: Text UI & Stack Traces (Part 1)Download
2012-05-19Let's Code Jumi #152: Text UI & Stack Traces (Part 2)Download
2012-05-23Let's Code Jumi #153: Text UI & Stack Traces (Part 3)Download
2012-05-28Let's Code Jumi #154: Text UI & Stack Traces (Part 4)Download
Theme: Refactoring - Event-Based Text UI3 h 37 min
2012-06-02Let's Code Jumi #155: Event-Based Text UI (Part 1)Download
2012-06-05Let's Code Jumi #156: Event-Based Text UI (Part 2)Download
2012-06-12Let's Code Jumi #157: Event-Based Text UI (Part 3)Download
2012-06-14Let's Code Jumi #158: Event-Based Text UI (Part 4)Download
2012-06-17Let's Code Jumi #159: Test Names (Part 1)Download
2012-06-20Let's Code Jumi #160: Test Names (Part 2)Download
2012-06-25Let's Code Jumi #161: Test Names (Part 3)Download
2012-07-01Let's Code Jumi #162: Use the New Text UIDownload
Theme: Testing - Require Thread-Safety Annotations1 h 47 min
2012-07-03Let's Code Jumi #163: Require Thread-Safety Annotations (Part 1)Download
2012-07-07Let's Code Jumi #164: Require Thread-Safety Annotations (Part 2)Download
2012-07-09Let's Code Jumi #165: Require Thread-Safety Annotations (Part 3)Download
2012-07-12Let's Code Jumi #166: Require Thread-Safety Annotations (Part 4)Download
Theme: Feature - Running Tests in Parallel23 h 15 min
2012-07-16Let's Code Jumi #167: Parallel Execution (Part 1)Download
2012-07-19Let's Code Jumi #168: Parallel Execution (Part 2)Download
2012-07-22Let's Code Jumi #169: Parallel Execution (Part 3)Download
2012-07-26Let's Code Jumi #170: Parallel Execution (Part 4)Download
2012-07-29Let's Code Jumi #171: Refactoring TestClassRunner (Part 1)Download
2012-08-01Let's Code Jumi #172: Refactoring TestClassRunner (Part 2)Download
2012-08-04Let's Code Jumi #173: Refactoring TestClassRunner (Part 3)Download
2012-08-07Let's Code Jumi #174: Refactoring TestClassRunner (Part 4)Download
2012-08-13Let's Code Jumi #175: Text UI Parsing (Part 1)Download
2012-08-15Let's Code Jumi #176: Text UI Parsing (Part 2)Download
2012-08-17Let's Code Jumi #177: Text UI Parsing (Part 3)Download
2012-08-21Let's Code Jumi #178: Imports (Part 1)Download
2012-08-23Let's Code Jumi #179: Imports (Part 2)Download
2012-08-26Let's Code Jumi #180: Enter RunId (Part 1)Download
2012-08-29Let's Code Jumi #181: Enter RunId (Part 2)Download
2012-09-01Let's Code Jumi #182: Primitive Obsession (Part 1)Download
2012-09-03Let's Code Jumi #183: Primitive Obsession (Part 2)Download
2012-09-07Let's Code Jumi #184: Regular Expressions (Part 1)Download
2012-09-09Let's Code Jumi #185: Regular Expressions (Part 2)Download
2012-09-11Let's Code Jumi #186: Regular Expressions (Part 3)Download
2012-09-14Let's Code Jumi #187: Regular Expressions (Part 4)Download
2012-09-21Let's Code Jumi #188: Checking Test Runs (Part 1)Download
2012-09-23Let's Code Jumi #189: Checking Test Runs (Part 2)Download
2012-10-01Let's Code Jumi #190: Calm Before the Storm (Part 1)Download
2012-10-03Let's Code Jumi #191: Calm Before the Storm (Part 2)Download
2012-10-05Let's Code Jumi #192: Calm Before the Storm (Part 3)Download
2012-10-16Let's Code Jumi #193: Calm Before the Storm (Part 4)Download
2012-10-23Let's Code Jumi #194: Design Feedback (Part 1)Download
2012-10-26Let's Code Jumi #195: Design Feedback (Part 2)Download
2012-11-06Let's Code Jumi #196: Fixing Event Stub Conflicts (Part 1)Download
2012-11-09Let's Code Jumi #197: Fixing Event Stub Conflicts (Part 2)Download
2012-11-15Let's Code Jumi #198: Fixing Event Stub Conflicts (Part 3)Download
2012-11-20Let's Code Jumi #199: Fixing Event Stub Conflicts (Part 4)Download
2012-12-01Let's Code Jumi #200: Generating RunIds (Part 1)Download
2012-12-02Let's Code Jumi #201: Generating RunIds (Part 2)Download
2012-12-09Let's Code Jumi #202: Generating RunIds (Part 3)Download
2012-12-15Let's Code Jumi #203: Generating RunIds (Part 4)Download
2012-12-24Let's Code Jumi #204: Run Events (Part 1)Download
2012-12-25Let's Code Jumi #205: Run Events (Part 2)Download
2012-12-27Let's Code Jumi #206: Run Events (Part 3)Download
2012-12-29Let's Code Jumi #207: Run Events (Part 4)Download
2013-01-01Let's Code Jumi #208: Run Events (Part 5)Download
2013-01-05Let's Code Jumi #209: Run Events (Part 6)Download
2013-01-14Let's Code Jumi #210: Isolated TestsDownload
2013-01-15Let's Code Jumi #211: Redundant Parameters (Part 1)Download
2013-01-22Let's Code Jumi #212: Redundant Parameters (Part 2)Download
2013-01-25Let's Code Jumi #213: Redundant Parameters (Part 3)Download
2013-02-02Let's Code Jumi #214: Misc Refactoring (Part 1)Download
2013-02-03Let's Code Jumi #215: Misc Refactoring (Part 2)Download
2013-02-07Let's Code Jumi #216: Demuxing Denormalizer (Part 1)Download
2013-02-09Let's Code Jumi #217: Demuxing Denormalizer (Part 2)Download
2013-02-11Let's Code Jumi #218: Demuxing Denormalizer (Part 3)Download
2013-02-16Let's Code Jumi #219: Misc Refactoring (Part 3)Download
Theme: Refactoring - Actors21 h 19 min
2013-02-23Let's Code Jumi #220: ActorRef (Part 1)Download
2013-02-26Let's Code Jumi #221: ActorRef (Part 2)Download
2013-03-02Let's Code Jumi #222: Unified Actors (Part 1)Download
2013-03-10Let's Code Jumi #223: Unified Actors (Part 2)Download
2013-03-18Let's Code Jumi #224: Unified Actors (Part 3)Download
2013-03-23Let's Code Jumi #225: Decoupled Actor Threads (Part 1)Download
2013-03-28Let's Code Jumi #226: Decoupled Actor Threads (Part 2)Download
2013-04-08Let's Code Jumi #227: Decoupled Actor Threads (Part 3)Download
2013-04-14Let's Code Jumi #228: MonitoredExecutor (Part 1)Download
2013-04-18Let's Code Jumi #229: MonitoredExecutor (Part 2)Download
2013-04-22Let's Code Jumi #230: Removing Unattended Workers (Part 1)Download
2013-04-26Let's Code Jumi #231: MonitoredExecutor (Part 3)Download
2013-04-30Let's Code Jumi #232: Removing Unattended Workers (Part 2)Download
2013-05-04Let's Code Jumi #233: Removing Unattended Workers (Part 3)Download
2013-05-07Let's Code Jumi #234: Removing Unattended Workers (Part 4)Download
2013-05-10Let's Code Jumi #235: Removing Unattended Workers (Part 5)Download
2013-05-13Let's Code Jumi #236: Terminology UpdateDownload
2013-05-17Let's Code Jumi #237: Eventizer Providers (Part 1)Download
2013-05-20Let's Code Jumi #238: Eventizer Providers (Part 2)Download
2013-05-26Let's Code Jumi #239: MicrobenchmarkDownload
2013-06-01Let's Code Jumi #240: Thread NamingDownload
2013-06-07Let's Code Jumi #241: Message Logging (Part 1)Download
2013-06-08Let's Code Jumi #242: Message Logging (Part 2)Download
2013-06-11Let's Code Jumi #243: Message Logging (Part 3)Download
2013-06-16Let's Code Jumi #244: Message Logging (Part 4)Download
2013-06-22Let's Code Jumi #245: Message Logging (Part 5)Download
2013-06-25Let's Code Jumi #246: Message Logging (Part 6)Download
2013-06-28Let's Code Jumi #247: Message Logging (Part 7)Download
2013-07-02Let's Code Jumi #248: Executor Logging (Part 1)Download
2013-07-06Let's Code Jumi #249: Executor Logging (Part 2)Download
2013-07-10Let's Code Jumi #250: Executor Logging (Part 3)Download
2013-07-13Let's Code Jumi #251: Stopping Actor Threads (Part 1)Download
2013-07-16Let's Code Jumi #252: Stopping Actor Threads (Part 2)Download
2013-07-22Let's Code Jumi #253: Stopping Actor Threads (Part 3)Download
2013-07-25Let's Code Jumi #254: Stopping Actor Threads (Part 4)Download
2013-07-30Let's Code Jumi #255: Failure Handling (Part 1)Download
2013-08-02Let's Code Jumi #256: Failure Handling (Part 2)Download
2013-08-05Let's Code Jumi #257: Failure Handling (Part 3)Download
2013-08-09Let's Code Jumi #258: Failure Handling (Part 4)Download
2013-08-12Let's Code Jumi #259: Failure Handling (Part 5)Download
2013-08-16Let's Code Jumi #260: Failure Handling (Part 6)Download
2013-08-19Let's Code Jumi #261: Failure Handling (Part 7)Download
2013-08-24Let's Code Jumi #262: Actor Interface Contracts (Part 1)Download
2013-08-28Let's Code Jumi #263: Actor Interface Contracts (Part 2)Download
2013-09-01Let's Code Jumi #264: Custom POM Properties (Part 1)Download
2013-09-05Let's Code Jumi #265: Custom POM Properties (Part 2)Download
2013-09-08Let's Code Jumi #266: Final PolishDownload
2013-09-11Let's Code Jumi #267: Continuous DeliveryDownload
Theme: Bugfix - WorkerCounter2 h 29 min
2013-09-15Let's Code Jumi #268: Concurrency Bug (Part 1)Download
2013-09-18Let's Code Jumi #269: Concurrency Bug (Part 2)Download
2013-09-23Let's Code Jumi #270: Concurrency Bug (Part 3)Download
2013-09-29Let's Code Jumi #271: Concurrency Bug (Part 4)Download
2013-10-03Let's Code Jumi #272: More Robust Design (Part 1)Download
2013-10-06Let's Code Jumi #273: More Robust Design (Part 2)Download
Theme: Refactoring - Process Lifecycle32 h 11 min
2013-10-12Let's Code Jumi #274: Command Line Arguments (Part 1)Download
2013-10-15Let's Code Jumi #275: Command Line Arguments (Part 2)Download
2013-10-20Let's Code Jumi #276: Command Line Arguments (Part 3)Download
2013-10-25Let's Code Jumi #277: System Properties (Part 1)Download
2013-11-02Let's Code Jumi #278: System Properties (Part 2)Download
2013-11-08Let's Code Jumi #279: System Properties (Part 3)Download
2013-11-13Let's Code Jumi #280: Final DecouplingDownload
2013-11-17Let's Code Jumi #281: Process Liveliness (Part 1)Download
2013-11-22Let's Code Jumi #282: Process Liveliness (Part 2)Download
2013-11-29Let's Code Jumi #283: Launcher Actors (Part 1)Download
2013-12-03Let's Code Jumi #284: Launcher Actors (Part 2)Download
2013-12-08Let's Code Jumi #285: Launcher Actors (Part 3)Download
2013-12-16Let's Code Jumi #286: Launcher Actors (Part 4)Download
2013-12-23Let's Code Jumi #287: Launcher Actors (Part 5)Download
2013-12-31Let's Code Jumi #288: Launcher Actors (Part 6)Download
2014-01-04Let's Code Jumi #289: Launcher Actors (Part 7)Download
2014-01-22Let's Code Jumi #290: Unit Tests (Part 1)Download
2014-01-29Let's Code Jumi #291: Unit Tests (Part 2)Download
2014-02-02Let's Code Jumi #292: Unit Tests (Part 3)Download
2014-02-12Let's Code Jumi #293: Unit Tests (Part 4)Download
2014-02-13Let's Code Jumi #294: Network Layer (Part 1)Download
2014-02-15Let's Code Jumi #295: Network Layer (Part 2)Download
2014-02-18Let's Code Jumi #296: Network Layer (Part 3)Download
2014-02-22Let's Code Jumi #297: Network Layer (Part 4)Download
2014-03-02Let's Code Jumi #298: Network Layer (Part 5)Download
2014-03-03Let's Code Jumi #299: Network Layer (Part 6)Download
2014-03-06Let's Code Jumi #300: Unit Tests (Part 5)Download
2014-03-10Let's Code Jumi #301: Unit Tests (Part 6)Download
2014-03-12Let's Code Jumi #302: Unit Tests (Part 7)Download
2014-03-19Let's Code Jumi #303: Unit Tests (Part 8)Download
2014-03-21Let's Code Jumi #304: Daemon Shutdown (Part 1)Download
2014-04-01Let's Code Jumi #305: Daemon Shutdown (Part 2)Download
2014-04-04Let's Code Jumi #306: DisconnectingDownload
2014-05-01Let's Code Jumi #307: Releasing Resources Test (Part 1)Download
2014-05-05Let's Code Jumi #308: Releasing Resources Test (Part 2)Download
2014-05-09Let's Code Jumi #309: Releasing Resources Test (Part 3)Download
2014-05-21Let's Code Jumi #310: Stopping Threads (Part 1)Download
2014-05-26Let's Code Jumi #311: Stopping Threads (Part 2)Download
2014-05-29Let's Code Jumi #312: Stopping Threads (Part 3)Download
2014-05-31Let's Code Jumi #313: Releasing Resources Test (Part 4)Download
2014-06-14Let's Code Jumi #314: Closing Sockets (Part 1)Download
2014-06-18Let's Code Jumi #315: Closing Sockets (Part 2)Download
2014-06-22Let's Code Jumi #316: Closing Sockets (Part 3)Download
2014-06-28Let's Code Jumi #317: Closing Sockets (Part 4)Download
2014-07-03Let's Code Jumi #318: Multiple Clients (Part 1)Download
2014-07-06Let's Code Jumi #319: Multiple Clients (Part 2)Download
2014-07-09Let's Code Jumi #320: Timeouts (Part 1)Download
2014-07-13Let's Code Jumi #321: Timeouts (Part 2)Download
2014-07-17Let's Code Jumi #322: Timeouts (Part 3)Download
2014-07-20Let's Code Jumi #323: Flakiness (Part 1)Download
2014-07-29Let's Code Jumi #324: Flakiness (Part 2)Download
2014-07-29Let's Code Jumi #325: Flakiness (Part 3)Download
2014-07-29Let's Code Jumi #326: Flakiness (Part 4)Download
2014-08-06Let's Code Jumi #327: Shutdown Timeouts (Part 1)Download
2014-08-09Let's Code Jumi #328: Shutdown Timeouts (Part 2)Download
2014-08-12Let's Code Jumi #329: Shutdown Timeouts (Part 3)Download
2014-08-15Let's Code Jumi #330: Shutdown Timeouts (Part 4)Download
2014-08-18Let's Code Jumi #331: Shutdown Timeouts (Part 5)Download
2014-08-25Let's Code Jumi #332: Lifecycle Messages (Part 1)Download
2014-08-28Let's Code Jumi #333: Lifecycle Messages (Part 2)Download
2014-08-30Let's Code Jumi #334: Lifecycle Messages (Part 3)Download
2014-09-03Let's Code Jumi #335: Suite Configuration (Part 1)Download
2014-09-17Let's Code Jumi #336: Suite Configuration (Part 2)Download
2014-10-01Let's Code Jumi #337: Suite Configuration (Part 3)Download
2014-10-19Let's Code Jumi #338: Daemon Configuration (Part 1)Download
2014-10-23Let's Code Jumi #339: Daemon Configuration (Part 2)Download
2014-10-28Let's Code Jumi #340: Daemon Configuration (Part 3)Download
2014-12-02Let's Code Jumi #341: Unit Tests (Part 1)Download
2014-12-11Let's Code Jumi #342: Unit Tests (Part 2)Download
2014-12-14Let's Code Jumi #343: Phase Change PatternDownload
2014-12-27Let's Code Jumi #344: Generic Properties (Part 1)Download
2015-01-02Let's Code Jumi #345: Generic Properties (Part 2)Download
2015-01-05Let's Code Jumi #346: Generic Properties (Part 3)Download
Theme: Refactoring - Java 7 Migration(ongoing)
2015-01-14Let's Code Jumi #347: Bytecode Assertions (Part 1)Download
2015-01-16Let's Code Jumi #348: Bytecode Assertions (Part 2)Download
2015-01-25Let's Code Jumi #349: Bytecode Assertions (Part 3)Download
2015-02-01Let's Code Jumi #350: Java 7 Language LevelDownload
2015-02-11Let's Code Jumi #351: NIO.2 Migration (Part 1)Download
2015-02-25Let's Code Jumi #352: NIO.2 Migration (Part 2)Download
2015-02-28Let's Code Jumi #353: NIO.2 Migration (Part 3)Download
2015-03-20Let's Code Jumi #354: NIO.2 Migration (Part 4)Download

Downloads of All Episodes

Let's Code Dimdwarf

Shows the development of a highly complex distributed application server using TDD. The project's implementation was well under way when the Let's Code series started (7000 LOC production code, 9000 LOC test code).

Project Web Site: dimdwarf.sourceforge.net
Source Code: github.com/luontola/dimdwarf

Episodes

Theme: Introduction30 min
2010-09-22Let's Code Dimdwarf #1: Introducing the ProjectDownload
Theme: Logging Out1 h 21 min
2010-09-24Let's Code Dimdwarf #2: Let the Coding BeginDownload
2010-09-27Let's Code Dimdwarf #3: Responding to LogoutDownload
2010-09-29Let's Code Dimdwarf #4: Tidying Logout TestsDownload
Theme: Asynchronous Testing Tools5 h 13 min
2010-10-02Let's Code Dimdwarf #5: Asynchronous Testing ToolsDownload
2010-10-05Let's Code Dimdwarf #6: Tumbling with Exception MessagesDownload
2010-10-10Let's Code Dimdwarf #7: Growing a Fluent APIDownload
2010-10-12Let's Code Dimdwarf #8: Escape from Refactoring HellDownload
2010-10-14Let's Code Dimdwarf #9: Second Asynchronous Use CaseDownload
2010-10-18Let's Code Dimdwarf #10: Add SynchronizationDownload
2010-10-23RECAP: Let's Code Dimdwarf #1-10Download
2010-10-27Let's Code Dimdwarf #11: Reuse via DeduplicationDownload
2010-10-30Let's Code Dimdwarf #12: Right Refactoring PathDownload
2010-11-03Let's Code Dimdwarf #13: Assertion Error MessagesDownload
2010-11-04Let's Code Dimdwarf #14: Covering All CornersDownload
2010-11-06Let's Code Dimdwarf #15: Matcher MismatchDownload
2010-11-07Let's Code Dimdwarf #16: Valuing AmbiguityDownload
Theme: Single Responsibility Principle in Network Tests1 h 19 min
2010-11-08Let's Code Dimdwarf #17: Proof of the PuddingDownload
2010-11-09Let's Code Dimdwarf #18: Revenge of the HackDownload
2010-11-10Let's Code Dimdwarf #19: Close of the SplitDownload
Theme: Return of the AsynchronousSink57 min
2010-11-12Let's Code Dimdwarf #20: Make It RightDownload
2010-11-26RECAP: Let's Code Dimdwarf #11-20Download
2010-11-27Let's Code Dimdwarf #21: Ambiguity Paid OffDownload
Theme: From One to Many Clients3 h 49 min
2010-12-08Let's Code Dimdwarf #22: Preparatory RefactoringDownload
2010-12-10Let's Code Dimdwarf #23: Refactoring Driven by End-to-End TestsDownload
2010-12-12Let's Code Dimdwarf #24: Merging Classes for Higher CohesionDownload
2010-12-15Let's Code Dimdwarf #25: Return to SenderDownload
2010-12-22Let's Code Dimdwarf #26: Avoid RushingDownload
2010-12-23Let's Code Dimdwarf #27: Extracting ClientRunnerDownload
2010-12-28Let's Code Dimdwarf #28: Test the TestDownload
2011-01-05Let's Code Dimdwarf #29: Authenticating Multiple ClientsDownload
2011-01-08Let's Code Dimdwarf #30: Thoughts on YAGNIDownload
2011-01-19RECAP: Let's Code Dimdwarf #21-30Download
Theme: Application Loading Tests4 h 45 min
2011-01-24Let's Code Dimdwarf #31: Generics MagicDownload
2011-01-28Let's Code Dimdwarf #32: Application Loading Test NamesDownload
2011-01-31Let's Code Dimdwarf #33: Extracting a SandboxDownload
2011-02-03Let's Code Dimdwarf #34: Unique Temporary DirectoriesDownload
2011-02-07Let's Code Dimdwarf #35: Test-AfterDownload
2011-02-11Let's Code Dimdwarf #36: Safety NetDownload
2011-02-15Let's Code Dimdwarf #37: RefactoringDownload
2011-02-19Let's Code Dimdwarf #38: More RefactoringDownload
2011-02-23Let's Code Dimdwarf #39: More Test CasesDownload
2011-03-01Let's Code Dimdwarf #40: Better AssertsDownload
2011-03-06RECAP: Let's Code Dimdwarf #31-40Download
2011-03-09Let's Code Dimdwarf #41: Class Loader TroubleDownload
Theme: Manual DI Spike2 h 33 min
2011-03-13Let's Code Dimdwarf #42: Without DI FrameworksDownload
2011-03-17Let's Code Dimdwarf #43: It's Alive!Download
2011-03-24Let's Code Dimdwarf #44: Making the Dependencies ExplicitDownload
2011-03-28Let's Code Dimdwarf #45: Layers of IndirectionDownload
2011-04-04Let's Code Dimdwarf #46: Encapsulated APIDownload
2011-04-10Let's Code Dimdwarf #47: Manual DI vs. GuiceDownload
Theme: Command Line Parsing37 min
2011-04-24Let's Code Dimdwarf #48: Command Line ParsingDownload
Theme: Session Messages(ongoing)
2011-04-28Let's Code Dimdwarf #49: Session Messages RoadmapDownload
2011-04-30Let's Code Dimdwarf #50: Decoding Session MessagesDownload
2011-05-04RECAP: Let's Code Dimdwarf #41-50Download
2011-05-08Let's Code Dimdwarf #51: Walking SkeletonDownload
2011-05-12Let's Code Dimdwarf #52: Progressive DeepeningDownload
2011-05-14Let's Code Dimdwarf #53: Fixing EncapsulationDownload
2011-05-19Let's Code Dimdwarf #54: Timestamp OrderingDownload
2011-05-29Let's Code Dimdwarf #55: Pretty PrintingDownload
2011-06-02Let's Code Dimdwarf #56: Timestamp ClockDownload
2011-06-09Let's Code Dimdwarf #57: Thread-Safe ClockDownload
2011-06-15Let's Code Dimdwarf #58: Session IDsDownload
2011-07-06Let's Code Dimdwarf #59: Session ID MappingDownload
2011-07-17Let's Code Dimdwarf #60: Smells Like State MachineDownload
2011-07-24Let's Code Dimdwarf #61: State MachineDownload
2011-08-06Let's Code Dimdwarf #62: Refactoring DominoDownload
2011-08-14Let's Code Dimdwarf #63: You Will Be AssimilatedDownload
2011-08-21Let's Code Dimdwarf #64: Asynchronous State MachineDownload
2011-09-05Let's Code Dimdwarf #65: Feature CompleteDownload
2011-09-13Let's Code Dimdwarf #66: State Machine DSLDownload
2011-09-28Let's Code Dimdwarf #67: Hide SessionHandleDownload
2011-10-02Let's Code Dimdwarf #68: Session APIDownload
2011-10-08Let's Code Dimdwarf #69: Commit RequestsDownload

Downloads of All Episodes

Let's Code Text Adventure

Shows the development of a small homework, such as is found on introductory programming courses, using TDD.

Source Code: github.com/luontola/text-adventure

Episodes