I'm finding that writing a interpreter (I chose Scheme) is deeply satisfying, and a great way to learn a language. http://bit.ly/mAtNae