Section: development
Rails3: Better, Faster, Stronger

For those who understand italian, I’ve just published an article on therubymine.com on the upcoming Ruby on Rails framework release, version 3.0: the big news is the merger with another ruby web framework, merb.
Have a nice read! :-)
http://therubymine.com/2009/06/04/rails3-better-faster-stronger/
E-Privacy 2009: Towards Global Control
The Recipe
Ingredients
- The 2009 social environment
- A bunch of hackers
- Some competent lawyers
- A Google Spokesman
- The Big Brother Awards
- A consistent amount of paranoia
Preparation
Take the whole social environment, utterly unprepared to the media \(r)evolution happening in the last years, and let the hackers observe and talk/write about it. Bring in the lawyers, and let them recognize that “Houston! We’ve got a problem!”, whilst also they define it via lawspeak. Ask questions, and participate to interesting debates.
Now, deliver the 2007 big brother award to the Google Representative, let the sun dive in the hills, add a noticeable amount of Tuscany red wine, and get ready for the next day. Let the paranoia flow, while the hackers show how you can be traced and found via the cellular network and spied via wifi-networked cameras placed there for your safety.
Watch the undelivered Big Brother Awards 2009 sit on the speakers’ desk and suddenly put on sale on ebay, and go back home, where you read about, and watch, a video-edited interview to the italian PM.
Put everything into the fridge, and give your brain two days to metabolize it. Then write it all LOUD [ .. ]
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. :)





