Transactional systems are built with the primary focus of processing many concurrent events, only keeping the current state of data. What if there was a way to capture all the events that led to that current state? Capturing all events would allow for deeper analytics/machine learning, debugging, auditing, and more all without affecting your production systems. In this talk, Nathan Zender will explore the architecture, tools, and patterns used to do just that. Before leaving this talk, you will also learn about the stumbling blocks Nathan ran into while implementing this against a temperamental legacy application.