Recent Reading List

  • Unweaving The Rainbow - Richard Dawkins
  • The Odyssey Of Homer (For The Lulz)

My thoughts on Ritalin

Its not until you see the level of work you push out in four hours that you realise that the Ritalin is taking effect. I’m always surprised an hour into my work, just how productive I have actually become and how much focus I have on a task.

My impulsive tendencies to procrastinate subtly fades replaced by a high level of interest in getting the important complete.. ..a level of calm that makes the sometimes overwhelming depth of a problem clear and approachable.. ..a sharp level of focus that makes completing the mundane, effortless. 

When the fog creeps back in and the mind becomes fuzzy, when the urge to defer the boredom and seek out distractions increases, thats when you know your’e due your next fix

[Flash 9 is required to listen to audio.]
Plays: 88

Really fascinating rendition of the super mario theme by the london symphony orchestra. Catchy ;) 

Fixx notifications with google app engine

I spent a couple of hours this weekend putting together an appengine app to hook into the fixx api. I chose appengine for two reasons: First off, its python and i’m aching to do some python. Our website runs with python and although I put most of the frontend together, I’ve had little say or involvement in the backend. Its all django based which is sweet, but its too far developed now for it to necessitate my input. Secondly, I’m loving the cloud at the minute. google appengine has some sweet infrastructure in place that I really wanted to start tinkering with and as its a bare bones API, it gives me a lot of scope to make something new.

Anyway.. ..So I spent a bit of time a few months back putting together a php wrapper for fixx 1.9 and I’ve only used it in a few places to pull out some arbitrary data into my website but I’ve never really touched it since. It was more of a “Can I Do This?” kind of project. However, reading through the appengine API, the XMPP services immediately caught my eye.

It took about two hours to setup a google app, configure the routes using the google web framework, knock together a few templates and port enough of the fixx API to get out the data I needed to have a prototype notification system in place. Once I had the app pulling data from fixx, pushing it out using google XMPP api was a breeze.

The result? A sweet little chat bot that notifies you when issues have been assigned to you ;)

The current version is a very early prototype, is bound to break at some point and needs a lot of love frontend but still, its possible to register your copy of fixx using a public domain name and allow anybody for that domain to sign in and subscribe to notifications.

The roadmap is a bit up in the air at the minute but the long term goal is to have a bot that will keep you informed of changes to fixx and allow you to pull and push information to and from your fixx instance. The long term goal is to allow commands to be fired at it, for example :

/comment 238 I’ve finished working on this * To comment on an issue *

or

/log 838 2:40 added some awesomeness * To log time *

or

/resolve  882 duplicate This issue is a duplicate

..You get the idea ;)

When I’ve got a better idea of the features I’m going to add, I’ll publish a roadmap and drop the code on a google repository. For now, if your’e interested let me know and I’ll make a copy available for download.

Kickass Bluegrass

While I’m waiting for the ritalin to kick in, I normally find a bit of bluegrass gets me in the zone.

BlueGrass Mix.. ..enjoy :P

Fooling around with fixx 1.9 api

As the release of fixx 1.9 is drawing closer, I thought I’d jot down my thoughts about the new filtering capabilities of changes made to the api and some pointers on how you can leverage it using filters.

Fixx 1.9 has seen a revamp of a lot of the UI, a general polish that tidies up a lot of loose ends left from 1.8.* that we’ve been keen to get in for some time now. I’m loving the UI tweaks and have had a lot to do with some of these improvements but the big thing thats been getting me all excited is the inclusion of filters in the API.

As of 1.9 it is now possible to request issues using filters, something that, for the past few month has caused a headache for me and my work on a set of tools to accompany fixx notibly a time tracking tool and a PM tool to aid issue and release management.

So what can the new filters in 1.9 do that they couldn’t in 1.8.*?

Well for a start, in order to get all issues for a project the usual route would have been

<yourfixxdomain>/api/projects/<projectid>/issues

