ย้าย Blog
ย้ายไป post ที่ blog ผมใน Thai Mac Developer (http://www.thaimacdev.com/?q=blog/11) [แล้วก็นี่สำหรับ RSS feed] อย่างถาวร จริงๆ แล้วใน web นั้นยังมี blog คนอื่นอีกนะ (ตอนนี้มี active อยู่ 2 คน หวังว่าจะมีเพิ่มขึ้นเร็วๆ นี้) ก็แค่ดูหน้า main ก็เห็นแล้ว (นี่ RSS feed สำหรับทุก post)

blog ใหม่จะให้ comment ได้ด้วย แล้วก็ manage ผ่านพวก blogging software ที่มัน "เบา" กว่า rapid weaver ได้ง่าย (เพราะว่า rapidweaver มันไม่ใช่โปรแกรมทำ blog โดยเฉพาะ)

งั้น blog นี้ขอปิดตัวอย่างอย่างเป็นทางการนะครับ พบกันที่ thaimacdev
Blog moved
To post at: My blog at Thai Mac Developer (http://www.thaimacdev.com/?q=blog/11) (and here's a link for RSS feed) from now on. Just see the main page for all blogs. There are now 2 active bloggers there, more expected. (Here's a link for RSS feed for all entries)

The new blog allows comment and many other things, including XML-RPC so I can post/sync better and manage it better via most blogging software.

See you there. From this day, this blog is officially closed.
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.
Ruby & Rails
Recently I'm really into this, and while I do not really blog about programming language and framework, both names in the title deserved a place.

I started learning new software development technology again last year after I came back from Japan. The last three times I really learned something and got really excited about were

  • When I read about C++ STL during my undergrad years (if my memory doesn't lie to me, it's during my 2nd year)
  • When I saw Haskell quicksort code and a lot of its recursive beauty which kicked me into the Functional and Declarative programming realm, where I fell in love with their expressionism, dynamism, and metaprogramming.
  • Cocoa framework and Objective-C, right after I switched to the Mac platform during late 2003, where I really came to understand the power of well-designed frameworks and power of Object-Oriented and dynamic typing, and also the ease of application building with Interface Builder and other tools. Objective-C is really what I should have learned as opposed to C++ when I tried Object-Oriented the first time.

Honestly I did not feel the same when I studied Python. I found almost no convincing reason for me to get excited about it and really used it in any real works. While I think it's a pretty good language with good design and performance, and I certainly recommended Python over C/C++/Java for my students and people ... I'd never found the exciting moment with it like I did with Haskell.

Rails changed that. I had long been neglect of the Ruby language during my student days, and never pay enough attention to it to understand all its coolness. I didn't even attend Matz's talk at my university (Matz graduated from University of Tsukuba).

Rails came into my attention during 2005, with a lot of news making Slashdot headlines. I didn't really about Web Development Framework at that time and the only framework I'd really played with was Cocoa (I do not really regard J2SE as a framework). All my web development experiences were done in either JSP or Perl. I looked a bit into PHP but found it to be a new Perl, which could translate directly into Nightmare of maintainability, so I didn't give it a real try.

Ruby on Rails blew me away.

Next semester I will be teaching 2 subjects, namely Object-Oriented Programming and Programming for the World Wide Web. SmallTalk and Ruby will be prime choices for the former (students will have to play a bit with Alice before hand though), but Ruby on Rails might be the only prime choice for the latter. J2EE is not an option I should consider. It's too complex but it should serve well as an example for students. I believe once students understand MVC and Frameworks and structured web development the Rails framework gives, they could take on PHP and a full J2EE stack later, in a more elegant manner.