About
Senior infrastructure engineer with a decade in database internals and distributed systems. Previously on the storage team at a large search company; now building consensus primitives at a small collaborative-editing startup.
Selected projects
raft-mini
3,100A teaching-grade Raft implementation with a step-by-step simulator you can pause and inspect. Used in two university courses.
yjs-storage
1,200A Postgres-backed storage adapter for Yjs CRDT documents with append-only ops log and periodic snapshots.
Writing
Interview prep
System designDesign a rate limiter for an API gateway.
Two-tier: a fast token bucket in local memory for the common case, and a shared sliding-window counter in Redis for the correctness case. Reconcile every N milliseconds. Prefer sliding window over fixed window to avoid the boundary burst.
RustExplain the difference between `Arc<Mutex<T>>` and `RwLock<T>`.
`Mutex` is exclusive: one holder at a time, read or write. `RwLock` lets many readers OR one writer. Use `RwLock` only when reads dominate — a read-heavy `Mutex` starves nothing, but a write-heavy `RwLock` will thrash on writer starvation.
Resume tips
For infra roles, quote the SLO you moved. `Raised storage availability from 99.9% to 99.99% by eliminating…` — the numbers are the resume.