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

Live Coding Journal - Apr 13, 2026

Reflections, Learnings, and Mistakes from live coding my JitterTicket Event Sourcing application


Notes from Today’s Live Coding Session

Today’s stream was mostly mundane (and a bit frustrating) refactoring. At one point (around 1h32m) I did a revert to redo the refactoring as I had painted myself in a bit of a corner.

One thing I did realize is that while the flush() method in the “new” Domain Projector returns the “delta” state, that state should not include the Checkpoint. The Checkpoint is a property of the Projector, not the state, so instead it should return Delta+Checkpoint, aka CheckpointedDelta.

public abstract class NewDomainProjector<STATE, DELTA extends ProjectionDelta>
        extends EventHandler {

  public abstract STATE currentState();

  /**
   * Returns any uncommitted changes in the projection,
   * clearing it as a result.
   *
   * @return uncommitted changes since the last time flush was called,
   * or since the projector was instantiated
   */
  public abstract DELTA flush();

  /**
   * Checkpoint for the most recent event sequence processed by this projector.
   *
   * @return the last event sequence processed, or Checkpoint.INITIAL if none have been processed
   */
  public abstract Checkpoint checkpoint();
}

Next Steps

Finish up the “new” projection coordinator persistence and then see what’s left to do before (finally!) returning to work on the TDD Game online version.

Join me on my next stream, which I usually do Monday through Thursday, starting at 19:00 UTC on Twitch: https://jitterted.stream.


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.