The concept of the weekend's tasks are based on the following:
- Divide the gang into 5 groups
- Present some technologies that are core, meaning everyone of us should know by heart (for instance Spring and Maven)
- Present some new technologies that are hot, and might come in handy in the near future (for instance JRuby and OpenESB)
- Do some cool programming competition that makes use of above technologies
First we spent a whole load of time settling on which tehcnologies to focus on. See we've got four different camps of technology groups in Objectware, each of which are tugging in different directions, mainly core, web, integration and enterprise design & architecture. I like to believe we achieved doing a fair divide between the different camps, since these four camps are paying for the whole ordeal ;)
We also spent alot of time agreeing on the programming competition. Well, we actually settled on not doing a programming competition, instead focusing on cooperation between the 5 teams. Instead of having different teams compete over who could do the best implementation using different technologies (like we did last year), each team were to implement parts of a larger system which would cooperate using services across an ESB.
The system itself was sort of a collaboration suite framework, based on Subversion commits, Continous Integration and a robot. The ultimate functionality of the system: If you break the build, lil' Timmy here will come driving into your cubicle and steal your beer.
To be honest the solution will not be used directly, but the codebase does contain alot of good reference implementation of the various technologies we involved. We also got a good heap of discussions regarding among other things:
- Shared domain model among the teams
- Contract-driven development
- A bunch of problems using JRuby (hint: it's too early)
- The Enterprise Domain Repository pattern
- Struts2 Best Practices
Aaand, the number one rule of bringing 40 programmers to a hotel: DO NOT TRUST THE NETWORK! Excactly. Even if the hotel has promised you full wireless, it ain't gonna work with 30 people who are trying to connect to the Maven repository, Subversion, etc etc.
So, we set up a mighty fine Ubuntu box with the following:
- DHCP-service for allocating all the teams an address on our subnet (jafs.objectware.no)
- DNS/bind for all the interal addresses on the domain
- Subversion repo on svn.jafs.objectware.no
- Continous Integration server on ci.jafs.objectware.no
- Maven repositories on repo.jafs.objectware.no (snapshot-repo, release-repo and site-repo)
- IRC server (of course!) on irc.jafs.objectware.no
Now it might seem like a bunch of uneccesary mumbo to setup all these wires, aliases and services, but believe me we all appreciated being able to just hook into a 100/1000-MBit network and be up and running. Zero network problems, I tell ye :)
So that was JAFS... Right after we were done I had to get ready for delivering my 10 minute lightning talk on Smidig 2007 (the Norwegian Agile-community's first conference). The conference was as impressive in implementation as was its lack of up-front planning (taking about two months to prepare, was it?).
The conference left me inspired and hungry for more. If I remember, the next post will be about distributed continous integration.