Building Pi, and what makes self-modifying software so fascinating