Archive for January, 2005

Rome, finally

As expected it has been a:

1) long

600 km and counting

2) early

Modena at dawn

3) and cold drive

-8 a Pian del Voglio

But I finally managed to get in Rome. Heading to a long meeting day, a glorious steak dinner and an early crash at the hotel to recover from missing sleep.

Traveling ahead

Leaving tomorrow for a week long trip to Rome. Lots of work, meetings, dinners and interesting stuff ahead, but it’s going to be an interesting journey: since I’m staying for some time, I decided to drive (600+Km), and of course we’re expecting bad weather and freezing cold. At a very least, I should be able to avoid fog, but still it’s going to be a longish drive with ice and snow waiting for me between Bologna and Firenze.

After a long week of work, though, a nice weekend is waiting for me: my wife will join me in Rome, and we plan to stay in Umbria or Tuscany over the weekend, seeing nice places, having good food and enjoying a few days off.

Going to sleep now, the alarm clock is set to 5AM: I want to leave before 6 to avoid traffic jams in escaping Milan. Given the upcoming intermittent network access, expect lightweight blogging.

Sourcezone launched

Ugo is serious about his new venture, an effort definitely deserving visibility and all my best wishes. I’m uncomfortable, though, with a site aiming to be a reference for Open Source projects yet probably running on non-OpenSource software: isn’t there enough dogfood available?

Dan Brown – Il codice da Vinci

Alcune cose non si possono evitare. Il Colosseo a Roma, il pollo alle mandorle al ristorante cinese, il blackjack a Las Vegas e il libro del momento (come sostenere una conversazione senza parlare del libro di Dan Brown o di Harry Potter?).

Nulla da dire sul libro, è ben scritto e avvincente quanto basta, tanto da essere letto in tre ore e mezza di un sabato mattina: resta però l’impressione di un romanzo fast food, i cui ingredienti principali sono protagonisti improbabili e un intreccio fatto di misteri che, per chi conosce un minimo dell’argomento e ha fatto un po’ di esercizio con la pagina della sfinge e i cruciverba di Bartezzaghi, si risolvono un po’ da soli. Non serve un capitolo per ricordare che Leonardo scriveva da destra a sinistra: se sei uno dei massimi esperti di simbologia e di Leonardo, ci fai un po’ la figura del fesso.

Non vado oltre per non rovinare la sorpresa a chi non lo avesse ancora letto, ma tanto per capirci Dan Brown è sul piano di un Grisham o di Cussler, e va preso per quello che è: un buon libro da ombrellone.

Tortellini feast

Is there anything better, after a long day of work, to find out that your beloved one managed to cook a surprise dinner?

Those are world famous handmade “tortellini”, filled pasta with ham, mortadella, roasted meat and parmesan cheese: hard stuff to do, since dough is first laid out in thin layers, then cut in small squares with a small nut of filling laid out in the center. The small squares are then fold in half on the diagonal, producing small triangles, and here you need to master some origami-like technique to produce the peculiar round shape by gently rolling the triangles, fold once again horizontally at roughly 1/3rd of the height, around your pinky finger. As usual, a picture is worth a thousand words:

Tortellini

Boil them in salted water, season with butter and sage, and enjoy your meal! Now, I definitely don’t need a specific reason to love my wife, but if I would, this could be a very good (and yummy!) one.

Neat Jira/Cocoon/LDAP tricks

I’m playing with Jira and Confluence lately. These guys managed to provide an impressive set of software indeed, and I’m amazed on how well it works. Yeah, I know, it’s not Open Source, but it’s licensed with a clue anyway (you get the source code, and you can modify it to itch your own scratches).

So far, Jira and Confluence have disappointed me only on a user management issue: they can be integrated with LDAP, but just for password checking purposes. Users have to be manually created and associated to groups, and this promised to be a serious pain, given that we are currently migrating a hundred users, and we might end up with thousands in a forthcoming setup.

Luckily enough, Jira supports Jelly tags to interact with their backend, and I discovered that they had tags to perform user creation and group association. Since all our users are on LDAP, I figured out it would have been enough to dump the user database as a properly formatted XML file with Jelly tags, and with Cocoon it was a piece of cake. Just add a new matcher in a sitemap that reads as follows:

    <map:match pattern="ldap2jira">
        <map:generate src="ldapquery.xml"/>
        <map:transform type="ldap"/>
        <map:transform src="ldap2jira.xsl"/>
        <map:serialize type="xml"/>
    </map:match>

