Archive for the ‘programming’ category

Service Component Architecture

January 13th, 2010

Today, Fabric3 announced the general availability of their latest SCA implementation. Although I have heard the term before I have never taken the time to read further on the subject so this morning I decided to change that. This introduction to SCA by David Chappel does a good job at providing an overview of what Service Component Architecture is about.

In essence there is nothing revolutionary about SCA. In my view, it is an effort to standardise how services and their interactions are defined in a technology-agnostic manner. Anyone who has been developing enterpise applications using the Spring Framework or OSGi should be pretty familiar the concepts in SCA.

At the core of SCA are Services. Services are implementated using Components. Components can be composed (Composites) to provide more refined behaviours. All of these components and compositions of components live within a Domain. Interactions between these services are expressed as References. The actual communication between components is left to the responsibily of Bindings, thus isolating the business logic from the underlying remoting technology. The SCA runtime is responsible for dependency injections so services need not concern themselves with locating dependencies. Finally, the use of annotations and xml configurations mean that services/components can be implemented as simple objects.

Besides Fabric3, there’s another open-source SCA implemention from Apache called Tuscani.

I’m quite curious to see how practical/useful this architecture is. Hopefully I’ll find the time to experiment with one of these implementations.

Software Design Quotations

December 23rd, 2009

Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.

- Antoine de Saint Exupéry

Good judgment comes from experience; experience comes from bad judgment.

- Frederick Brooks

The most important single aspect of software development is to be clear about what you are trying to build.

- Bjarne Stroustrup

The unavoidable price of reliability is simplicity.

- C.A.R. Hoare

Which CI should you choose?

December 8th, 2009

youbrokethebuild-smallContinuous Integration systems are nowadays a requisite for any half-decent software development outfit. There are many CI solutions available, some open source and some commercial. Over the years I have come across and used different ones: CruiseControl, Hudson and Bamboo. CruiseControl is highly versatile and works well but it is a pain to set up and maintain, especially in large teams where projects get added and modified regularly. Hudson works pretty and has an active follower base contributing many plugins. But I have to say Bamboo is my favourite thus far. It works a treat, scales well with remote build agents and the web interface is user friendly. Plus this is the one I use at work so I am very familiar with it. The only down side is the cost.

I have been setting up my own dev tool set at home so I can work on my own projects. What I need now is a CI tool. I was looking for comparisons between the various options and I came across this page on the ThoughtWorks wiki:

http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix

It is a very comprehensive comparison matrix and it seems to be updated frequently.

I’m still not sure which one I will go for…answer in the next post.

My Home Setup

December 6th, 2009

The latest addition to my collection of toys is an Apple MacMini Server. The reason I decided to throw a new server into the mix is that I wanted to have the ability to develop and run my own applications as well as experiment with new technologies. For a while I was using my 2-year old Mac Mini as a server but with only 1Gb of RAM and a mere  1.83GHz Intel Core 2 Duo CPU it didn’t really cut it. I now use it to watch TV and movies in my room. It works a treat. So now here is what my home steup looks like (click on the image to zoom in):

home setup

From the NAS I run an SVN server where I keep my home projects. On the MMS I have installed Tomcat, PostgreSQL and I’ve just deployed Atlassian Confluence (they offer a starter kit for only $10) so I have a central location where I can keep all the information I need.

And by using DynDNS I can have all of this accessible on the internet. I route all the traffic to the MMS and with Apache I proxy the Confluence requests to Tomcat and SVN requests to the NAS.

It’s a pretty cool setup which gives plenty of things to occupy myself with :) .

Atlassian Studio

October 17th, 2009

atlassianI’ve been using part of the Atlassian tool suite (JIRA, Confluence, Clover, Crucible, Bamboo) at work for a while now and I’ve been pretty happy with it. It works well. Atlassian is now offering Atlassian Studio, a hosted combination of all their main products in one with a decent pricing model. I think it provides a perfect solution for startups and small organisations looking for great development tools without the maintenance hassle. The main disadvantage is, as with all hosted solutions, the reliance on the provider. For those happy to make this compromise I would greatly recommend this product.

Cobertura for J2ME is not dead!

September 25th, 2008

It has been more than a year since I released Cobertura for J2ME 1.1.0 RC2 so it would be legitimate to think this project is dead. As of late I however found some time to look at it again. I am planning to get one more RC version out before freezing 1.1.0. I’ve given myself one month to get RC3 ready and 1.1.0 should follow shortly after. Stay tuned.