(Or possibly the weakest IP regional check I’ve ever seen)

Those who know me better definitely reckon that I am one of those crazy South Park  (<– Hem, you can open this link only if you’re in the US) fans which knows every episode by heart and that, together with Mau, tries to dedicate 30 mins Thursday night to watch the new episode, aired in the US the night before.

Till a couple of years ago the South Park official site (South Park Studios) was nice, free and open worldwide, airing all episodes and clips just right after US airing, once again demonstrating Matt & Trey (the authors) open mindedness and free-o-cratic approach.

Well that couldn’t last and months ago Comedy Central decided to start shaping traffic from the .com domain to national domains (e.g. in my case, being resident in Amsterdam). Pretty fair you would say?

Well, I guess so but you know, as a South Park fan, when they also started messing around with content, limiting views “based on pre-existing contractual agreements” and following the local Dutch TV Comedy Central broadcasting schedule (typically postponing a few, CRUCIAL, weeks after the US original airing), this became hardly bearable 🙂

SouthParkStudios regional check

Basically if you try to access from the Netherlands (in my case) you’ll get a nice Cartman in blond dialog telling you to click and go to the national … with outdated content … outrageous 🙂

To be honest, I could solve my issues using the infinite resources of online streaming 🙂

But today I wanted to do something more: I actually wanted to send a friend a link to a specific clip from the last espisode (“Mysterion Rises”, 14th series, aired last Wed in the US), so basically something possible to just from the US site,

First try: with little success I tried the standard Google Translate hack which was nicely detected by the SouthParkStudios, and still the blondish Cartman blocked me.

The way too easy win: 

Looking a bit closer to the type of regional check, I noticed than, upon detecting an access to the .com site from a non US IP address, a grayed out foreground DIV was overlaid on the pre-loaded (and fully functional) underlying .com page.

Well, then, why don’t try with a simple Firefox plugin like Firebug which allows me to point and click the web page and edit the live rendered DOM?

South Park Studios Firebug Hack for US only blockAnd the game was done: as you can see in the second pic with Firebug open on the page, I was easily able to identify the DIV which caused the geoblock (search for ‘geoblock’) , and using Firebug DOM editing features I could remove the guilty DIV (apologies to the dutch Cartman and the black DIV).

Of course you need to re-do the edit at every click you do, but you understand how easy would be to automate this using tools like Greasemonkey or successors. This way I could easily browse the .com site from the Netherlands and send the proper Mysterion link to my friend 🙂

Now, get me straight, the intention of this post (and of this author) is NOT TO ANYHOW SUGGEST to use this hack (and anyways this was so simple that calling it a hack would be a unique case of overrating), but more to send a message to website writers all over the world, a message which goes something like DON’T INSULT OUR INTELLIGENCE 🙂

Please, in the undesirable and potentially not agreeable case that you really need to perform this kind of blocks, take into account that the Internet public is growing in maturity day by day, and you don’t have to be anymore a computer science geek or an engineer like me to actually being able to break such a poorly designed and coded geoblock.

And with specific reference to Matt & Trey: I love you guys a lot, and if you knew me you would know. But you also know (or I think assume) that to watch and appreciate South Park your need a proper level of self irony and a decent IQ … also I know lots of real geek friends of mine which die for South Park, as yes let’s be honest there’s a geek irony component in the series …  then please hire (or tell the Network) to hire some serious guy to run you online video publishing, as with these ***ppy solutions “pre-existing contractual obligations” are doomed to a dark oblivion  🙂

I know “someone” who would be definitely interested to spare a hand  🙂

Boost your Maven build with best practices

Today I’m approaching the Spring Surf RC2 release and one of the major thing that has been bothering me (and definitely the other devs) has been the slowness and instability of the Maven build.

Recurring issues like:

  • Huge overhead in repository snapshot artifact lookups
  • Multimodule useless plugin invocations
  • Build randomly failing on the build server
  • Release unnecessary complex

