Books
I'm a bookworm. Everyone who knows me well enough knows this.

Moreover, when I find something of a real interest, I would go on and buy (almost) every book written for the subject. Most of my good friends know this. Janos or Peter once asked me why do I have so many C++ books. Read the earlier post, its STL was one of the thing that blew me away.

The same went for Haskell (even though I couldn't find that many books comparing to C++), Chaos Theory, Fractals, Complex System Theory, Cellular Automata (all of these triggered flood of Physics, Applied Maths, and other science books I bought).

Now the same is going for Ruby (and Rails). Recently I found myself started shopping again, even though my salary as a university professor isn't that high (comparing to when I was a scholarship student; this is the way things are in this country). I will surely review those Ruby & Rails books later.

Among them, I found Best of Ruby Quiz to be practically very good. It's one of the best way ones could learn a new programming language and how to program in that language; by learning to tackle programming problems and learn a full solution from many other people. This way, not only you understand a new language, you also

  • Practically using it to write real programs that actually do something useful. The #1 problem I found with people learning a new language is that, they learn syntax and write toy examples following books. That's it. This cause them to switch back to the old language whenever they have to solve problems. It happens to many of my students trying to learn Python, only to switch to C when solving problems. Only a few actively using Python nowadays because they chose to do one of their assignment in Python.
  • Effective communication using idioms and expressions. Programming a new language is like learning to speak in another language. Not only you have to learn the syntax, the grammar. You will also need to know a lot of idioms and more importantly, expressions. Some languages are obviously expressionistic than another. I lived in Japan for 7 years and find the Japanese language more expressionistic than the language of my mother tongue and English. So, it's important to learn how to use those expressions and idioms well, rather than just understand its grammar structures and how a sentence is composed. Otherwise an effective communication won't be achieved.
  • Change the way of thinking. This is, also, like the learning a new natural language. It reflects the way you think about communication and solving problems. Thinking in metaprogramming, functional, terms is really different from thinking imperative. It's really Fortran vs. Lisp. It's really Java vs. Haskell. It's really English vs. Japanese. It's really about how you're thinking now vs. how you have to think if you're to use a new language efficiently effective.

I'm still looking for a hardcopy of Programming Ruby, Agile Web Development with Rails, Rails Recipes, and Ruby Cookbook. If anyone kind enough to see them somewhere in Bangkok, please kindly let me know. And, no, buying online from any source isn't an option for me currently.