Archive for the 'Geek' Category

Page 2 of 102

Announcing the JIRA Plugin for Quicksilver

I spend a lot of time interacting with the JIRA issue tracking software – often small tasks that need to be completed ("Add support for x recipe format", "Fix x on the website"). Though I'm fond of the web interface, the amount of clicks required to create a new issue can become tedious.

I'm also a HUGE fan of Quicksilver, so it seemed natural to leverage its productivity-foo to speed up the process.

With that in mind, I'd like to present the brand-spankin' new "JIRA Plugin for Quicksilver".

The following movie demonstrates how to configure the details of a JIRA instance and create a new issue using Quicksilver:

Watch the movie (You may need to control-/right-click on the link and download the movie.)

To create an issue, enter Quicksilver's "text entry" mode (press "."), and type in the information in the following format:

issue summary [: issue description] @ project key [> issue type]

The description and issue type (a number corresponding to the type – by default, a bug is 1, new features are 2, tasks are 3, improvements are 4) are optional.

For example, to create a new issue called "New Issue", in the project "FOO", you would type the following:

New Issue @ FOO

After that, tab across, type in "JIRA" and the "Create new issue in JIRA…" action will appear. Hitting enter on that will create the issue and open a new browser window for the issue.

Download version 0.1 here.

Notes:

  • The JIRA password is stored in the Quicksilver preferences in PLAINTEXT for the moment. I will investigate storing it in the keychain in the future.
  • It will also spit out a bunch of logs into your console. No biggie.

MacBook Pro problems solved!

A while after I last reported about the battery problems I was having, I took the battery to NextByte in the city and shipped the battery off to the service centre. 3 days later, it was back in my hands and I'm happy to say it now works perfectly! No sudden discharges and the computer sleeps properly when there's no power left.

Cocoa SOAP/XML-RPC is a PITA; Core Data is the shizzle

Atlassian had its 3rd FedEx Day today, so Jens and I tried to tackle CONF-1837 and implement an offline client for Confluence. I've been meaning to try out Core Data for a long time, so this was a perfect opportunity (cross-platform issues aside).

I have to say that Core Data is just amazing! We were able to recreate all of the objects required to store Confluence Spaces and Pages using Xcode's data modelling functionality (including referential integrity – weeeee!). What blew me away was that we did not have to write any model, controller or view code to get the interface working:

I shall call it... iConf

The only code written for the entire app (please ignore its temporary ugliness) was to retrieve the Spaces and Pages via XML-RPC and pass them onto Core Data. Yep – that entire interface was displayed without writing any code! It's one thing to see it in a tutorial, but a totally different experience to make a 'useful' app.

and now… for the bad part. Jens and I spent half of the day futzing with Apple's WebServices framework to get Page retrieval working. The WebServices framework appears to be a black hole in Apple's Documentation. There's little information on the methods for making SOAP/XML-RPC calls in a Cocoa application, let alone code examples of how to do it!