I am a Tech Lead at FaberNovel Technologies, where I work on hypermedia REST APIs, semantic web tooling, and distributed systems, mostly in Scala. I'm also a Ph.D. student at the Department of Computer Science of AGH-UST. My research interests include agent-based computations, functional programming and distributed computing.
Event sourcing consists in storing changes to application state instead of the current one. It allows to know the application state at any point in time, reinterpret past events, and more easily integrate distributed systems.
In this talk, we show how functional programming principles can make event sourcing composable and simpler to use. We introduce a Sourced monad and demonstrate that event sourcing becomes an implementation detail and existing code can be sourced almost transparently.