Writing a tiny interpreter is one of those exercises that teaches you more about programming languages than months of just using them