Have fun learning about Test-Driven Development with JitterTed's TDD Game

My Presentations


Here you’ll find upcoming talks, presentations, meetups, etc., and slides, source code, recordings, etc. from talks I’ve given in the past.

Upcoming Talks

None yet (want me to give one of the talks below? Contact me! ted@ this domain.)

Past Talks

  • Event-Sourcing From Scratch at dev2next, October 2025

    • Presentation slides

    • Source code for JitterTicket

    • Abstract

      • Event-sourcing allows the business to ask questions about your application’s data that weren’t thought of when the system was created, such as “how often are customers changing their shipping address?”. Event-sourcing is like version control for your data, with meaningful commit messages, allowing you to understand not just what the current state is, but how it got there.

        In this session, you’ll learn how event-sourcing works at the code level without event-sourcing libraries getting in the way of deeper understanding. We’ll walk through a codebase for a Concert Ticketing system and see how straightforward the implementation can be.

        We’ll start with modeling the events, the commands (user actions) that generate them, the aggregates that make business decisions, and the projections used to generate the user interface. We’ll look at the (Java) code that implements these concepts, and see how event-sourcing makes testing easier to write and understand.

        We’ll end by touching on the challenges to using event-sourcing, such as performance and schema evolution (versioning).

  • JUnit Tests Need Refactoring, Too at dev2next, October 2025

    • Presentation slides

    • Source code for Ensembler

    • Source code for Blackjack

    • Abstract

      • Tests are code, too, but don’t get as much attention as production code, often leaving messy, hard to understand tests. Poorly factored tests can also make refactoring production code that much harder. In this session, we’ll start with what we need from a good test, using AssertJ and JUnit features to make it readable and maintainable. We’ll walk up the ladder from Helper methods, shared Factory Methods, all the way to Test Data Builders, using automated refactoring tools to easily make the transition. We’ll look at test “smells” and how to repair them, using Parameterized Tests, finishing with how to “retarget” your tests when extracting a new production class from existing code.
  • Testable Architecture: Keep 'em Separated at Commit Your Code, September 2025

    Title Slide from the presentation
    Testable Architecture
    • Video recording of talk is here

    • Slides are available here

    • Source code repository is here

    • Abstract

      • One of the most important, yet misunderstood, aspects of Hexagonal, Clean, and Onion architectures are not their folder structure, but how they keep I/O and domain logic separate. Why? The clear separation makes it easier to write tests: by moving away from the confusing terms of “unit” and “integration” tests to “I/O-based” and “I/O-free”, there’s no longer any confusion about how the test should be structured.

        In this Java code-filled session, we’ll look at how to combine Hexagonal Architecture with Domain-Driven Design’s context boundaries and tactical patterns to make it clear what code goes where and how to test it. We’ll also see how to refactor “mixed up” code to separate I/O from domain and application logic. The result is extremely fast tests for the most important part of your application, the domain, while also reducing the number of tests needed for coordination.


Make Your Code More Testable™️

Don't miss out on ways to make your code more testable. Hear about new Refactoring techniques, improving the Test-Driven Development process, Hexagonal Architecture, and much more.

    We respect your privacy. Unsubscribe at any time.