A Start - the Framework
When I decided to work on my own thing seriously, one of the first decisions I had to confront was “What should I write the darn thing in?” To cut to the chase, I ended up going with Ruby on Rails, and here’s why.
The natural decision was to go with .NET. I’ve been professionally employed writing .NET software for the last 7 years, and I’m pretty good at it. And, I don’t dislike it either; it’s a well documented environment, and has a pretty good ecosystem. I especially like ASP.NET MVC, and heavily considered writing my app in it and storing everything in SQL Server, and using the Entity Framework to easily store and retrieve data. Price wasn’t a factor in my decision either; Microsoft offers a pretty nice deal through the BizSpark program.
There was one thing though. Like I said, I’ve been writing .NET code for a while, and I realized that if I didn’t do something different, I’d just get burned out from programming in the same environment over and over. I’m already advising and contributing to another extra-curricular project that will be using ASP.NET MVC, and yet another .NET project would just be too much.
What else was there then? I wrote my photo blog in a Python framework called Pylons. I thought Pylons was alright, but the documentation left quite a bit to be desired. It was difficult to track down answers to questions, and just took too much time to really be productive.
There’s also Django, another popular Python framework. It has fantastic documentation, and a vibrant community. There’s a lot of stuff to like about it, so why didn’t I go with it? It wasn’t that I found fault with Django itself, just that I liked what I saw with Rails more.
Rails has been around since 2004, making it incredibly mature as far as web frameworks go. The documentation isn’t quite as good as Django’s, but still better than most things. The guides are especially good. But, perhaps the killer feature of Rails is the plugin model and library. If you need some piece of functionality, someone has probably already thought about it and written a gem for it.
From a productivity standpoint, I feel that even though I’ve only been using Rails for about 4 weeks, I’m already more adept at it than I am with Pylons, and I’ve used Pylons [off and on] for two years.
Nothing is perfect, and there are certainly things I don’t like about Rails, but nothing I can’t deal with and work around. Right now my biggest problem is that I just don’t know what I don’t know! Some of the code I’ve written will surely make Ruby aficionados cringe and curse my name, and I have spent way too much time on a small part only to find that it was already built into the language or framework just waiting for me. These are the birthing pains though, eventually, I will be better at it.
So, Rails it is. I’m not using a funky HTML or CSS generator yet (one thing at a time), but I might incorporate them some time down the line. I haven’t settled on a database yet either; one of the the nice things about Rails is that it’s Migration model allows you to change it very easily. I’ll probably go with MySQL, or perhaps Postgres (Oracle being responsible for MySQL fills me with dread, but haven’t used Postgres… ever).