Learning MLIR compiler infrastructure from scratch — dialects, IR structure, and writing optimization passes. Notes + examples from the Toy tutorial.