That said, implementing an interpreter good enough for real usage is by far the most thought provoking program I've ever written.