Notes.
Practical notes-to-self, one topic each. Open any note and it carries its own section index on the left so you can jump straight to the part you need.
Spark performance: a field guide
Why most OOMs are skew, not memory — partitions, salting, overhead vs. heap, and the order to fix them in.
Idempotent upserts into Iceberg
Making lakehouse merges safe to replay — keyed MERGE, dedup discipline, lineage columns and snapshot expiry.
Evaluating RAG: metrics that matter
Measure retrieval and generation separately. Recall@k, faithfulness, and a hand-built golden set that keeps the judge honest.
Debezium gotchas I keep forgetting
Schema history, tombstone policy, snapshot modes, and watching replication-slot lag before it eats the disk.
My terminal & dotfiles setup
Ghostty + tmux + Neovim, version-controlled. A fresh machine is one clone and one bootstrap script from home.
SQL patterns I reach for weekly
Window functions over self-joins, QUALIFY for dedup, and named CTE chains that survive code review.