LOLCODE - Finally, a Domain Specific Language for the masses! Here’s a couple of examples taken from the website:
There’s nothing like a joke that takes 15 years of education and work experience to appreciate.
LOLCODE - Finally, a Domain Specific Language for the masses! Here’s a couple of examples taken from the website:
There’s nothing like a joke that takes 15 years of education and work experience to appreciate.
I spent this week doing a proof of concept time-boxed to one week for a client that wants a new corporate intranet. The first step was to choose a technology stack.
I have experience with some heavy weight commercial Content Management and Portal products that play in this space but all of these are expensive and probably an overkill for a intranet. The majority of the client’s requirements are to do with basic web content management so I went on the prowl for Java open source solutions to the problem. I spent around three to four hours installing and playing around with some open source products that have enterprise level support available through backing companies.
OpenCms 7 — OpenCms is a web content management system and nothing more. It was trivially simple to install and get going with MySql. It gives you a tree view of your web projects and you can go about managing content in the same way that you would in a file system. You do your work in an “offline project” and publish changes in batch when ready. I found changing the look and feel and layout non intuitive at first but it was ok once I worked out that my site was based on the “templateone” module and most of the styling and layout could be driven from properties in the document tree. OpenCms supports XML content that you can define and author through an automatically generated web form and then access from JSPs. The bundled documentation is good and finding help online is easy.
Alfresco Community 2.1 + Web Content Management extension — Alfresco is a lot more than web content management system. At it’s core it is a document management and collaboration tool that is trying to compete with products like Microsoft Sharepoint. It has team spaces where users can author, manage, version control and share documents as well as participate in discussion forums. Users can access the content repository through a sleek looking web interface or directly from Windows using various plugins. Content can also be accessed through a web service API. The Web Content Management extension adds the ability to create web projects and publish web content. A really cool feature is the ability to deploy dynamic web projects (i.e. WAR files) that are developed outside of Alfresco. I tried this out by creating a simple web application using Sitemesh to control the layout. As a Java developer I found this much more in tune to my way of developing software. In terms of support there’s a website, a wiki and forums but I found it very hard to get useful information. Even something basic like installation instructions are incomplete and all over the place. Alfresco is more feature rich than OpenCms and with that comes extra complexity which led to frustrating attempts at implementing more complex things like XML based web content. Overall I was quite impressed with Alfresco and can see the potential to do some really cool stuff in it. Unfortunately, due to the learning curve, lacklustre documentation and short amount of disposable time I abandoned Alfresco as an option. I will re-visit it when I have more time.
Liferay 4.3 — Liferay is an open source Portal product. I have a healthy dose of skepticism towards Portal products brought about by a few bad project experiences. Liferay was easy to install and get going, it comes bundled with Tomcat and runs on HSQLDB by default. Liferay comes with a lot of collaboration Portlets like wikis, forums, news, document sharing and calendars out of the box although I get the feeling that they are all quite basic. For example, the wiki Portlet is very simple and lacks a lot of the features that one would expect in a fully fledged wiki product like Confluence. A core feature of any Portal product is the ability for each user to create their own mash-up of Portlets and Liferay supports that well. I found the administration Portlets to be slow and hard to navigate around. Overall I was impressed with the breadth of Liferay but not so much with the depth. I abandoned it as an option, mostly because it’s feature rich in all the wrong places and a general belief that Portals are evil.
In the end I chose OpenCms as “the simplest thing that works” and spent 2.5 days spiking an Intranet on it. In that time I was able build:

A work colleague of mine and I constantly banter about his refusal to embrace Facebook. He cites the ridiculousness of it as his primary reason. I’m starting to see his point.
This week I did a presentation on Test Driven Development (TDD) at a client to a group of mid to senior level developers that are trying to up-skill in Java. I chose a few academic examples encompassing unit, integration and functional testing and demonstrated ‘live’ on Eclipse how I’d go about developing using a test-first approach. After completing the exercises I showed that with good test coverage I could refactor safely to improve the design.
The response from the audience varied from stunned thoughtful silence to scepticism to plain disbelief. I didn’t get a sense that anyone ‘got it’ to a point where they would go and develop their next class test-first. There was certainly lots of interesting discussion and questions afterwards but I think it all sounded like a bit of a hippy concept to them.
The experience made me reflect back on my adoption of TDD. I’ve been writing tests for years but it wasn’t till about a year ago that I took the leap of faith to a truly test-first approach. The trigger for me was some pairing sessions with experienced developers that showed me the value of it. For years before that I had resisted, in my mind always thinking that there was little difference between test-first and what I was doing.
TDD is a hard concept to sell, it sounds backwards to a developer that has been writing classes forever and has only recently started writing tests at all. Some of the comments I got during the presentation were: ‘I get tired of writing tests, it’s monotonous’, ‘Isn’t it better to write all the code and then give it to someone else to write the tests?’, ‘Wouldn’t TDD end up with a bad overall design since we’re always doing the least we can to make a single test pass?’, ‘We’re always under the pump, all this testing takes too long’. Academic answers to these questions sound shallow because it’s hard to explain what doing good TDD feels like. A few solid pairing sessions would provide a more robust answer to all these questions.
Throughout the presentation I couldn’t help but feel like a bit of a preacher. I know TDD is good, I wouldn’t develop any other way. But how do I qualify the benefits and convince someone that it’s the way to go? In the end, TDD requires a leap of faith. After some experience with it, you won’t turn back.
Recent Comments