Archive for July, 2007

2Paths 1,2 at Gibsons regatta

Monday, July 30th, 2007

It was a busy week for 2Paths adventurers. Leaving directly from the team-building whitewater rafting trip on Friday, several 2Pathians sailed to the little town of Gibsons to take part in a regatta that is part of the towns annual festivities. This meant a 1am arrival for the more party hearty of the two participating J24s.

Although the event was more casual than the strict one design racing the boats normally engage in, there was no shortage of spirited jostling between the two. Several lead changes and close crossings charged the 2Paths contingent, separating them from the rest of the fleet. After the 3 races, the software sailors earned first and second in their division.

While the more experienced team prevailed, the newcomers showed incredible speed and impressive skill. With a bit more time in the local waters Gord, Chico and crew will get their vindication over Nigel, Trevor and theirs.

The fun didn’t end with finishing gun. While one team went to the beach to swim in the clear cool water, the other heated it up with the nightlife. Rumours are still trickling in about busted moves at the street dance, prodigous shots at Grandma’s pub, and an midnight sortie in an tipsy borrowed skiff.

The Outer Limits of the Java Time Zone

Thursday, July 19th, 2007

Recently I was irritated with some major headaches caused by Java’s date/time functionality. I spent a couple days debugging my code, and stepping through every possibility until coming to the realization, my code worked. So what was causing the discrepancy with my local machine, and the staging server?

Apparently java uses /etc/localtime on linux, and the server I was having trouble with was not using a symlink to the correct timezone for it’s local time. This is apparently the correct behaviour in linux but leads to problems with the JVM. Instead the JVM had a self managed clock, and this was set to the wrong time zone. Changing the localtime to a symlink solved the issue.

More detailed information on what causes this, and how to solve the problem when it occurs can be found here.

-Garrett

A solid foundation for Agile

Wednesday, July 11th, 2007

When experiencing an agile event, we naturally focus on nimble changes of direction, the grace and efficiency of execution, that make our own lives seem heavy and inert in comparison. This is true whether seeing an athlete in motion or participating in an Agile software development project. However, there is a necessary counterpart to the seemingly light and effortless movement: a solid foundation that frames and enables the agility.

As your favourite hockey player rockets down the ice, note the sprays of ice whenever he carves around an opponent. Those manoeuvers are only possible with a smooth, solid sheet and a honed skate. When the gymnast launches freely spinning into space, she knows exactly where the balance beam will be upon descent.

So it is with software development. We can only provide efficient and responsive adjustments to our applications because we have a solid foundation to frame our efforts. First, and most critical, is a basis of trust with our clients. In order to respond efficiently to their emerging and evolving needs, we rely on minimal documentation, loosely-defined requirements, and an initially generalized view of what the end product will be. This is natural enough — when beginning a new project, it is always uncertain exactly which details will best solve the business problem that brought the client to us, but it requires a lot of trust to begin the exploration, especially in a business world rife with “buyer beware”. Our team must work hard to establish the necessary foundation of trust, showing that client and developer are part of the same team, and both parties will only benefit from solutions that effectively and efficiently meet our clients’ business needs.

As development begins, we anticipate changes of direction by implementing test-driven development. With a comprehensive set of tests to ensure the software behaves in a known manner, we can confidently make significant changes as new business needs arise, knowing that a solid test framework will uncover and pinpoint any side effects of the added changes.

We undertake a series of short cycles, or iterations, in our development process. At the end of each iteration, we deliver a functional, though incomplete, software application. This allows our clients to experience our software early and often, which yields critical discovery and feedback which guides the development process. We develop on a fixed schedule, which establishes an effective rhythm to our development, which helps our clients anticipate and accommodate their review of the application in progress.

In order to deliver on a fixed schedule, the set of features slated for inclusion in each iteration cannot change mid-iteration, and our developers need the freedom to make some adjustments to those features to best deliver as time allows. Within the solid foundation of the iteration schedule, our developers gain the freedom to deliver rapidly and effectively, and at the start of each iteration, the client has the freedom to respond to the delivered software with very informed feedback from their hands-on experience. Each iteration can then launch freely into the direction that best meets the clients needs, with the agility to capture the optimum solution for their business.

We are proud of our ability to respond nimbly, mid-project, to the changing needs of our clients. However, like the lithe-limbed athlete, our movements are not as effortless as they appear — there is much work required to provide that solid foundation from which to safely change directions.

Eclipse WebTools 2.0 Released, time to update your IDE

Tuesday, July 3rd, 2007

The Eclipse WebTools team has released version 2.0 of the WebTools Platform along with the rest of the Europa release. From the release announcement:

Eclipse developers will be particularly pleased with the debut of major features and/or specification updates to EJB3 JPA, JSP 2.0, JSF 1.2, Axis2 Web Services, Tomcat support, and source editing. This release also introduces Java EE 5 project support.

I’ve put together a new Eclipse bundle for everyone here at 2Paths. The package includes some useful plugins preinstalled (Subclipse, SpringIDE 2.0., JAutoDoc, and JSEclipse), as well as some performance and stability tweaks.

Download - Eclipse Europa 2Paths Edition (OS X, 155MB)

To ensure everyone is working with the same tools, you should configure your eclipse to automatically check for updates. This can be done by clicking on the Eclipse menu -> Preferences then Install/Update -> Automatic Updates.

If anyone has any problems with this release, just let me know and I can give you a hand getting things sorted out.