
A typical library trip.
Every developer has a different method for learning a new language. Some learn by reading tutorials, others by reading code, others by writing it; most learn by some unique combination of these things. I tend to gravitate towards the "writing it" angle. I can read a book or a blog post, but unless I actually create something, I do not retain the knowledge for very long. When I first learned CakePHP, I did it by writing an application called "Spitgamer."
For my first full-scale Rails app, I decided to create an application that is a minimalistic reading diary. I read a lot of library books and I often find myself checking out the same book again, attempting to remember if I read it, and if so, what I thought about it. I've checked out some of the other online reader communities, but they seemed to suffer from feature-bloat. I like minimal interfaces (ala delicious).
Readit.me still lacks some of the ideas that I'd like to see deployed, but it's basic premise is all there. (I am an adherent of the school of release early, release often.) I used the Amazon e-commerce API to pull in book data. It's currently tied into Facebook Connect, and I hope to integrate it with other social services as I have time.
It's been a good experience working with Rails, too. I prefer it's reliance on the command-line, as that's where I'm most comfortable.
It's difficult to make the jump from a "PHP" guy to a "Rails/Python" guy. My work comes from referrals - so that tends to mean that all my past PHP clients forward me new PHP work. Picking up work in a new language can be difficult as a consultant. However, I'm certainly headed in that direction and I hope to eventually phase out the PHP work into "occasional" projects and maintaining legacy applications (much as I work with Java now).