Less than a week of vacation and already my fingers were twitching and wanting to code. I’ve wanted to learn a new language for a while, so I started playing with Ruby.

It’s been a bit of a struggle since many fundamentals work quite differently from what I’m used to in the .NET world. I have to look up just about everything: how to declare a class or a method or an attribute or a variable, how to refer to code in other files, how to call methods, how to raise exceptions… It doesn’t help that most things have at least two syntax options: methods can be called with or without parentheses, blocks defined with do…end or with brackets.

Nevertheless exploring the language is fun. It’s a welcoming language, easy to get started with – you just write code and run it. No messing with classpaths (that’s all done for you) or solutions or projects or compiling (not necessary at all). In fact there’s even a web tutorial named Try Ruby! that includes an online interactive interpreter, just type and see things happen. There are also a lot of tutorials, docs and example code available on the web. (I started with the tutorial at RubyLearning.)

In fact getting started with Ruby was so easy that my biggest hurdle thus far was finding a project to write. All the applications that I really need I have either written or bought already. The few things that I want to build at some point are either too large for these few weeks I have, or too Windows-specific / GUI-heavy, so I would spend more time struggling with the implementation specifics than learning the language. In the end I decided to rewrite a tool I already have, a small backup utility that I wrote in VB.NET almost two years ago.

Different languages encourage different things, from the moment you first meet them. The .NET version of my backup utility has a GUI because Visual Studio makes GUI-building very easy and almost encourages you to start from the GUI and work backwards from there. Ruby doesn’t do that, so this will probably a command line app only. Ruby, on the other hand, encourages unit tests – a unit test framework comes bundled with the standard installation – so this version will probably be much better tested than the .NET one.