New project - framework selection

I’m taking a few months off from a regular 9-to-5 job to chill out a little. At the same time I want to work on a side project of mine. I’m not sure it will turn out to be useful or will ever reach a shippable status, but I’m doing it for fun and it’s ok spending a couple hours a day on it. Since I’m starting from scratch I’m free to choose any tool I fancy. It’s going to be a web application (for a change! haha), so the first thing to figure out is how to build it. In the last five years I’ve been mostly programming in Ruby and usually Rails. I’d like to try something new, so the first options that came to my mind are:

Sinatra

It’s the first one I’ve ruled out. I like it, but for this project Sinatra is too small. I’d gladly use it on different scenarios though.

Node

Node is the new hotness and sooner or later I’ll have to deal with it. Unfortunately I’m not fond of using Javascript only on any non-trivial application and the JS server side application development doesn’t seem to me mature enough. I hope I’ll soon change my mind about this.

Django

So far I’ve only been making very simple experiments with Django. I like it, it feels tidy and Python is a great language. Its libraries are excellent, too. I wish the Ruby community took some hints from the Python world. I’ve realised it would take me a few months to become decently productive with Python and Django; my Python skills are still very, very basic. I wish I knew better the Python ecosystem and could code like Peter Norvig.

PHP

Never really been an option… the only thing I like in PHP is the ease of deployment. Last PHP project I’ve been working on was 4 years ago with the Zend Framework. These days when I look at PHP code I feel sick.

And… Rails again

I’ve ended up deciding to use Rails again. Rails 4 is almost out, Ruby 2.0 is being used more and more… There’s enough news to keep me busy for a while and learn new stuff. I’ve realised I’m willing to try new tools on smaller projects. This idea of mine consists in a medium-sized back-end that provides an API. On top of it there should be a semi-rich client application. It should be easy, one day, to switch components. In addition to this I want to consolidate my testing approach, which is slightly different from the mainstream, and this would be a good chance to try it out. In London, where I used to live until a few days ago, the Ruby job opportunities are excellent, so I should keep my skills up to date. Hence the decision was taken.