I have some experience with a bit of Pascal, C++ and C# from highschool but not much (I was mainly learning algorithms and concentrating less on actually building software). During uni I did some Java and continued with C# (+XNA). In the meantime I played a bit with PHP. After I graduated I got a job as a PHP developer (PHP, Javascript, CSS, HTML).
Now, after 2 years of work, I realise I need something else. I want to learn a new programming language, or continue learning one I started in school, something that will compensate for the lack of algorithms in my work (building websites with PHP can be tedious sometimes). I want to learn it in my spare time and I want to be able to build something with it, a small application of some sort... not really important what, but I want to use those algorithms I learned several years ago.
This brings me to my question ... what should I learn? What is the best programming language for a hobbyist. The kind of programming you do on weekends just because it's cool, because it keeps your brain moving and because it's fun and rewarding. What's the programming language that puts a smile on your face? :-)