In this sense, as Maven has always been my boy, today I decided, prior to the RC2 release, to try and improve performances and stability of the build to a good extent before proceeding with release: in this sense, as I often suggest, a Maven project is somehow like a very sweet but complicated woman, who really need some Tender, Love & Care before actually being able to release all its potential.

And as I believe that, in the infinite hate & love between software writers and software users/configurators, Maven design has too many times blamed for circumstances that actually are fully under the control of the configurator (e.g. the dev who writes the Maven POM), while I go trough this Maven refactoring I dediced to share my experience and achievements with you, to actually try and somehow give Ceasar what belongs to Ceasar.

Read more Boost your Maven build with best practices

Surf-ing in Cagliari


And almost 18 months after Surf-ing in Munich’s snow, but this time as a presenter, and in the quite warmer venue of Cagliari, I was lucky enough to be invited by Max to speak at the Spring Framework meeting last weekend.I just published the slides about my talk “Spring Surf and OpenCMIS, the dynamic duo”, while, considering my agenda of the next weeks/months, I guess it’ll take a while for me to find a little rest and publish some nice photos of the wonderful Sardinian landscape I’ve visited.Nevertheless (as some German friend of mine like to repeat more than often), stay posted!

More and more ways to contribute to Alfresco

Short informative bulletin for Open Source (and especially, of course, Alfresco) Contributors, with two big news on the radar I thought you should be aware of.

ACCP  (Alfresco Community Committer Program)

Did you know that Alfresco is organizing an Apache style meritocracy based Community contribution program? Did you know that it’s completely community driven and you can participate by proposing your project for incubation?

A full initial committee is ready now to start incubating and progressively gather quality open source solutions hosted by Alfresco. If you’re interested in participating and contributing your project, visit the Alfresco ACCP dedicated wiki page and register for the ACCP introductory webinar we’re organizing on July 28th ( 8am PT, 11am ET, 4pm UK)

Alfresco Developer Conference

A all-rounder technical introduction to Alfresco (from noobs to hard core Alfresco rock stars) 2 days conference will be hosted in Paris AND New York after summer, under the name of Alfresco Developer ConferenceRegistration is already open for Paris and we’re very excited to foresee 48 hours full immersion in the newest technical bits and new frontiers of ECM using Alfresco. While we’re still working on the details, the three main tracks we’re likely to cover are CMIS, WCM and Repository services. I’d be happy to gather and bring to the organization committee any feedback on topics you’d like to discuss or see covered during these session, so don’t be shy and shoot your comments 🙂

Confluence and Alfresco integration … am I seeing double? :)


Funny little story about open source business models and trends: this story goes about the long time discussed and awaited Alfresco Confluence integration, and goes back of almost one year. Confluence is the Enterprise wiki solution from Atlassian, while Alfresco…well I guess it does not need introductions on this blog 🙂

Short preamble:

This project started  in June 2009 hosted in Google code as joint open source initiative by Alfresco and an Alfresco pan-european partner,  Sourcesense: originally hosted on Google Code under the name “Confluence Alfresco Plugin“.  The project was originally meant to provide access to Alfresco documents from Confluence macros, and was based on the Alfresco proprietary webscripts ReST API. After a promising initial implementation was drafted, the project has not seen any commits as of Jun 2009: the reason behind this sudden stop was  that this implementation was based on very specific Alfresco APIs, and the rise of an Open Standard like CMIS would have made such an approach an early obsolete product.

Where one seem to stop, another rises from its ashes: as natural continuation of the Confluence Alfresco project, in the very same mid 2009 in Google Code a new project is opened under the, more generic, name of Confluence CMIS Plugin. As the name suggests, the scope of this set of Confluence macros was, not just to integrate Alfresco, but to provide Confluence a more generic support for any CMIS compliant repository: this open source & open standard approach was based on the initial versions of Apache Chemistry Java client, still under heavy development at that time, but already attracted some buzz in the Confluence community.

Present times:

Almost one year has passed since then, and I keep on receiving requests (almost on a weekly basis) from Alfresco partners and customers interested in an Enterprise solution for Alfresco Confluence integration.

