Monthly Archives: May 2011

Exceptions are Bad™

**Exceptions should be used for exceptional circumstances!** Exceptions are to be used when bad shit happens. Not because you got passed some bad data (as in not passing validation), but because someone pulled the plug on your disk drive, or an earthquake hit your data-centre. They're for bad shit alright?

Continue reading »

Being careful with Maven’s SCM attribute

A few days ago I tried to cut my first [JIRA Studio][] release. The process is fairly straight forward, run these two commands and you're done: mvn release:prepare mvn release:perform During the prepare process, Maven will copy your code into a new tag named after the version number you've told it to release. I ran the preparation and it appeared to run fine, so I tried running the perform step. For some reason, Maven was ignoring the version number I had given it, and was trying to deploy

Continue reading »

This post contains general assertions about code performance and readability. Every such assertion every made in these areas can be easily disproved by a thought experiment, contrived test case or hyperbolic arguments. That said I think I am mostly right ;) Exceptions Are Slow Throwing exceptions is bad right. Its slow and makes the code unreadable. Well... kinda...maybe.. Webwork 1 has a flat configuration mechanism to look up names to values. Its like a chained hash map of configuration

Continue reading »

Java system properties for daemontools

At Atlassian we use daemontools to manage all our server processes, both for our internal services as well as our customers hosted services. One of the utility programs provided by daemontools is `envdir`. As the documentation suggests, this is used as a convenience for setting environment variables. So commonly for our tomcat apps, we'll have a directory structure like this: /service/mytomcatapp/env - JAVA_OPTS - CATALINA_HOME - CATALINA_BASE and then our `run` command will look like this: envdir

Continue reading »

Codegeist Submissions are Closed, Bring On the Votes

Yesterday was the last day to submit a plugin to Codegeist, our plugin coding competition. But the contest isn't over just yet! You still have time to get votes! Get Votes and Win Cash Three of the four prize categories will be chosen by Atlassian judges, based on usefulness, creativity, elegance, and completeness. The judges have 60 entries to go through, so they'll use votes to help them sort through the entries. The fourth prize category, the Community Prize, will be given away to the highest

Continue reading »

Short feedback cycles should be a main goal for every development team. Ideally this feedback cycle is not only limited to automated tests, but to real life user feedback. At Atlassian we are pushing hard to continuously deploy our products internally which enables us to gather and react to feedback early in the development cycle of new features. But this also means that deploying new versions of the applications has to be easy and automated.

Continue reading »