Last year (2006) I had some ideas for a couple of websites I really wanted to make.. I had to get some funding together (to pay for food+rent while I coded) and as such, had to write a plan which I could give to money people, to make money decisions.

Part of that involved looking into the technologies in which I’d make my amazing sites. At the time I was a .net developer and was originally going to go down that route.. I was pricing up servers, work estimates, software (18k for sql server!! WTF?!) and eventually worked out I’d need about 100k to do this..

Frankly, I’ve never been a big fan of .net anyhow, so the spiralling costs of the project, and the pain in designing it lead me to find another framework. I looked around checked out a few .net frameworks, looked at Django, and as such checked out the python language, and eventually found ruby on rails.

Was it the 15 minute blog that wowed me? No.. Was it the full stack framework, or the convention over configuration? No.. How about the orm in activerecord? No..

It was ultimately Ruby. I’d never seen anything like it, having never programmed perl or smalltak, which I’ve sine came to learn it’s heavily based on.

I loved the expressiveness of the language – I loved the way that everything can be treated like an object, even numbers, like 1.to_s.

I loved the use of blocks in the code and the iterators, there is no 2 ways about it, for me

  1. my_array_of_objects.each {|i| i.foo(bar) }

is absolutely awesome!!

These were amongst the first few things I found in the language that liked. Ruby felt new and refreshing, and seemed to answer so many of the frustrations I’d had coding since I started – it just seemed so logical and lovely. You can write such elegant and graceful code in Ruby.

I found myself muttering on irc, more than once how learning Ruby on Rails felt like learning kung-fu from a japanese master, who only spoke Japanese: It was essential to learn his language to get the best I possibly could out of my training..

There are many things I love about the language now, having used it for about 5 months (I’ve been busy doing flashcom/flex and Java too this year), I love the flexibility of mixins, the ease of use of gems, duck-typing, and many pther things which are new to me, having come from .net, java and actionscript.

In particular, I found these recently, which I truly love:

Assignment loveliness:

  1. >> t = [1,2,3,4,5]
  2. => [1, 2, 3, 4, 5]
  3. >> a,b,c,d,e = t
  4. => [1, 2, 3, 4, 5]
  5. >> a
  6. => 1
  7. >> b
  8. => 2
  9. >> c
  10. => 3
  11. >> d
  12. => 4
  13. >> e
  14. => 5

Easy iterations:

  1. @region_cache = regions.map {|item| [item["name"],item["id"]] }