A Canvas for Thought

July 13, 2007

Setting a custom Ruby GEM_HOME on Ubuntu Feisty

Filed under: Uncategorized — vednis @ 1:23 pm

Here is a quick and painless solution for setting your own Ruby GEM_HOME in Ubuntu Feisty.

First, I’ll assume that you have installed the ruby and rubygems packages, and set your new GEM_HOME:

$ sudo apt-get install ruby rubygems
$ mkdir -p /home/mars/lib/ruby/gems
$ export GEM_HOME=/home/mars/lib/ruby/gems

All looks well, until we try to install something with the ‘gem’ command:

mars@sol:~/tmp$ gem install rake
/usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- sources (LoadError)
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `require'
    from /usr/lib/ruby/1.8/rubygems/remote_installer.rb:462:in `sources'
    from /usr/lib/ruby/1.8/rubygems/remote_installer.rb:472:in `source_index_hash'
    from /usr/lib/ruby/1.8/rubygems/remote_installer.rb:436:in `install'
    from /usr/lib/ruby/1.8/rubygems/gem_commands.rb:263:in `execute'
    from /usr/lib/ruby/1.8/rubygems/gem_commands.rb:225:in `each'
    from /usr/lib/ruby/1.8/rubygems/gem_commands.rb:225:in `execute'
    from /usr/lib/ruby/1.8/rubygems/command.rb:69:in `invoke'
    from /usr/lib/ruby/1.8/rubygems/cmd_manager.rb:117:in `process_args'
    from /usr/lib/ruby/1.8/rubygems/cmd_manager.rb:88:in `run'
    from /usr/lib/ruby/1.8/rubygems/gem_runner.rb:28:in `run'
    from /usr/bin/gem:23

Oops.  We are missing a file called ‘sources.rb’.  That file, curiously enough, is contained in the ‘sources’ gem.

So, we try this:

mars@sol:~/tmp$ gem install sources
/usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- sources (LoadError)

Same error. Drat!

Thankfully, there is a simple solution.  The sources gem was installed in feisty’s default gem cache:

mars@sol:~/tmp$ locate sources.rb

mars@sol:~/tmp$ ls /var/lib/gems/1.8/cache/

We can install the original gem into our new GEM_HOME.  Just make sure that you pass the ‘–local’ switch to the gem command, so that it doesn’t check for remote sources!

mars@sol:~/tmp$ gem install --local /var/lib/gems/1.8/gems/cache/sources-0.0.1.gem
Successfully installed sources, version 0.0.1

Now everything works as expected; we can install gems without using sudo:

mars@sol:~/tmp$ gem install rake
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rake-0.7.3

P.S. Don’t forget to set your PATH!

$ export PATH=$GEM_HOME/bin:$PATH


June 13, 2007

hresume – Microformat for publishing resumes

Filed under: Uncategorized — vednis @ 11:43 am

I looked at the idea of a Resume Markup Language in my previous post. That post stated my belief that a community-driven standard would quickly gain traction, and it turns out that one already has. I discovered the hresume microformat, a means for tagging web page HTML elements with resume-specific qualifiers.

Well, that saves a lot of work. :)

March 27, 2007

The Agile Alliance takes a stand on certification

Filed under: Uncategorized — vednis @ 9:15 am

Jon Kern, one of the Agile Alliance founders, tells us that the Agile Alliance has come out against certification.

More specifically, the Alliance prefer skills-based certification over knowledge-based certification, but they do not believe either should be a requirement or restriction of one’s job. And I agree.

March 21, 2007

Hilarious on so many levels…

Filed under: Uncategorized — vednis @ 9:05 pm

Some questions have a perfect answer:


March 16, 2007

The Real Value of Twitter

Filed under: Uncategorized — vednis @ 1:54 pm

So I came acrosspeople’s comments on Twitter, a communication hub service. Interesting stuff.

Some have commented on the banality and uselessness of the content, which is probably what the vast majority of people will create. But surely there are some real uses for this service?

Twitter serves an important role as a media-hub, a place where communication comes together. It could serve a very important place in the mobile world, namely, allowing people who are not plugged in to participate.

Imagine watching a twitter feed for a group of protestors. Or a group of friends doing the flash-mob thing. Twitter actually lets you watch the action on a number of different channels. SMS locks it away (and taxes it, to). This mixing gets really powerful when you combine it with other apps to do real things. (The current content’s banality is because most people aren’t doing interesting/relevant things all the time. So why are you telling everone about it?)

Just wait until some interesting event takes place that you can’t participate in, but you can watch on Twitter. Then you will see the value.

Some ideas for an evolved form:

  • fluid group creation and dissolution
  • more actionable system tie-ins (maps!, photo/video blogs)

Kind of reminds me of a popular IRC channel – lots of banality, the occasionsal useful tidbit. The real value on IRC is generated in a channel of 30-60 people dicussing a relevant subject area, so maybe there is some middle-ground for Twitter networks. You just need to find the right topic.

March 15, 2007

The Lore Masters

Filed under: Uncategorized — vednis @ 2:23 am

I came across Pragmatic Programmer Dave Thomas’ presentation “Herding Racehorses, Racing Sheep” while surfing the conference list for QCon.

The entire slide show is fascinating, but the slide about the fourth stage of skill development caught my eye. Dave mentions maxims as a teaching tool used by those who have attained fourth stage skills. This struck a chord with me and fits well within my experience. For example, career consultant Markus Buckingham uses maxims to great effect.

My wife and I are fond of a particular maxim:

Trust Children.

There are a number of maxims in the software world as well. They guide the design of any and every routine within a particular system. Some examples:


Explicit is better than implicit.

From the Art of Unix Programming:

  • Fail as early as possible.
  • Always do the least surprising thing.
  • K.I.S.S.

Don’t repeat yourself.


Release early, release often.

One point to note: practioners at the lower levels in the Dreyfus Model don’t necessarily understand or apply the maxims created by those at a higher levels.

I wonder what implications that has for the Ruby and Rails communities, give their surge in popularity? Or the fact that a lot of developers will be coming to the language with pre-existing maxims to guide them? The Python community may offer some insight here, as the effects of pre-existing maxims is well-known to them. (You can tell when a Java programmer has written Python code. It looks… different.)

But hey, we all had to start somewhere.

March 13, 2007

Watch This!

Filed under: Uncategorized — vednis @ 5:08 pm

From David Henderson’s Blog. As it says, Watch This!



There is a final version of the video, but I prefer the original. The style is more spontaneous.

Blog at WordPress.com.