JSSh (Firefox 3.0) with Optional Port Number

One of the ways how to remotely control Firefox is to use the JSSh (JavaScript Shell) plug-in. To successfully install the plug-in, it is necessary to find a suitable version for your Firefox version (1.x, 2.x, 3.x) and platform (Linux, Mac, Win). That is sometimes not so trivial… Additionally there is a limitation in the plug-in: [...]

Rhotoalbum 0.6

A new version of Rhotoalbum, a simple but powerful photo album generator written in Ruby, has been released. The version 0.6 contains a lot of new features such as album statistics (number of photos, number of albums), EXIF support (exposure time, focal length, f-number and camera model), automatic album thumbnail creation from the first album photo, [...]

require_gem ‘activerecord’

A Ruby application that uses the ActiveRecord library (not a Ruby on Rails application) stopped working for me after an update of Ruby. The error message was: TEXT [Show Styled Code]: undefined method `require_gem' for main:Object (NoMethodError) TEXT [Show Plain Code]: undefined method `require_gem’ for main:Object (NoMethodError) The corresponding source code was: Ruby [Show Styled Code]: require 'rubygems' require_gem [...]

Rhotoalbum 0.3 Released

A new version of Rhotoalbum, a simple but powerful photo album generator written in Ruby, has been released. It is already its third release (0.3) and there are now really nice features as photo descriptions, more styles support with a style switcher or album options. Thanks to Viktor Zigo (maybe you know his plug-in to Firefox [...]

The First and Second Ruby on Rails Training in Singapore

It may seem like I have nothing much to do, but I volunteered for yet another cool initiative called code::XtremeApps:: competition. It's hard to say what was the main motivation – if the chance to promote Ruby on Rails or to promote software development as such. Either way – a nice challenge around here. Programmers in Singapore are generally in a very very low standing – possibly somewhere around a construction worker :-). The general position(ing) is that programming is a low level blue collar activity facing the same fate as manufacturing and should be outsourced to India, China and only “high level” jobs like sales and project management should be done here. While there's something to it, it's a little strange when most of the people I interviewed said they didn't really like IT and they'd studied computer science to become managers.

Considering this situation I couldn't believe the tremendous response this programming competition received. All our initial estimates were left far far behind – the number of participants for the competition itself, but even more for the accompanying trainings (both Ruby on Rails and Google Gadgets). The training capacity of 120 people was surpassed in less than 48 hours. As for the competition we had to almost double the capacity and as of today there's only a few places left. The training will be this Saturday 01/09/2007 – you can have a look at the agenda here. The training is specifically targeted at the competition participants. Unfortunately, we will have only 1 day and as the competition focus is on innovation and integration we will be mostly covering mostly more advanced topics like AJAX, mash ups and media integration. As such there will be only 3 hours to cover (or discover?) actual RoR framework. I will be doing this training with Choon Keat. It's been a great pleasure working with him as he's not only a great (RoR) programmer but turned out to be very helpful, resourceful and reliable in everything that needed to be done.

The second training is of a very different nature. It's much more in-depth – and much more pragmatic, focused on development of actual business applications rather then competition prototypes. It will be a 2 days training on 15-16/09/2007 and it will provide a much more intimate hands on experience. There's more information here.

The second training has been in the making for around a year now. I started working on it around the time I hit first difficulties when working with Changi Prison and I've been using and improving parts of it on pretty much all my one – to – one trainings. After writing the article about Changi Prison I received a lot of emails asking more about the experience, how it was different from my outside trainings and mostly about my motivation for doing something like that. Strangely enough, I had a strong dejavu experience 2 weeks ago – during the competition launch at SMU. The setting couldn't have been more different – yet somehow it brought back all my memories from my first trainings in prison. When I started my presentation more than 75% of the room (including me :-) was asleep. By the time I finished I don't think there was anybody there that wouldn't want to learn more about RoR or at least try it out. And I guess that is the answer. It's the energy of the people in front of you, their questions and their thirst for more. It's the transformation they go through learning from you and it's the transformation you go through learning from them.

And as much as it is a motivation – it's a responsibility.

Visual Studio 2008 IronRuby


Nie je to tak dávno čo bol jazyk Ruby považovaný len za hračku pre hardcore programátorov. Postupom času však oň začalo prejavovať záujem čoraz viac IT autorít.

To, že jazyk Ruby má svoje kvality a je to plnohodnotný jazyk nedávno potvrdil aj Microsoft ohlásením, že svoju verziu jazyka Ruby - IronRuby implementuje v novom Visual Studio 2008.

Visual Studio je zrejme najpoužívanejší a veľmi prepracovaný vývojársky nástroj. Microsoft dal týmto samovoľne odpoveď na mimoriadne frekventovanú otázku ohľadom jazyka Ruby - Je Ruby enterprise ready? Bill Gates a jeho kamaráti si zjavne myslia že áno.

Rhotoalbum

A web photo album is already a common thing. The majority uses online web albums, where you can upload your photos, e.g. Flickr and Google’s Picasa. Also some social network portals are adding features to share photos between their users. A much smaller group downloaded and installed a photo album application to their accounts on servers, [...]

Corporate Trainings

I finished my first commercial Ruby on Rails application in October 2005 and I've been using it ever since. For most of this time, we've been one of the very very few offering Ruby on Rails in Singapore. Most of our customers are not exactly technical so they wouldn't really care even if we used Cobol :-). What they did care about was the price and delivery time. I don't know why, but writing about advantages of Ruby (and Ruby on Rails) comes very unnatural to me. It feels like saying what everybody knows. At the very minimum, most of the technical people have heard about it – whether they like it or hate it at least the don't go like “You're programming in WHAT???”

The situation seems to be turning even in this part of the world. Thanks to Ruby brigade I met a handful of Ruby on Rails programmers and a few handfuls of wannabes. After almost 2 years in isolation it was really great to see and meet Ruby programmers (other then my own trainees and employees :-). While all this was nice, what really made an impact was ever increasing demand for corporate training. More and more big companies approach me with corporate trainings. The reason is simple...as many are parts of global corporations, many of their internal systems were created elsewhere and now they need a local support. It may come as a shock that MNCs use other systems than just SAP, but it seems to be easier and way cheaper to use a few smaller, independent systems for handling a portion of daily operation.

I started my first Ruby course in April 2005 and for the past 6 months I spent roughly 40% of my time doing training. This has been a major shift for me as only as recently as 1 year back I spent around 90% programming and only 10% on other stuff. I started training in Changi prison and it's almost unbelievable how rewarding this experience has been. I cannot even describe how much the guys have changed. When I walked there the first time I sure saw the potential – around 30 guys doing (or more fighting) with every possible limitation you can think of but still determined to succeed. It may be an old truth that you will appreciate the value of something only after you've lost it but it's really valid. All of the ubiquitous things like Internet connection, access to new books, access to community support (reading the posts or posting questions) – all this is off limits in prison. And yet I didn't find any surviving broken existence in there. So many times I have wished my own employees showed half of the determination, zeal and persistence I could see in there. The more you have, the more you start taking things for granted and the more comfortable you become.

What I felt the guys needed was just better resources and some direction (IT wise). We went through some really tough time – I still remember explaining recursion for the whole Sunday, OOP, TDD and many other things. Well, none of them had any prior formal IT education. But then, maybe it was more to their advantage. Most of the time I find it much harder to work with computer science graduates than with people who never studied IT but have some logical and mathematical thinking. It's surprising how difficult it is to unlearn all the coding cowboy habits as opposed to just starting afresh. This is not to say that OOP or Ruby or design patterns or TDD or agile methodologies or anything else I do is the only way (or that it's correct at all). It's just one of the ways and the one I happened (in reality it took much more then just happen :-) to believe in – but more about that in my other blog posts. Anyway, it's really great to walk in there now. It's completely a different crowd – you see people being able to think, to analyze and to even transform all that into a working product. Sure it's not all wine and roses...but I would really like to see this kind of commitment in many other organizations I worked with.

