Archive for August, 2008

The point of Continuous Integration?

I have always thought the point of Continuous Integration was feedback. By doing builds and running tests (unit, integration, and functional) as often as possible it provided the team a high degree of confidence that the application worked. Artifacts are simply a nice side effect.

I was in a retrospective today where the importance of the build seemed to focus more on the artifacts. We were discussing pipelining our build and the discussion centered around breaking the build down by artifacts as opposed to areas of feedback.

Personally, I find this a little strange. The last several projects I have been on, the various builds we had were all about providing feedback as quickly as possible. To this end, the first build ran unit and integration tests, the second build ran all the functional tests (think Selenium), with other builds running more in depth functional and acceptance tests.

To quote Martin Fowler, “The whole point of continuous integration is to find problems as soon as you can.” To me, this sounds like information and feedback, not artifacts.

My question to the greater, and more experienced, community is what do you think, should pipelining a build be about artifacts or feedback or a bit of both? Currently, one of our builds takes 2+ hours and we are looking to cut that down. I am not sure we can do this if we concentrate on artifacts instead of feedback. What do others think?

Note to self; Mockito cannot stub final methods

I realize this is clearly stated on the Mockito website, but it caught myself and my pair up for a little while. we were trying to stub out a ResourceBundle using Mockito and found that the unit test kept trying to find a concrete implementation of the ResourceBundle. The reason, we figured out is that the ResourceBundle.getString() method is final and Mockito cannot mock or stub final methods. Something to keep in mind when working with this mocking framework.

Back to Java

I am on a new project located in Melbourne, Australia. This time I am back to the world of Java. Some of the new to me technology includes Hibernate Validations, JAXB, and JPA. It looks like an interesting project with lots of XP practices being followed. Everyone is pairing, which will be a nice change for me as I have yet to be on a project where pairing was being followed. I am going to attempt to post entries several times a week about the stuff that I am learning.

How to treat customers

I recently bough some 3d animation software and accidentally bought the Windows version instead of the Mac version. The software was purchased from e-on software.

Initially, I wasn’t sure what to do so I phoned their help line, no luck, the offices were closed. This was a Saturday, so I had to wait till Monday. I checked through the forums and found some hope; some people had moved from Windows to Macs and the company had allowed them to download OS X versions for free.

Finally, I stumbled across a technical help forum where I could post my problem. By Monday morning, one of their reps had posted a link where I could download the Mac version. Thanks guys.

In addition to being very helpful, e-on offers an amazing way of moving through their software. At the bottom they have Vue Easel. I don’t recommend it as it has to many limitations. Next in line is Vue Esprit. I purchased Easel while it was on sale for $49.00 and quickly found its limitations. I was then able to sidegrade to Esprit for $99.00, the purchase price is $199. So I was able to save money.

The next product in line is Vue Pro Studio, priced at $399. However, if you can’t afford 400 dollars, you can purchase Esprit and slowly upgrade. Esprit’s base functionality can be expanded through the use of 5 add-on modules. Once you have all the modules, you have Pro Studio. Now upgrading via the modules is more expensive then a straight sidegrade, but it does allow you to do it over time.

Once you have Pro Studio, the jump to their Professional level software, Vue Infinite, is a mere sidegrade of $299 ($795 regular price). In the end, you probably end up spending more, but it does allow for a nice upgrade path over time. Also, the company has a habit of putting their software on sale on a regular basis, making it even easier to break into the world of 3d animation. A field that is notoriously expensive.

Imagine if more companies offered this kind of flexibility with their products. It would probably cut down on the amount of warez and illegal downloading of software that goes on because people could afford it by buying the lower end products and then slowly working their way up as they learned the application.

Capturing Java Stacktrace as a String

Here is a little code snippet for a method that will capture an Exception’s stacktrace as a string so you can output it on the command line or in a simple log statement.

Modern Love

Definition: a couple on a bus holding hands each listening to their own iPods.