I’m in the middle of the Programming Erlang book (or more exactly end of first third;) and it happens that Tom Preston-Werner gave an interview to InfoQ a couple of weeks ago. Tom Preston-Werner is a founder of Github among other things and seems to be a big fan of Ruby and Erlang. Being completely new to the Erlang world, his interview comes just in time with a couple of pointers to Erlang projects to look at:
- Fuzed, a clustering system managing heterogeneous resources.
- Erlectricity, a Ruby program to receive and respond to Erlang messages
sent over the Erlang binary protocol.
I was also amazed to hear that the Github completely bypasses the git executable to access git objects. Actually the Github guys have written a Ruby client to do that in a more efficient manner performance wise.
we have replaced a lot of the shell out calls in Ruby you do the shell out, we replaced most of those, possibly all of them by now with just pure Ruby, we go directly to the file system. We read the object data from the Git repository, we read that directly. And by doing that we have been able to get a multiplier of two speed up on the web pages throughout the site. Double the speed of the page load and that’s been awesome. So we are using that when you install Git.
InfoQ: Tom Preston-Werner on Powerset, GitHub, Ruby and Erlang.
This statement is more than a stretch, but well it’s less harmful than saying Saddam had weapons of mass destruction.

Obama is RESTful » Idol Hands: Days in the Life of an Alpha Geek
It’s no news, but still worth to mention: Google is against Proposition 8. I haven’t heard of other companies taking official position on the matter. Google is different, no doubt.
We hope that California voters will vote no on Proposition 8 — we should not eliminate anyone’s fundamental rights, whatever their sexuality, to marry the person they love.
Official Google Blog: Our position on California’s No on 8 campaign.
via Dion Almaer
Tim Bray gave a talk at the Future Of Web App. He was supposed to talk about “What to be frightened of in building a web application” but due to the market downturn he did a last-minute change and focused on what developpers/entrepeurs should do in tough times.
Interesting 35-mn session. Among other things he urged people to give up Waterfall cycle, people won’t buy a software that has yet to be implemented. To him Telecom market could be a good place to start, people will always use their phone even in a bear market, etc.
He also outlined the same old things: contribute to the internet (blog, twit, open source), don’t be a one-tech guy, diversify your knowledge, build a network, etc.
Michelin today announced its selection for the third edition of the MICHELIN guide San Francisco, Bay Area and Wine Country. The MICHELIN guide contains more than 55 new establishments, and features 448 establishments in all – a number that includes 383 restaurants representing 35 types of cuisine, and 65 area hotels.
Michelin North America’s Virtual Newsroom.
via SF Metblogs
Now that we’ve decided to use Flickr as our main online photo management tool, I had to upload tons of photos to Flickr. The Flickr archives revealed to me that the date of our digital camera is not properly set. Every single taken date is one year in advance :(
So I explored the Flickr organizer looking for a way to fix our first 1,350 photos. Unfortunately there is no way to do it online, except one by one…. (more details in a coming post) So I went back to the code hopping some friendly scripters would have created a nice library on top of Flickr webservices. And actually yes! rflickr does a very good job, very nicely. And it’s in ruby! What could you ask more?!
So zillions of thanks to the rflickr team and here is my commented script as a tiny contribution:
require 'rubygems'
require 'flickr'
# your credentials
MY_APPLICATION_KEY='...'
MY_SHARED_SECRET='...'
# get a valid token
token_cache_file='flickr-token.txt'
flickr = Flickr.new(token_cache_file,MY_APPLICATION_KEY,MY_SHARED_SECRET)
unless flickr.auth.token
flickr.auth.getFrob
url = flickr.auth.login_link
puts "You must visit #{url} to authorize this application. Press enter"+
" when you have done so. This is the only time you will have to do this."
gets
flickr.auth.getToken
end
# some query criteria, note that rflickr expects dates as Time instances
min_upload_date = Time.now - 2*60*60*24
max_taken_date = Time.local(2007,1,1)
photos_per_page=500
# Retrieve photos matching our criteria
# The method signature is really ugly, a map would be neater
photo_list = flickr.photos.search('me', nil, nil, nil, min_upload_date ,
nil, nil, max_taken_date, nil, nil, 500)
puts "Numbers of photos matching the request: #{photo_list.size}"
# then for each photo, increment the year of the taken date
photo_list.each {|photo|
# get more details about this photos
info = flickr.photos.getInfo(photo)
# increment the year
taken_array = info.dates[:taken].to_a
taken_array[5] = taken_array[5]+1
# re-set the taken date
flickr.photos.setDates(photo, nil, Time.gm(*taken_array), 0)
}
# we're done