== My problem with learning new programming languages There's any number of programming languages I'd like to learn, ranging from the prosaic like C++, Java, and JavaScript (mostly because it would make it easier to work with various interesting things written in them, like Firefox) to the esoteric favorites like Haskell and Erlang. Unfortunately, I have a problem. My problem is that I can't learning languages by themselves in the abstract; I can't just sit down and learn one just to know it. I need to be learning them to use them on something, and the something has to feel real and motivating to me. Without a real project to use the language on, my motivation collapses; the whole exercise becomes a purely intellectual pursuit and I turn away to more interesting things. (It doesn't have to be a project that really cries out for the language, and it doesn't have to be a big project, although it does have to be something that I actually want; for example, my first Python code was a little thing to spit out _/etc/lilo.conf_ stanzas for the kernels it found in _/boot_. However, this is more difficult in languages that aren't really suitable for little command line utilities or that really want to be used in big projects, from which I conclude that I will not be learning Java any time soon.) I find this a bit irritating, because I would like to know things like Haskell; they certainly seem interesting, and I keep reading snippets of tutorials (and explanations of monads). But I can only read so much without writing a program, partly to test my understanding, and my motivation for writing programs that won't do anything useful is lacking. (Haskell is probably going to be a real challenge; most of the stuff I want to do involves file IO, which seems to imply a fairly immediate dive down into the depths of IO monads and so on. Maybe I'll find a relatively pure logic problem to tackle.)