I'm a big believer in learning by example. When I'm about to start working with a new library or piece of technology, I first look for prior art to demonstrate the common patterns and idioms associated with its use. For Atlassian plugins, this used to involve trawling through Bitbucket for decent examples or downloading plugin source jars from maven and browsing through them. But there is an easier way! The Atlassian SDK ships with a set of interactive scripts for creating a plugin and customising

Continue reading »

So you want your JVM’s heap…

Abstract Dumping a JVM's heap is an extremely useful tool for debugging problems with a J2EE application. Unfortunately, when a JVM explodes, using the standard jmap tool can take an inordinate amount of time to execute for lots of different reasons. This leads to extended downtime when a heap dump is attempted and even then, jmap regularly fails. This blog post is intended to outline an alternate method using standard tools in the Unix/Linux arsenal to achieve a heap dump that only requires

Continue reading »

We're thrilled to introduce the latest addition to the Atlassian distributed version control system (DVCS) family – SourceTree for Windows. SourceTree is a free Git desktop client for developers on Windows. Say goodbye to the command line and use the full capabilities of Git through SourceTree's beautifully simple interface (and stop being jealous of what your Mac friends are using). A simple, powerful Git client SourceTree for Windows simplifies how you interact with Git repositories

Continue reading »

I love scouring the release notes of my favorite tools for hidden (or not so hidden) gems. It's a little bit like Christmas every time. I get that nice feeling of anticipation and curiosity when new versions are released of my faithful OSX open source window manager Slate, on Rails, Django, CoffeeScript and of course Git and many others. Upgrading, upgrading, upgrading So the new Git 1.8.2 release is out. Of course this means upgrading to the latest version. It should be relatively pain free: Just

Continue reading »

Being an efficiency and productivity freak, I always try to streamline and automate repetitive tasks. As such, my antennas went up immediately when I started hearing about Provisioning frameworks; I began to incorporate them more and more in my development workflow. A perfect opportunity to take advantage of this came up while ramping up as Developer Advocate here at Atlassian. Have you heard of Vagrant yet? It is awesome. Why? It automates much of the boilerplate work we developers have to endure

Continue reading »

One of the most highly requested features in Stash has been commit hooks. Git has an in-built mechanism called "hooks" which allows you to hook into just before and after a push event. In Git, hooks are scripts that must be placed on the filesystem in each repository, which requires a system administrator with the appropriate access to copy scripts around manually. That's not exactly a great user experience - we can do better! We started dreaming up ways to make Git hooks more accessible to the

Continue reading »