which was ok but didnt filter those issues. If you had a thousand closed issues for this project you’d have a thousand issues returned, something I felt was always a little anal!

Another example, getting issues assigned to a user

<yourfixxdomain>/api/users/<userid>/issues

again, does the job but still returns ALL issues assigned to that user.

So what makes the new filtering functionality cool for 1.9?

well, the two queries above can now be represented as follows:

<yourfixxdomain>/api/issues?qProjectId=<projectid>

and

<yourfixxdomain>/api/issues?qAssignedTo=<userid>

and of course they can be combined to form

<yourfixxdomain>/api/issues?qAssignedTo=<userid>&ProjectId=<projectid>

Another good example is my PM tool that runs comparisons against changes to issues. before filtering I had to pull back ALL issues from fixx every time i ran a comparison which became both a memory and processing hog. Now i can break down my requests into chunks based on project, area, user and resolution as follows

<yourfixxdomain>/api/issues?qAssignedTo=<userid>&qProject=<projectid>&qResolution=<resid>&qArea=<areaid>

With multiple threads making small requests, my PM tool now runs smoother and feels like its more responsive almost providing a live feed of changes made to fixx.

One final thing… …for those who have already tinkered with the filtering, you probably have a good idea of how to construct a filter using the querystring parameters.. ..for those who havent tinkered, heres a quick list of the filter parameters you can use:

  • qPriority=<priorityid>
  • qCreatedBy = <userid>
  • qAssignedTo = <userid>
  • qStatus = Open | Closed | Resolved | All
  • qResolvedBy = <userid>
  • qAssignedTo = <userid>
  • qProject = <projectid>

Note : The following query parameters are reliant on a valid project id. If you pass in a project id and one of the types below is not within the project specified theres a good chance you’ll get no results returned

  • qType = <typeid>
  • qFixFor = <versionid>
  • qAffected = <versionid>
  • qResolution = <resolutionid>

OK.. ..thats about it. I’m going to spend some time tinkering with this and possibly provide some tutorials on how to optimise your’e filter requests and some good practices for using filters. When I get some more time I’ll also start to publish information about my companion tools.

[Flash 9 is required to listen to audio.]
Plays: 28

Name that sound

Toggle Hidden Files in Finder using AppleScript

Tested on Leopard 10.5.6, I totally ripped these solutions from various sources on the net after about 5 minutes of googling.

The solutions below arent great but until I can be bothered to conjure my own more elegant implementation or have time to google further, both are enough for a mac novice to quickly view hidden files/folders without resorting to yet another app to plug a missing feature in OSX.

Solution 1 - The AppleScript Way

Navigate to ‘/System/Library/CoreServices/Menu Extras’ and double tap ‘Script Menu.menu’. This should add a script icon to your menu bar.

Grab the following apple script…

tell application “Finder”
activate
set previous to “FALSE”
set previous to do shell script “defaults read com.apple.finder AppleShowAllFiles”
display dialog “Show Hidden Files… ” & previous buttons {“TURN ON”, “TURN OFF”} default button 2
copy the result as list to {buttonpressed}

if previous is “TRUE” and the buttonpressed is “TURN OFF” then
do shell script “defaults write com.apple.finder AppleShowAllFiles FALSE”
quit
end if
if previous is “FALSE” and the buttonpressed is “TURN ON” then
do shell script “defaults write com.apple.finder AppleShowAllFiles TRUE”
quit
end if
end tell

delay 1
tell application “Finder” to launch

… and save this as “ToggleHiddenFiles.scpt” inside /Users/your-user-name/Library/Scripts folder. The folder may not exist so you will have to create it if it doesn’t.

Solution 2 - The Terminal Way

To view hidden files and folders open terminal and throw the following at it:

$ defaults write com.apple.finder AppleShowAllFiles TRUE

$ killall Finder

…and to hide them again…

$ defaults write com.apple.finder AppleShowAllFiles FALSE

$ killall Finder

other news is designed by manasto jones, powered by tumblr and best viewed with safari.