I'm a software developer based in Nottingham, England.

This site is mainly concerned with code. There's a lot of content here discussing Atlassian Confluence and related technologies, and some stuff about web analytics too.


An alternative to renderConfluenceMacro(…)

In the “good old days” of Confluence plugin development, when plugins add-ons were still called plugins, people used to throw wiki markup into themes and plugins with wild abandon. Just like this: With the arrival of the XML storage format and the new XHTML Macros in Confluence 4, this kind of thing no longer worked. […]


Reading from properties on the file system for Atlassian Confluence add-ons

Jobin Kuruvilla wrote a neat little blogpost “Reading from property file in v2 plugins” for JIRA plugins. This got me thinking that while people have asked, no one had written up how to do the same for Atlassian Confluence. It’s relatively straightforward, but while Jobin shows you how to read the properties file from WEB-INF/classes/ […]


Extending AJS.params in Atlassian Confluence

Have you seen all the good stuff there is in AJS.params in Atlassian Confluence? OK, it’s not that exciting, but if you’re a Confluence add-on developer it can be a treasure trove for client-side DOM manipulation. As an add-on developer, you can add to AJS.params very easily. All you need is to create a Web […]


Creating new Puppet modules for Boxen

I’ve been using Boxen to create a consistent environment on my development machines. There are plenty of Puppet modules for almost all people, but I have a few extras requirements that I couldn’t find. I decided to create my own but had no previous experience of Puppet. To create your own Puppet modules, grab the […]


Wiping OAuth2 tokens from IBM Connections

Sometimes when developing OpenSocial gadgets for IBM Connections, you just need to purge the OAuth tokens. For example when you’ve rebuilt the system which hosts the OAuth2 provider, you’ll need everyone to do the OAuth dance again. It’s easy, but I normally forget the command. Here’s how: While you’re here, you may as well also […]


Responsive gallery – a user macro for Atlassian Confluence

The Confluence gallery macro is handy. In its most basic form, it adds all attached images into the page. Unfortunately, it puts the images in a table. Really? Well, I’m sure they’ll get around to fixing that eventually. Meantime, I’d like the gallery to display as many images as it can in a a row, […]