In my everyday life I'm working at a company that enables event-driven software. The basic idea is that you don't save the state of an object, but all the events that led up to that point. This way you can easily rewind and check things. The obvious use case is finance where you have to audit everything, but there's a lot of other applications as well.
I'm not actually a developer, so I only caught some of the theory and I'm trying to figure out how to implement it by myself. Instead of the high-level magic my colleagues use to store the events, I just put them all in a JavaScript array. Which is not the right approach for a big project, but a small-scale thing like this will probably manage just fine.