write your LDAP query definition:

<?xml version="1.0" encoding="ISO-8859-1"?>
<LDAPUSER xmlns:ldap="http://apache.org/cocoon/LDAP/1.0">
      <ldap:execute-query>

         <ldap:initializer>com.sun.jndi.ldap.LdapCtxFactory</ldap:initializer>
         <ldap:authentication>simple</ldap:authentication>
         
         <ldap:version>3</ldap:version>
         
         <ldap:serverurl>ldap://ldapserver</ldap:serverurl>
         
         <ldap: port>389</ldap: port>
         <ldap:scope>SUBTREE_SCOPE</ldap:scope>
         
         <ldap:searchbase>ou=your,o=base,c=here</ldap:searchbase>

         <ldap:debug>FALSE</ldap:debug>

         <ldap:deref-link>TRUE</ldap:deref-link>

         <ldap:count-limit>0</ldap:count-limit>
         <ldap:time-limit>0</ldap:time-limit>
                  <ldap:filter>(objectClass=orgPerson)</ldap:filter>

         <ldap:show-attribute>TRUE</ldap:show-attribute>

         <ldap:doc-element>LDAP</ldap:doc-element>
         <ldap:row-element>LDAPSET</ldap:row-element>
                  <ldap:error-element>ELEMENT</ldap:error-element>

         <ldap:attribute>uid</ldap:attribute>
         <ldap:attribute>cn</ldap:attribute>
         <ldap:attribute>mail</ldap:attribute>

      </ldap:execute-query>
</LDAPUSER>

add an almost braindead XSLT:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:jira="jelly:com.atlassian.jira.jelly.JiraTagLib"
                xmlns:ldap="http://apache.org/cocoon/LDAP/1.0">

        <xsl:template match="/">
                <JiraJelly>
                        <xsl:apply-templates/>
                </JiraJelly>
        </xsl:template>

        <xsl:template match="ldap:LDAPSET">
                <jira:CreateUser  password="fakePwd" confirm="fakePwd">
                        <xsl:attribute name="username">
                                <xsl:value-of select="ldap:uid"/>
                        </xsl:attribute>
                        <xsl:attribute name="fullname">
                                <xsl:value-of select="ldap:cn"/>
                        </xsl:attribute>
                        <xsl:attribute name="email">
                                <xsl:value-of select="ldap:mail"/>
                        </xsl:attribute>
                        <jira:AddUserToGroup group-name="your-group"/>
                </jira:CreateUser>
        </xsl:template>

</xsl:stylesheet>

and, presto, you’re set! Execute the sitemap, save the output to a file and use it as the input for Jira’s Jelly Runner. This could be easily extended to create groups as well, and I can imagine a number of ways to make the whole process more efficient (python being a nice option). Next step is figuring out how to keep the LDAP directory in sync with Jira’s own user database (even though seamless LDAP integration seems to be in the official roadmap). Being relatively new to Jira, I strongly suspect there was an even easier way, but still it was good to see how this complex migration could be achieved without a single line of code and in 15 minutes flat. Moreover, it was fun, and this is a very good sign of good software quality by itself: rock on Atlassian!

Enterprise social software? It’s your inbox.

Socialtext considers this a plus:

“We used to have over 100 group emails per day. Now it’s rarely one per week [...]”
Tom Jessiman, General Manager, Ziff Davis Media

I couldn’t disagree more. Our experience shows very clearly how social software doesn’t really work without an event-driven and passive communication hub such as email. The new lightweight information infrastructure can miserably fail without a working notification scenario: the wiki approach rocks, and can definitely turn quite a few tables in traditional corporate environments, but by itself it’s just not enough.

Social software the way I see it is twofold: it’s not just about facilitating the information building process, the real plus is making sure that everyone is aware of what’s going at any given time. Information has to flow to come to life and promote teamwork. Lack of a notification process is like a dam turning a fast flowing river into a quiet lake. Lots of water, but little or no stream, tasteless fish, algae all over the place and rotten smell.

