I haven’t been able to write as frequently here as I would have liked due to time constraints and multiple assignments, not to mention my son who keeps me on my toes as well. Anyway! As another year comes to an end, I have been thinking about the technologies I have picked up this year. I guess, for me the addition for the year has been Alfresco. Though I had some idea and brief exposure to CMS like Drupal/Joomla, the concept of Enterprise Content Management (ECM) was rather new and besides its exhaustive features the Alfresco installation itself was really huge! It forced me to upgrade my ISP plan immediately! 🙂
I started with Alfresco in Nov 2009, the initial exposure was more like testing waters. It was only later when I had a chance to code & configure some Alfresco actions, aspects, iBatis, DAO as well as behaviours and that gave me a glimpse of its real power. I tried and picked up Spring as well, but then Alfresco hardly lets you use “Spring” as such.
Behaviours are awesome – unlike Alfresco actions, I love the power they give you to control features without configuring them for each tenant. Yeah, we have had reasons to use multi-tenancy of Alfresco to its full extent. 🙂 In fact, since we have had quite some issues with multi-tenancy with Alfresco 3.2r, we decided to move over to Alfresco 3.3g and sticking with it till date (Yeah, 3.4b is out – I know). This transition was one of the biggest challenges. We have developed few really smart features for our product and it required us to hack Alfresco in a rather peculiar way and I had to deal with all those intricacies of Alfesco’s repository code and authentication system. To my surprise, I found that Alfresco simply changed method signatures and worse still some methods themselves without leaving any trace of earlier methods, and mind you this was transition from 3.2r to 3.3g. So no “deprecation”, they just removed older methods; something that no seasoned Java programmer would anticipate or appreciate! That was one rude shock, and took me quite some time to get those hacks working again, but that’s the real euphoria of being a programmer, to make things work! This feature still remains the flagship feature of the product and feather in the cap for us! 🙂
And speaking about hurdles, l there were some subtle but annoying bugs for us that we had to fix by some workarounds for ourselves. One interesting bug is about the thumbnails – Alfresco can generate thumbnails for updated documents if you are using default tenant, but it doesn’t work with other tenants, and that was reason enough for me to dig into ThumbnailService and have it fixed, and it was some fun!
One often tends to associate Alfresco programming or Alfresco programmer with a subset of those RESTful APIs and Webscripts (at least in the projects that I have seen in India), but I guess I was fortunate enough to look under the hood and add some really smart hacks & cool features to our product that allowed me to do some hardcore Java/Spring coding for Alfresco customization. Speaking of which, I think no Alfresco programmer can ever thank enough to Jeff Pots for his ecmarchitect.com blog. This guy is *really* awesome. On couple of occasions I considered writing something more technical in a blog post about Alfresco, but then realized that I can’t probably write anything more useful that what he’s already written on his blog.
Coding is fun…it’s all the more fun when the technology you’re dealing with is new (at least for you), as it offers the learning that you’d really enjoy! For me, this year it was Alfresco, next year I am planning to experiment with Android more seriously!
Happy coding, happy experimenting and happy learning! Oh yeah, wish you a very happy & prosperous new year as well!