What happened with Confluence Alfresco (and its successor Confluence CMIS plugin)?

Looking a bit deeper at the project’s mailing lists you can find some hint of what’s going on:

Sounds a bit like the ant vs grasshopper battle, doesn’t it?  🙂
My view:

First of all, I must say I really do hope the two efforts will soon be consolidated into one, both from an open source contributor and also Alfresco business perspective.  Still for now, we’ll have to stick and choose one.

Those who know me already might already be guessing this: at the moment, I quite like the approach of the Confluence CMIS plugin, and not only because you can actually check out the code from Google Code / get snapshot releases NOW and have macros in your Confluence to work against any CMIS repository.

Ah, and also not just because I’m a committer in the Apache project (Chemistry) developing OpenCMIS, which is now used by this plugin 🙂

The reason is instead that I really do prefer an open approach to ECM, especially about building integrations, and that comes out of the my very personal idea of software development.

IMHO, being software development a process, there’s more to it than just a good mix of high quality code and good sales/marketing skills: to build a successful (and scalable) solution, you need to have a sustainable and lean process backing up the development of your solution, a process where systems and people can interact on standards basis and clear information flows, like the ones a controlled open source process can offer.


The Confluence Alfresco CMIS integration story, is just one example of how the very same solution can be approached in multiple ways: with no doubt, from my perspective, the CMIS based approach is bound to be superior in terms of longevity and maintainability (thus reliability of the business model).

Also, in order to achieve a much broader target, it might be beneficial to keep it in the open source arena: this way, it might get the resonance and the broader adoption that the Confluence community is waiting to actually start consolidating content in more advanced ECM platforms like Alfresco (or any other CMIS compliant server), based on top notch libraries like OpenCMIS (BTW, we’re working toward a first release out soon).

And don’t get me wrong, I’m not just a Stallmann style fundamentalist: it’s still perfectly possible to develop proprietary (and maybe enterprise specific) extensions which might use a different licensing and business model, and maybe Alfresco specific capabilities. I just believe that for core ECM functionalities and product integration, it’s just always better to stick to the standard (especially after all the work put into the CMIS process).

And that sounds especially reasonable,  if you think that both Alfresco (LGPL licensed) and Confluence (offering free hosting for Open Source projects) have important stakes in the Open Source community and potentially customer/prospects which value the extended benefits of an Open (source + standard) approach.

And if you not convinced yet, I have few more thoughts on what I mean by Open (source and standard) ECM

Unlock ECM with CMIS

Part of my daily job at Alfresco is to suggest our customers and partners the best way to integrate and customize the extensible and open standards based Alfresco Content Platform.

The open standard concept is indeed a very general one, as it embraces top down standards (i.e. when a committee of some form is created and the standard follows a formal approval process) and, especially since the rise of Open Source, bottom up standards (or standard de facto, i.e. recognized as standard because of major adoption of a large community and well known benefits).
For example, in the case of Alfresco, I would consider support for JDBC, JSR-168, JSR-170 and more recently CMIS as falling into the former category, while technologies like Spring or architectural patterns like ReST as part of the latter. Another example I’m familiar with which might fall in the latter,  is Apache Maven, which allows to use a standardized process for development, release and documentation of your project, and is used by most J2EE open source projects.

In my opinion, both these classes of standards are equally important to a sustainable development process.  They have to be leveraged and balanced, to allow both a potentially very modular growth in features by standard/clear interfaces, while still ensuring wide adoption thanks to the usage well known technologies and enabling tools.

And in my experiences, it’s only in the Open Source ecosystem that open standards can flourish and get stronger, as key building blocks of the backbone of many open and proprietary applications (thus driving also dependent processes, like resource provisioning and maintenance). For this, I’ve always been advocating to leverage open standards (and possibly open source implementations) in ECM integrations/customizations, both for clear architectural advantages and to also provide sustainability to the whole application lifecycle (and thus to the business model at large $$$$).

So when, almost couple of years ago, Alfresco strongly shifted to CMIS, I basically was a “happy camper”, as Nancy would say 🙂

