A thorough walk through Chapter 7 of Designing Data-Intensive Applications: what a transaction really is, ACID demystified, every weak isolation level (read committed, snapshot isolation) and the race conditions they do and don't prevent (dirty reads/writes, read skew, lost updates, write skew, phantoms), and the three ways to achieve full serializability — serial execution, two-phase locking, and serializable snapshot isolation.
Working through Chapter 5 of Designing Data-Intensive Applications: why we replicate data, the three replication architectures (single-leader, multi-leader, leaderless), synchronous vs asynchronous tradeoffs, what goes wrong with replication lag, and how systems detect and resolve write conflicts.
Working through Chapter 4 of Designing Data-Intensive Applications: why we need encoding formats at all, how JSON/Protobuf/Avro/Thrift differ, what backward and forward compatibility actually mean, and how data flows between processes via databases, RPC, and message queues.
Working through Chapter 3 of Designing Data-Intensive Applications: how indexes actually work, from a dumb append-only log to hash indexes, SSTables, LSM-trees, B-trees, and the secondary indexes built on top of them.
Notes on the advanced Postgres jargon that keeps showing up in production discussions — MVCC, WAL, locks, vacuum, RLS, replication, and the connection pooling gotchas that flow from them.
A deep dive into how S3 actually stores 100 trillion objects — the metadata/data split, flat namespace, placement service, durability through erasure coding, versioning, multipart uploads, garbage collection, and consistency.
How I built a ticket booking system that handles concurrent seat reservations using Redis distributed locks, PostgreSQL pessimistic locking, idempotency keys, and compensating transactions.
How I implemented the A2UI (Agent-to-UI) protocol to let an AI agent dynamically generate interactive UIs using streaming messages, data binding, and declarative components.