HomeRumblingsSoftwareTravelingArchivesAbout
October 2009 Archives

Scramble, scramble, scramble. Rubyforge is being taken down!

The good folks over at Gemcutter had made their goals clear: replace Rubyforge as the central gem repository for the ruby community.

When you have such an offer and such commitment to the community, you have to really appreciate it. And that’s exactly what Ruby Central did.
So it’s been decided that Gemcutter will become rubygems.org and replace rubyforge as the central gem repository: Goal reached!

Rubyforge has been an excellent tool for managing projects over the years, but it has been showing it’s age a bit lately (especially after the advent of GitHub). The big news is, that the plan involves phasing Rubyforge completely out, as it is felt that most of it’s functionality is covered by other sites (GitHub, GoogleCode and Sourceforge are mentioned – check the discussion).

Unfortunately this means a bit of work for us old rubyforge project maintainers. What does that mean for rutema? Well, bug tracking, documentation and repository will move to GitHub. I’ll probably have to create a google group for discussions as well.

The matter of patir.rubyforge.org is still open – I might move the site to an own domain, I might adapt to what GitHub offers. We will have to see. Luckily my own rutema repository has been a git repository for a while now, so there is not much hassle involved.

For more news on the Rubyforge retirement and a timeline check the wiki

Posted by Vassilis Rizopoulos on Oct 27, 2009

Gems and gem packers

While at GTAC I started participating in the discussion about the new webdriver/selenium merger, specifically on the Ruby side of it.
Not to be left out, I offered to contribute the code for the gem so I dived in and started looking at the code that goes in the gem.

Webdriver (and selenium) are not pure Ruby projects, so their structure deviates from the convenient convention of the bin/ lib/ test/ directories. Code is organized by component (common, chrome, ie, firefox etc.) so the Ruby code lives in different directories.
Now the two tools for gem generation that I know and have used (hoe and jeweler) live in a world of pure Ruby projects. Not only that, they live in a world where there is only one gem per project.

Time to specify a couple of requirements. Projects like webdriver need a way to create multiple gems (in this case one gem per OS platform – windows, macosx, linux) from a directory structure that does not conform to the conventions used in Ruby projects.
Additionally, whichever tool is used to create the gems needs to keep it’s Rake tasks nicely namespaced (jeweler adds a rake task named ‘build’. In a project that has C or java code build has a well established and completely different meaning).

So I guess I have opened Aeolus’ sack and the winds are going to take me into code unknown. I am reluctant to start another tool (why rewrite code that interfaces with Gemcutter and Rubyforge when all I need is an extension) so I have contacted Josh Nichols (the creator of jeweler) to see if we can extend jeweler and cover these cases.

Posted by Vassilis Rizopoulos on Oct 26, 2009

GTAC 2009

I was given the opportunity to attend this year’s GTAC luckily located in the Google offices in Zürich.
The Google office is amazing, the conference was one of the most enjoyable events I have attended ever.
It was kept small (only 100 invited attendees, of which only 60 were non-Googlers) and the single track was very nicely balanced between technical and academical talks.
It was an honor to meet and listen to “Dr. Niklaus Wirth”: . Coming from the embedded corner I had to nod smiling (when I wanted to jump up and shout " YES! Tell them! The fools know not how lucky they are!!!") when he said “if you think software testing is in a shambles I invite you to do hardware for a couple of weeks.”
Keeping the event single-track made for very interesting hallway discussions, but the highlight of the conference was the use of Google Wave (and yes, we got invites for the public beta especially for this conference! Yupi!!!).
There was one wave setup for each of the talks, and during the talks two brave souls (Robert Nillson and Dave) worked callouses into their fingers by essentially typing a complete transcript of the talks and the questions. Replaying the wave together with the video of the talk will give you 100% of the information with 80% of the feel (for the nice 20% you had to be there – sorry).
There is just no way to adequately describe the usefulness of Waves for collaborative purposes. You can weave all kinds of information into the live discussion, embedding videos, links, documents, restructuring the content and keeping the complete history.
If somebody new comes along, he just uses the playback functionality to catch up. One of the best things about this feature is that it not only documents the decisions made, it also documents the decision process and the reasons why a decision was made. Which for me makes it all the more easier to reverse a decision once the reasoning no longer stands!
I came away from GTAC with several fresh new ideas, a couple more arrows for my testing bow, lots of new contacts and one more open source commitment as I promised I’ll get the new webdriver/selenium stuff packed into a gem before long.

Posted by Vassilis Rizopoulos on Oct 26, 2009

It's not all programming languages you know

I stumbled upon the Programmers at Work postings (they have been there over a year – shame, shame).
These are interviews with people who were successful programmers at about the time I first laid hands on a keyboard (on a Spectrum ZX+).
It was a time when computers where very few and very far apart in Greece (at the time only one other friend of mine was in possession of a zx81 and it was years before I had access to an IBM PC – nowadays it’s hard to find anyone between 15 and 40 who does not own a computer).
Thinking about it, this means that my generation is the last one with knowledge of what it means to live without a computer.

Maybe that is why John Warnock’s (of Adobe fame) words from his 1986 interview resonate so much with me:

I went through the university, all the way to the master’s level, so I got a good, solid liberal education. I believe it’s really important to have a very solid foundation in mathematics, English, and the basic sciences. Then, when you become a graduate student, it’s okay to learn as much as you can about computers.

