Section: development
Facebook Developer Garage 2009, Milan (Italy)

This is my recap of the first italian facebook developer garage, held in milan on April 23, 2009, and hosted by mikamai. The morning has been dedicated to developer sessions, the afternoon to marketing & communication ones. Some videos of the event are available here.
Morning: developer session
The first talk was held by James Leszczenski, facebook engineer, who presented the connect platform vision, mission, and values. interesting, besides the talk, for user participation: the audience was deeply interested about which information they get from facebook, how should they handle it, and which means connect does provide to match identities and find friends on an enabled web site.
Later I had the occasion to ask James about whether FB was inclined or not to adopt OpenID as an authentication method: [ ... ]
Implementing an image gallery using facebox and will_paginate
On VisitaCSA we’re using defunkt’s facebox to show places images at large. Facebox is a great general-purpose lightbox, because it is fast, stable, is based on jQuery and has got a really clean API.
But we needed more than a simple display lightbox, because we wanted our users to navigate easily between all images, possibly without modifying facebox at all. The solution turned out to be pretty simple, thanks also to the will_paginate plugin we were already using. It all burns out to have:
- A Photo model, instrumented with the
has_attachmentmethod - Resource routes for photos (
map.resources :photos, :only => :showinconfig/routes.rb) - A
showcontroller method in thePhotosControllerthat calls.paginatewith a:per_pageargument of 1 - An HTML view for the photo resource, that has pagination controls using the
will_paginatehelper - Some jQuery code hooks onto the pagination links and make the browser load via AJAX the next photo directly into the facebox.
The obfuscated blinking border
This is the obfuscated piece of Javascript code that implements the red border and loads Google Analytics on the Segmentation Fault site :
77 <script type="text/javascript">// <![CDATA[
78 var theLoadSequenceToRunAfterTheDocumentHasBeenLoaded = function() {
79
80 // The blinking border
81 //
82 (function(t){// (C) 2009 vjt <segmentation-fault@core-dumped.info>
83 var $=function(_){return(document.getElementById(_));};var ee =[
84 $('n'),$('s'),$('w'),$('e')],e,_=true;setInterval(function(){for
85 (var i=ee.length;i&&(e=ee[--i]) ;_) {e.className=e.className?'':
86 'b';}},t*08); /* .oOo.oOo.oOo. ^^^^^ -*** * *** *** *******- **/
87 })((4 + 8 + 15 + 16 + 23 + 42) * Math.PI / Math.E + 42/*166.81*/);
88
89 // Google analytics
90 //
91 try{var pt=_gat._getTracker("UA-1123581-3"); pt._trackPageview();}
92 catch($aMarvellousErrorThatWontBeDisplayedOnTheUserBrowserAtAll){}
93
94 }// end of theLoadSequenceToRunAfterTheDocumentHasBeenLoaded routine
95 //]]></script>
To me, it looks like a contrived melody, or complicated poetry. It’s evil engineering, I know. But when I was writing it, I felt exactly the same I did while writing verses with rhymes. _why’s words are absolutely pertinent here: “until programmers stop acting like obfuscation is morally hazardous, they’re not artists, just kids who don’t want their food to touch.”.
You can view the code with syntax hilighting on github, or with the “View source” function of your browser while you’re on the segfault site. :)
How to mirror a static copy of the opensource.org website
I currently maintain the italian mirror of the Open Source Initiative web site, and today I realized that the script I wrote some months ago wasn’t doing its job well.. because the CSS files weren’t downloaded at all, causing a rather unpleasant rendering of the site.
To mirror opensource org I’m currently using the plain’ol GNU Wget -r—mirror and so on. While the good’ol wget downloads each page prerequisite defined in the HTML source, it doesn’t support @import CSS rules, and doesn’t download images referenced in CSS with url() rules.
BTW, nothing that can’t be resolved with some regex-fu: that’s why I’m sharing the script I’m currently using to mirror the opensource.org web site, hoping it will generate either a new mirror or some insights on how to do this job better :).
The script: update_opensource_mirror.sh
Enjoy! :)
Continuous evolution
releases$ du -sch *
7.6M 20081209132347
7.0M 20081209133350
7.6M 20081209144343
7.1M 20081209145133
7.1M 20081209151843
7.1M 20081209163013
7.1M 20081209175506
7.1M 20081209183553
7.1M 20081211122939
8.6M 20081212190026
8.3M 20081212201852
8.3M 20081212203943
8.3M 20081212205430
8.3M 20081213014847
8.3M 20081213020357
8.4M 20081213163428
8.4M 20081213173633



