That aside, most of the languages you seem to know are - by and large - imperative. I'd recommend you learn a functional language like Haskell or Lisp because that's a different way of looking at things. It will teach you about functional abstraction which is a really good way to get to the heart of a problem and avoid doing the same pattern over and over again in different bits of code. Some of the things you can do in functional languages are incredibly beautiful.
Ruby ought to make you really familiar with learning how to use other people's code and has an incredibly friendly community, at least as programming goes =p Learning to use other people's code is a big thing in programming - as a general rule, never program your own version of something unless you think you can do it better in some way, their interface is awful, or you want to know how it works.