Archive for April 2008

I’ve been at the Architect Insight Conference yesterday and today. Yesterday, I spoke about Oslo, for which I was joined by Greg Leake who spoke about the Stocktrader application – there’s some fascinating work going on here solving the real problems we have all faced in building out our SOAs.

It’s a break before the final session and then the closing keynote. The conference has been a great opportunity to hear about some of the trends and issues facing us as architects. What I have also found valuable is the conversations that the sessions have sparked. And bumping into a few familiar faces was a pleasant surprise.

There has been a lot of focus on building for internet scale, which presents some interesting challenges and it seems to me that the industry is maturing as we find solutions to these challenges – accepting that your hardware will fail and starting from this point is one of the signs of this maturity. Brewer’s principle (which states that of three properties of shared-data systems; data consistency, system availability and tolerance to network partition one can only achieve two at any given time) and its ramifications for application design is another interesting area to explore. Lots of food for thought. Need some time to digest now…

Last week, I installed Ruby on a PC and on a Mac. I installed what is often called MatzRuby or MRI (Matz’s Ruby Interpreter) – but there are other implementations of Ruby. I was already aware of IronRuby and JRuby. Via this post on RubyInside, I found this post by Charles Nutter that covers the implementations that are available. I’m mostly interested in MatzRuby and IronRuby, but it’s good to know what else is available, what stage they are at and so forth.

Having installed Ruby, the next thing that many of us would look for is an IDE. You don’t need an IDE for Ruby, a text editor (preferably with syntax highlighting) will suffice. Being new to Ruby, I don’t know whether I’ll plump for a Ruby IDE in the longer term. There’s an interesting question here about programming habits – which come from your experience and preference and which come from the language you are trying to learn. There are a number of IDEs for those interested – Sapphire in Steel puts Ruby into Visual Studio, and there’s a ruby specific version of NetBeans. There is, no doubt, some way of editing Ruby in Eclipse, but I haven’t looked yet (I’ve used Eclipse before and it feels a little unwieldy to me, so the idea of Eclipse for Ruby seems somehow wrong to me.) For now, I’m going to be using a combination of text editors and IDEs to see what fits.

The first thing to do is to install Ruby. Along the way, I’m going to use a PC and a Mac. Let’s start with the Mac. Open a terminal and type:

ruby -v

On the Mac I used, which is running Tiger, I got the following response:

ruby 1.8.2 (2004-12-25) [universal-darwin8.0]

OK, so Ruby is already installed on the Mac. But it’s not the latest version, which, at the time of writing, is 1.8.6. Fortunately, there’s a download here on the Apple site that installs 1.8.6 – along with some other bits and bobs including RubyGems. Once installed, open a fresh terminal window and type:

ruby -v

I now see:

ruby 1.8.6 (2007-03-13 patchlevel 0) [universal-darwin8.0]

So, we now have Ruby 1.8.6 installed on the Mac. Clearly, a Hello World is called for. Type:

irb

That launches the interactive ruby shell and type:

puts "Hello World"

which produces:

Hello World=> nil

Great. Let’s move onto the PC. On the machine I used, running Vista, Ruby wasn’t already installed. There’s a one-click installer for Windows – you can find it here. You can pick the version you want to install, I picked “1.8.6-26 Final Release”. It installs:

the Ruby language itself, dozens of popular extensions and packages, a syntax-highlighting editor, an execution environment, and a help file that contains the full text of the book, Programming Ruby: The Pragmatic Programmer’s Guide.

Test the installation with the now familiar:

ruby -v

Here’s the output I got:

ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

Finally, run the same steps for Hello World via the interactive shell. I got the same result as I got on the Mac, which is nice.

Along the way I found a couple of links that might be useful to anyone else starting Ruby:

For a while now, I’ve been interested in dynamic languages – especially the metaprogramming capability. I’ve dabbled a little in Python – largely out of interest in Django – but a lasting relationship hasn’t formed. So, I figure it’s time to try Ruby properly. Here’s the plan:

Read one or two good booksI’ve ordered The Ruby Programming Language, which has already arrived, and The Ruby Way, which hasn’t. So far, I’ve got a fewty pages into the first book, which seems like a good place to start and will I think, become a useful reference.

Subscribe to a few blogsBooks are all well and good, but there’s nothing like a blog for connecting to the latest developments, ruminations and general goings on in the Ruby community. Having done a brief scout about the blogosphere wearing Ruby coloured glasses, I’ve subscribed to the following:

Ruby Inside – so chock-full of Rubyness that if there were a place called Rubyville and it had a daily newspaper then this might be it.Ruby Flow – Ruby Inside’s sister is a community-driven, Ruby focussed link blog.rubydoes.net – all things IronRuby collected into one handy, easy-to-read blog.John Lam on Software – it’s written by John Lam and it’s about software, what more could you want?Jimmy.Thinking – more Silverlit IronRuby information and thoughtfulness.

Try some stuffThere’s not much point in learning Ruby unless you use it to do something. I don’t have some fiendish plan to build anything specific, but I want to include IronRuby in my programmatic doodlings.

Post regularlyTo maintain some momentum, I’m aiming to post about my progress and experience every week – on Tuesdays. Which makes this post the first in the Ruby Tuesday series. Any feedback, help, tips and so forth are, of course, greatly appreciated.