Anton Davydov's wroclove.rb 2019 talk. Introduces event sourcing as a pattern of persisting what happened (immutable events) instead of current state, then folding events into state via projections (a function of reducer, events, initial state). Uses git commits as a real-world analogy. Covers event stores (Oracle, MongoDB, Kafka, Redis, in-memory), immutability, validation before storing, data evolution (optional fields, binary formats, versioning), performance optimizations via streams (per-aggregate partitioning) and snapshots (cache a computed state; read models can use Redis, MySQL, Cassandra, etc.), real-world use cases (e-commerce orders, checkout flow, Google-Docs-style versioned collaboration, history like GitHub, game tracking systems like Dota replays), clarifies that event sourcing ≠ event-driven architecture, and that blockchain is not the solution. Discusses benefits (communication with domain experts, logs for free, time-travel, flexible schema) and problems (hard to learn/hire, hard to get state across graphs of events, distribution, updating/deleting events). Advising topics: optimistic UI vs WebSockets/long-polling for fast display; deleting user data three ways — Martin Fowler's reactive approach, encrypt-and-lose-key, and Kafka compaction. Ruby options: Ruby Event Store gem (production), plus speaker's own hanami-events gem for event-driven transport with pluggable adapters (memory sync, memory async, Redis) via dry-container. Ends with patterns (Saga as state machine, CQRS read/write split), the awesome-ddd GitHub list as inspiration from F#/.NET communities, and recommendations of Designing Data-Intensive Applications and a DDD book. Q&A on GDPR + quantum computers, snapshot-based searching via Elasticsearch, and the long-run cost of event sourcing.