If you really want to be successful, being acculturated to the rest of the society and then going into computers is a much more reasonable way to approach the problem.

Substitute English for you own language there and you pretty much hit the nail on the head.

I have always believed that a good broad theoretical education is essential, more so for a software engineer. It is one of the reasons why I did not lament the sorry state of the labs and the lack of equipment in my university. Our profs could not let us loose in the labs to play so they crammed us with theory and to hell with knowing how to use a soldiering iron.

Learn to solve problems with pen and paper and learn as much theory as you can. Learn the way problems are solved, how to think in search of a solution. Computer science moves so fast, that by the time you have your degree the libraries you know, the programming language you learned and your tools will be if not obsolete, then going out of fashion very fast.

I will go as far to say that for engineers (software, civil, electrical etc.) and scientists (maths, physics, chemistry) go out and read some history, anthropology and political science. Learn a second language. Get as broad a theoretical basis as possible before you specialize in anything.

In the same batch of 1986 interviews Butler Lampson says much the same thing (I find it funny as he more or less says that undergraduate CS is not “respectable”):

LAMPSON: I used to think that undergraduate computer-science education was bad, and that it should be outlawed. Recently I realized that position isn’t reasonable. An undergraduate degree in computer science is a perfectly respectable professional degree, just like electrical engineering or business administration. But I do think it’s a serious mistake to take an undergraduate degree in computer science if you intend to study it in graduate school.

INTERVIEWER: Why?

LAMPSON: Because most of what you learn won’t have any long-term significance. You won’t learn new ways of using your mind, which does you more good than learning the details of how to write a compiler, which is what you’re likely to get from undergraduate computer science. I think the world would be much better off if all the graduate computer-science departments would get together and agree not to accept anybody with a bachelor’s degree in computer science. Those people should be required to take a remedial year to learn something respectable like mathematics or history, before going on to graduate-level computer science. However, I don’t see that happening.

A broad theoretical education gives you adaptability, multiple viewpoints on a problem and when (not if) your specialization field disappears from the work radar, the ability to pick a new field. Simply put, don’t put all your eggs in one basket.

It may be that this viewpoint is becoming fast utopic. Computer science has exploded and the amount of knowledge accumulated (and accumulating) requires more time than a post-graduate degree. On the other hand, optics help understand image editing algorithms, statistics are used heavily in natural language processing, group psychology and dynamics are key to applying development processes and building the next social web wonder, maths is in everything from compressing audio and video to encrypting communications.
Not knowing the science amounts to being a user and users do not solve problems(1).

Looks to me like a good computer science undergraduate degree should have less programming and more science in the curriculum.

But as university degrees become aligned with the current industry needs, cranking out work ready programmers versed in the current hot technology becomes more important than educating scientists with a solid knowledge of the hows and whys, which to me seems shortsighted and plain stupid.
Butler Lampson had a few choice words about this in 1986:

INTERVIEWER: So how should we prepare ourselves for the future?

LAMPSON: To hell with computer literacy. It’s absolutely ridiculous. Study mathematics. Learn to think. Read. Write. These things are of more enduring value. Learn how to prove theorems: A lot of evidence has accumulated over the centuries that suggests this skill is transferable to many other things. To study only BASIC programming is absurd.

So yeah, leave the keyboard be. Pick up a book, a pencil and a few sheets of paper. See if you can figure out how much money your bank account will have in 6 years without a calculator.



(1) They create them :).

Posted by Vassilis Rizopoulos on Oct 20, 2009

Putting it back together

Finally got some time and finished setting up the new Radiant based site.

Ampelofilosofies now has it’s very own home and I will slowly migrate most of the content from the old site.

It might take a while to configure and link RSS back into the site, but for the moment I am very satisfied with the result. It actually took a lot less time than I thought to migrate the templates and css from the old site into radiant.

The ease of use of radiant is amazing. Not only where it concerns the actual managing of the content and how easy it was to replicate the functionality of my own statically generated site, but also in how easy it was to deploy the whole thing.

Since radiant is a Rails app I turned to capistrano. I’ve been using capistrano for a while now, but for a completely different scenario. Up until now I had to write quite a few tasks but I never deployed a Rails application (it doesn’t help that sinatra fits my requirements better).

To top that up, ampelofilosofies is hosted on textdrive. Kudos to Textdrive/Joyent for their excellent documentation on how do get things properly wired.

Configuring capistrano while sticking to the conventions was (what a surprise!) child’s play although it did require a bit of googling since as usual my case deviates from the scenario used in the tutorials.

ampelofilosofies is developed in my local git repository, that means I have to use the following lines in my config/deploy.rb


set :repository, “file://.”
set :deploy_via, :copy
set :scm, :git

The username on my dev machine does not match the username for the textdrive account so

set :user, “your_username”
set :use_sudo, false

setting :use_sudo to false since we are in a shared host.

set :deploy_to should be an absolute path otherwise the current link created by capistrano will not work.

On the textdrive side I only had to link the public directory with the current/public directory to conform to the directory structure imposed by capistrano.
In the documentation for deploying Rails applications avoid the section on config/environment.rb.
There is a note saying that it won’t work with Radiant >0.6.5 and I can confirm that 0.8.1 works without this.

Of-course being lazy I had to setup password-less login for ssh, but that was a breeze anyway.

So it took all of 6 hours (or 3 months…if you measure time like everyone else) to get this site up and running again.

Posted by Vassilis Rizopoulos on Oct 05, 2009