Inertia and packed schedules are social software killers: there is little or no point in working on a wiki page if getting others to know the new information requires everyone on your team to be proactive enough to check the Recent Changes page frequently. This is even more true if there are more collaboration tools in the picture: as a developer, version control systems and issue trackers are parts of my daily life, and I can definitely notice the shift in team productivity when every single tool is tightly integrated with a (archived and searchable, if possible) mailing list. I just can’t be productive if I have to check three different web pages to get a grasp of what’s going on.

Everyone uses e-mail, and this isn’t likely to change. Your email software is still the best place to organize information the way you feel comfortable with. Email is asynchronous, if you’re busy you just shut down the software, yet it’s passive: emails flow in, and you don’t have to be proactive about it. The information is there, and there is a much smaller chance of missing a bit.

Of course collaboration tools are making a change. No more lousy attachments, no more large emails, no more endless threads: email is becoming a large bag of information pointers, but still the starting points are in everyone’s inbox. I want more email, not less: care should be taken in avoiding email floods and people leaning on the delete key, messages should be properly formatted, with meaningful subjects and short information snippets and pointers, and there must be a searchable archive to quickly find the information you’re looking for. Make sure all this happen, and you’ll see the real boost.

Bottom line: if you start using social software, make sure your inboxes drop in size, not in message count. If you start getting less email, there is something wrong.

Joe R. Lansdale – Atto d’amore

Beh, andava letto. Il primo libro pubblicato da Lansdale non è certamente all’altezza del Mambo degli Orsi o della Notte del Drive-in, ma andava letto. Sembra, con i dovuti distinguo, di leggere un tema del liceo: la stoffa c’è e si vede, ma la conclusione è banalotta e la storia un po’ troppo gratuita: però il ritmo, l’umorismo e i cazzotti allo stomaco del lettore ci sono tutti, anche se in erba.

Bellino, ma da non consigliare come primo libro per chi volesse provare a leggere il Joe R. texano (attenzione: provoca assuefazione).

A journey to hell and back

Other than doing carpenter stuff, I also spent part of this weekend trying to fix my parents notebook. My brother was sent to me with their computer and a sloppy smart card reader they need for their job to submit business documents to the italian chamber of commerce: I must confess I almost forgot, after my first year as a switcher, how great the “it just works” paradigm is. There has been no way to make windows XP find the USB device, despite a frightening number of painful reinstalls and reconfigure, and I can only hope I had my share of yearly windows related pain.

We ended up installing the whole thing on my wife’s windows box, just to figure out that sending those documents would have required:

  • reading a ponderous 60+ pages documentation;
  • installing four (yeah, FOUR!) custom software packages (all proprietary, of course, despite relying on some OSS stuff such as GhostScript;
  • a stupid and painful reconfiguration of web browsers, email clients and custom certification authorities (yes, they give you a smart card and require you to use it. Yes, they use a self signed certificate for their web site)
  • finally, a procedure which would scare away even the most experienced computer user (it did indeed scare the hell out of me);

After this incredible effort, I was expecting to have some very advanced stuff installed on our computer: I tried to spell out as clearly as I could “Tea. Earl Grey. Hot.”, but eventually I found out that the fetid pile of dingo kidney I managed to install was just a tool to sign PDFs with a smart card and a certain date (can someone please tell these guys about OpenSSL ang PGP?). To add insult to injury, the Chamber of Commerce web server doesn’t actually accept any documents outside business hours, so we were stuck anyways. These are the times when I tend to think that physical punishment should be considered as an option…

DIY weekend

It’s good from time to time to move from the virtual world of electrons and algorithms to more concrete labor experiences. Our new house still needs some badly overdue finishing touches, and this weekend I took the chance of a most welcome visit of my brother to get some job done. Luckily for me, he’s just finishing a carpenter course, so I thought it was a right time to assess his just gained skills and see if we could make our nice home look even prettier.

I spent the weekend working as a carpenter assistant, and we managed to finish the bathroom door and mount a brand new door for an elevated storage compartment where I’m currently storing my small homegrown NOC as well as a few things I don’t want to see around. The final result looks really nice, not to mention I got some advice for free to do the remaining work. Thanks bro! I foresee a few more DIY weekends to add the finishing touches. It’s definitely good to have loved people around who are able to help you out in practical stuff… did I mention that my other brother enjoys plumbing as a hobby (he’s the one who has done entirely my two bathrooms a year ago)? I guess Andrew will be jealous. :-)