I’ve been pushing, waiting, trying, educating and contributing to the standard in order to help as much as I could to have this out and kicking in the shortest time-frame. Biggest achievements of this last 2 years have been, on the personal standpoint, my committership for the Apache Chemistry project (which now provides, amongst others, a complete Java CMIS client called OpenCMIS) and, on the career standpoint, the wonderful chance of joining an Open Source ECM Software company like Alfresco.

Even better: participating to an open source open standard implementation, while working for an open source product company…seems a wordgame,  but now after 2 years of great efforts, it’s now fair to say, at least for the J2EE world, that:

“CMIS is ready and easily usable

At this is because of a few amazing things happened in the last months:

Douglas Adams' Babelisfish

As Dave correctly says,  from now on, I think we should more and more try to build on top of this standard approach (and the simplicity offered by OpenCMIS) to achieve simply reusable content oriented applications.

This new open ECM is a bit like moving on from the Tower Of Babel of one off integrations, to open (standard and possibly source) content development aided by CMIS,  playing somehow the Babelfish (see image for a detailed architecture)  that unlocks your content from the specific repository  details…bringing it to an abstract domain model, ready to be introduced in complex, distributed, scalable content processes. Too poetic? 🙂
In other words, this open ECM it’s not just merely about open standards and/or open source products adoption: it’s more like a new way of envisioning content applications based on both the benefits of open standards and of the open source development process, at technical and communication levels.
After all, same as when design patterns were introduced they drastically changed the way we talked and designed software, we should exploit the great momentum of CMIS to start “talking the same content language”.

This is true for product vendors (which are rapidly offering support for the standard), but also for System Integrators and community members which might end up (finally!!!) building once and use (sell) everywhere.

And so (possibly also because I’ve been attending a Rage Against the Machine concert lately, my last quote and public call for action cannot be any different than:

“Content Workers of the World, Unite (under CMIS) !”

Get me home!

Hey guys,

I’m just trying all media I can 🙂

I’m stuck in Rome and needing to back to A’dam ASAP… so if anyone is going back north out of Italy by car or whatever transportation…plz plz let me know 🙂

I’m also tring to get this done using a nice road sharing site…

Carpooling on the route Roma, italia – Amsterdam, paesi bassi

thanks in advance for any help!

[HOWTO] Build your JAR Alfresco Share Dashlet with Maven in 3 minutes

Two months without a post, and I come back again with Maven and Alfresco? Well, no news as the Maven Alfresco Community keeps growing..

So following the exciting news on Spring Surf and Share announced by Kev on trunk, for which since Alfresco 3.3 (now in trunk) we can now build Alfresco Share Extensions as plain old JARs, I decided to complete the Maven Alfresco Lifecycle with another archetype, providing a simple way and sample code allowing to build Maven2 Alfresco Share Extensions in minutes.

I’m sure this is going to interest the Alfresco community, same as it’s Ant counterpart build script which Will’s recently produced to accomplish the same task. The more, the merrier isn’t it? The big difference between that approach and the one we’re presenting is only that Maven enforce a standard project layout so it was fairly easy to put stuff to be packaged in the proper place.

This also comes as a very natural complement to the Maven Alfresco Share Extension Archetype (managing WAR customized builds for Share) for now it’s possible to build a Share WAR and have it depend on Share JAR modules. Great kudos go to colleague and mate Will Abson and Alfresco Engineers for having produced and nurtured the Site Tags Dashlet which is included in this archetype and that you can install following the next steps in a couple of minutes.

Couple of pre-requisites for running this:

  • Alfresco Repository WAR 3.3 (TRUNK) already running on Tomcat. You can build this from trunk and run it in your tomcat instance, or find it deployed in the Maven Alfresco Community Repository
  • Tomcat Manager already installed and using credentials “admin” with no password (config in conf/tomcat-users.xml)
  •  (optionally) m2Eclipse eclipse plugin to import Maven project (not needed but cool 🙂 )

Ready, set, go: Read more [HOWTO] Build your JAR Alfresco Share Dashlet with Maven in 3 minutes