New world, new information

Well, after a 20 year separation from teh Cult of Mac, I have finally returned. It is nice to see the tight tight integration of EVERYTHING on the Mac.

While all things round and sweet are looking chipper, my former web hosting is dead and gone. I recovered a few posts, all others are basically lost forever. (Well, at least until I can manually rebuild the posts from MySql backup).

Happy New Year anyway!

Sexy is only Skin Deep in Software

So I just watched the “5 minute video” by Iron Designer for .NET

Very sexy. Very very sexy.

As an MSDN subscriber (thanks to my corporate sponsors employers) and MCP (SQL Designer test or something, I’ve forgotten), this is very enticing…

AND .NET has failed me in several situations where I was trying to do something “outside the box”.

How does Ruby on Rails compare to this ?

Well the 10 minute video is almost a religious experience to many. AND Ruby and Rails DOES NOT fail us in situations where we wish to go “outside the box” in order to accomplish something.

That is all

Totmato Sauce, Software, Human Variability

Malcolm Gladwell at TED 2004 describes the research of Howard Moscowitz for Campbell’s Soup / Prego.

The lessons learned from Howard beautifully correllate with Kathy Sierra’s Quantum Mechanics of Users

The Nutshell

If users are asked for their preference, they will likely tell you something very common and rather vanilla. When given the experience of the choices, say during a taste test, the aggregated results are NOT similar, and in fact group around a handful of common choices.

Design Investigation for Software

My take on this is that during Design Investigation for software – be it website, desktop application, even for print – if at all possible, build the DEMO of the choices involved and get the trial user into the experience and THEN ask the user what is their preference.

This approach in awareness of user preference, user experience, and human variability could take the design into the “I Rock” space of the passionate user.

In Search Of …

Peter John Fitzgibbons (Gillies)

My father is John Cecil Joseph Gillies (John Cecil Gillies)

My grandparents :

Robert Cecil Gillies and Millie(Mildred?) Gillies were separated in 1940s.

Millie and Ted married in 1961. Both deceased in 1979.

My aunts :

Roberta, Virginia and Ivy are all living. Roberta is now in Windsor, NS, CA. Her husband Roger passed away serveral years ago (2000?).

I am looking for anyone who shares this ancestory. I would like to learn who you are.

I want you to know that John Gillies is terminally ill and will pass away sometime in the next 10 days.

You may email me at

Coverage (rcov in Ruby on Rails 1.1.2

rcov code coverage for Ruby released by Mauricio Fernandez contains all that is needed to produce code-coverage reporting in Rails.


Ruby 1.8.4 (especially on Win32 requires updated libraries.)
Rails 1.1.2


There is only one file to add to your current rails app: lib/tasks/coverage.rake

require 'rcov/rcovtask'

namespace :test do do |t|
    t.libs << “test”
    t.test_files = FileList['test/unit/*.rb', 'test/functional/*.rb']
    t.output_dir = 'test/coverage'
    t.verbose = true

Rake -T

Here’s the new tasks with rake -T :

(in C:/radrailsworkspace/pimki/trunk)
[… snip standard tasks …]
rake test:clobber_rcov # Remove rcov products for rcov
rake test:rcov # Analyze code coverage with tests

The default taskname for the RcovTask instance is ‘rcov’. Rcov automatically creates the ‘clobber_’ task that is basically a rm_rf on the RcovTask#output_dir.

Cover it

Run rake test:rcov and see how much of your code is really tested!!

Report Coverage

The end of your rake run will contain a pretty-print text report of the rcov. Also, you can navigate to ./test/coverage/index.html to see the graphic report. See the docs for more info.

Single Fixtures declaration for Selenium on Rails

When testing out a complex website, replicating the |open|/selenium/setup?fixtures=x| line would be painful!

So, Add a const at the beginning of the setup_controller in Selenium Plugin at

MY_FIXTURES = “table_a, table_b, table_c”

Also alter #setup as so :

def setup
    unless params.has_key? :keep_session
      @session_wiped = true
    if params[:fixtures] == “all“
      fixtures = PM_FIXTURES
    fixtures ||= params[:fixtures].to_s
    @loaded_fixtures = load_fixtures fixtures
    render :file => view_path('setup.rhtml'), :layout => layout_path

New lines are 6-9, and the change on 10 from referencing params[] to the local var fixtures.

Then, use this in the selenese script :

Isn’t that beautiful!??

Now I don’t have to endure copy-paste-age-break hell on my fixtures configuration.

Ahhh, Ruby is so nice!