DAGs & Event Sourcing
Video & Resource Study Guide
Tier 1: Watch First — The Essentials
These 5 videos give you 80% of what you need. Watch in order.
Greg Young — CQRS and Event Sourcing
The canonical talk. Greg Young coined CQRS. Traces the concept back to double-entry accounting ledgers — events are older than computers. Many companies require new hires to watch this. Includes the iconic slide of a ledger entry being erased (you can’t — that’s why events are immutable).
Martin Fowler — The Many Meanings of Event-Driven Architecture
Fowler breaks down four distinct patterns that people conflate under “event-driven”: Event Notification, Event-Carried State Transfer, Event Sourcing, and CQRS. Essential for knowing which pattern solves which problem. Without this vocabulary, you’ll conflate things that should be kept separate.
Gary Bernhardt — Boundaries
THE foundational talk on functional core / imperative shell. Pure functions inside, I/O at the edges. This is literally what your core/ vs adapters/ separation implements. Bernhardt explains why this structure makes testing trivial, concurrency safe, and code changeable. This talk will feel like someone describing your repo’s architecture before it existed.
Greg Young — Event Sourcing
More technical depth than talk #1. Covers trade-offs, misconceptions, read models, object databases, accidental complexity, service buses, and the relationship between event sourcing and DDD. Watch after #1 to go deeper on the mechanics.
William Fiset — Graph Theory Algorithms
Visual walkthrough of every graph algorithm. The topological sort, DAG shortest/longest path, and cycle detection sections are exactly what you need for your product graph. Skip to those chapters. Includes working Java source code and slides.
Source code: github.com/williamfiset/Algorithms
Tier 2: Practical Implementation
How to actually build it — anti-patterns, live coding, migration paths
Oskar Dudycz — Let’s Build the Worst Event Sourcing System!
Teaches every anti-pattern by building the worst possible system. You learn what NOT to do — often more valuable than best practices. Demonstrates that event sourcing is “not complex, it’s different.”
Oskar Dudycz — Let’s Build Event Store in One Hour!
Live-codes an event store from scratch using PostgreSQL. Shows the table design, append operations, and projection mechanics. Directly relevant to your Supabase approach.
Oskar Dudycz — From CRUD to Event Sourcing
Shows the practical migration path from a classical CRUD monolith to CQRS and event sourcing. Key insight: you do NOT need multiple databases or event sourcing from day one. Start with CQRS on a single database and add event sourcing later.
Scott Wlaschin — Domain Modeling Made Functional
“Make illegal states unrepresentable” — use the type system to encode business rules so incorrect code cannot compile. Maps directly to your models.py and specs.py. No F# knowledge needed.
All talks: fsharpforfunandprofit.com/ddd
Greg Young — A Decade of DDD, CQRS, Event Sourcing
Retrospective from the person who coined CQRS — what worked, what didn’t, how thinking evolved over 10 years. Essential for avoiding mistakes the community has already learned from.
Tier 3: DAG Algorithms — Graph Theory Deep Dive
The computer science fundamentals behind your product graph
Abdul Bari — Graph Traversals, Topological Sort
Search his channel for: “Topological Sort”, “Graph Traversals BFS DFS”. Exceptionally clear hand-drawn diagrams, slower-paced, deeper explanations. 500K+ students. Universally recommended on Reddit and LeetCode for graph algorithm fundamentals.
MIT 6.006 Lecture 14 — DFS, Topological Sort
The gold standard academic treatment. Proves that a DAG has no back edges in DFS and that reverse finishing order gives a valid topological ordering. If you want to understand why the algorithm is correct, not just how it works, this is the lecture. Also covers edge classification: tree edges, back edges, forward edges, cross edges.
MIT Missing Semester — Version Control (Git)
Explains Git bottom-up as a DAG data structure. Commits are nodes, parent pointers are edges. Branches are just references into the DAG. Merging creates nodes with two parents. The best real-world DAG example — a system you already use daily.
NeetCode — Course Schedule I & II
LeetCode 207 and 210 — the classic DAG problems. “Is this graph a DAG?” (cycle detection) and “give me a topological ordering.” Clean Python walkthroughs. These are two sides of the same coin: if you can detect cycles, you can topologically sort, and vice versa.
Course: neetcode.io — Topological Sort
Striver (take U forward) — Graph Series
Key videos: “Topological Sort using DFS”, “Kahn’s Algorithm”, “Shortest Path in DAG.” The shortest path video demonstrates using topological sort to find shortest paths in O(V+E) — the practical application most tutorials skip. Code in Python, Java, C++.
Website: takeuforward.org — Graph Series
Tier 4: Domain-Driven Design & Architecture
How to model your ERP domain and structure your aggregates
Derek Comartin — CodeOpinion (entire channel)
The single best ongoing YouTube channel for event sourcing + CQRS. Key videos to watch:
- “CRUD-Sourcing is Why Your Event Streams Are Bloated” — the #1 anti-pattern. If you model events as
NameChangedinstead ofCustomerRelocated, your streams become meaningless noise. - “Event Sourcing Do’s and Don’ts” — practical guardrails
- “Projections in Event Sourcing: Build ANY Model You Want!” — the read-model mechanism that makes ES practical for business systems
- “Event Sourcing vs Event Driven Architecture” — they are NOT the same thing
- “Greg Young Answers Your Event Sourcing Questions” — clears up common confusion
Vaughn Vernon — Reactive DDD: Modeling Uncertainty
Key insight: “Query less; Event more.” Shows how to handle distributed system uncertainty using DDD + reactive patterns. Extends aggregate design into distributed contexts. Also read Vernon’s “Effective Aggregate Design” 3-part PDF series — the definitive guide.
Eric Evans — Language in Context (DDD Europe 2019 Keynote)
The DDD originator explains bounded context types (bubble context, quaint context, patch-on-patch) and refines the vocabulary of DDD itself. Essential for your ERP domain modeling — knowing where to draw the boundaries between your tools.
Martin Fowler — Event Sourcing (YOW! 2016)
Concise presentation from the Chief Scientist at Thoughtworks. Connects event sourcing to broader enterprise patterns from a higher architectural perspective. Good for zooming out after the deep dives.
Tier 5: Advanced — Decider Pattern & Product Modeling
Functional event sourcing and graph-based product configuration
Jeremie Chassaing — Deciders: Composition for Aggregates
Three pure functions: decide(command, state) → events, evolve(state, event) → state, and initialState. This IS your decision_logic.py pattern formalized. Both functions are pure — same inputs always produce same outputs.
Blog: thinkbeforecoding.com — Functional Event Sourcing Decider
Neo4j — Graph Data Modeling & Bill of Materials
How to model products, BOM hierarchies, and shared components as graphs. Nodes = entities (products, parts, customers), edges = relationships (CONTAINS, DEPENDS_ON). The US Army, Caterpillar, and Lockheed Martin use graph databases for BOM management. Your DAG product model is this pattern on Postgres.
Free course: graphacademy.neo4j.com — Modeling Fundamentals
BOM example: neo4j.com — Top 10 BOM Use Cases
Channels to Subscribe To
| Channel | What You Get | Best For |
|---|---|---|
| CodeOpinion (Derek Comartin) | Ongoing event sourcing, CQRS, architecture | Short, practical, real-code videos |
| GOTO Conferences | Classic Greg Young, Martin Fowler talks | Foundational theory |
| NDC Conferences | Oskar Dudycz’s practical talks | Live-coding, anti-patterns |
| William Fiset | Graph algorithms with visual walkthroughs | Algorithm understanding |
| Striver (take U forward) | Comprehensive graph algorithm series | Problem-solving, interview prep |
| Abdul Bari | Clear, hand-drawn CS explanations | Fundamentals, slow-paced depth |
| Kurrent (Event Store) | EventStoreDB training and webinars | Event store internals |
Written Resources Worth Bookmarking
Recommended Watch Order
- Greg Young — CQRS and Event Sourcing (#1) — The foundational “why”
- Martin Fowler — Many Meanings of Event-Driven (#2) — The taxonomy
- Gary Bernhardt — Boundaries (#3) — Your repo’s architecture explained
- William Fiset — Graph Algorithms (#5) — DAG sections only (~2 hrs)
- Greg Young — Event Sourcing (#4) — The deep dive
- CodeOpinion — CRUD-Sourcing (#16) — The #1 anti-pattern to avoid
- Oskar Dudycz — Worst Event Sourcing System (#6) — Learn from mistakes
- Oskar Dudycz — Build Event Store in One Hour (#7) — PostgreSQL internals
- Scott Wlaschin — Domain Modeling Made Functional (#9) — Types as business rules
- Oskar Dudycz — From CRUD to Event Sourcing (#8) — The migration path
- Greg Young — A Decade of DDD, CQRS (#10) — The retrospective
- Chassaing — Deciders (#20) — The pattern behind your decision_logic.py
Videos #1–#5 = ~5 hours. That covers the essential theory. Videos #6–#12 = ~8 more hours for practical depth. Total study time: ~13 hours to go from zero to expert-level understanding of both DAGs and event sourcing as they apply to your ERP/MIS system.
DAGs & Event Sourcing — Video & Resource Study Guide · March 2026
Curated conference talks, algorithm tutorials, channels, and written resources