I love seeing complex compiler concepts made approachable. GCC's libgccjit tutorial walks through adding JIT-compilation to a toy interpreter, showing how easily you can introduce dynamic compilation. It makes me want to dust off my own side projects and experiment with it.