I realized much of this when talking to people at one of the Ruby Brigade meetings. That's when I realized that I may be running quite a tight ship in regards to development principles – but so far I've really appreciated that nobody on my staff would say things like: “I do tests only when I feel like”, “I've never been into testing much”, “We do bug driven development”, “What's that 'assert' thing mean?” and many others.

To conclude with, I must say that I have always been an extremely fast learner – I've never had problem to learn anything but it's a completely different ball game to teach what you know. One thing is to look at something and understand it and a completely different one is to explain it to somebody else. And I really love it :-). And it finally gives me a reason to start working on my e-learning platform I've been planning since high school.

Ruby, DRb and Gentoo

There can be a problem with the DRb system in Ruby on Gentoo and the IPv6 support. If an application with DRb does not work and its error message is: TEXT [Show Styled Code]: Exception `SocketError' at /usr/lib/ruby/1.8/drb/drb.rb:840 - getnameinfo: ai_family not supported /usr/lib/ruby/1.8/drb/drb.rb:840:in `getaddrinfo': getnameinfo: ai_family not supported (SocketError) TEXT [Show Plain Code]: Exception `SocketError’ at /usr/lib/ruby/1.8/drb/drb.rb:840 - [...]

Distributed Ruby

I am creating a prototype of a distributed application written in Ruby. Ruby 1.8 already contains the DRb framework, as a system for a communication of different Ruby processes, and the Rinda system too, as a naming service. Here are some useful links: Distributed Ruby Hugh Sasse’s dRuby page DRb and Rinda for Distributed Computation Prototyping Lucas Carlson’s blog and [...]