Highly resposive Unfuddlers

December 6th, 2007

To follow on from my last post, I have spent the day to-ing and fro-ing with the Unfuddle.com guys and I have come up with an SVN hook for non-UF-hosted svn repos.

Here’s for code for anyone interested

Move over lighthouse, Unfuddle it is

November 30th, 2007

So, I blogged earlier about Lighthouse and how much I was in love it with. It has all the features I like but unfortunately for me, it missed a few critical ones my Boss wanted.

Enter Unfuddle

We’ve been using this for a few months now and it works a charm. It’s a rails app and is run buy some very passionate dudes in Hawaii.

The feature that really stands out for us is the work flow for tickets. See image below.

Boss opens it, I accept it, I resolve it, boss closes it.

Boss can reopen it if need be. So easy for me to see what tickets are left to work on in this release, also what tickets need to be verified by him before I can push the release live.

Anyone who is dealing with a large ongoing site needs a decent bug tracker, this one is up there with the best i’ve used, both OSS and commercial.

Triple J Twitter

August 7th, 2007

To scratch an itch of mine earlier this week I setup a new twitter account that broadcasts what program is currently on on Triple J

The account is at twitter.com/whatsonjjj

The code looks like this, it’s obviously specific to JJJ but could be easily modified to any other static HTML source. It gets run from cron on my server at one and 31 minutes past the hour.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
require 'rubygems'
require 'hpricot'
require 'open-uri'

now = Time.now
hour = now.hour.to_s.rjust(2,"0")
minute = now.min < 30 ? "00" : "30"
day = now.strftime("%A")
search =  hour + ":" + minute
url = "http://www.abc.net.au/triplej/guide/#{day}.htm"
doc = Hpricot(open(url))
doc.search("strong").each do |ele|
  re = Regexp.new("^" + search+"-")
  if ele.inner_text.match(re)
    time = ele.inner_text
    program = ele.parent.parent.parent.search("a").first.inner_text.gsub("'","&apos;")
    puts [day,time,program].join(" ")
    system("curl --basic --user 'whatsonjjj:xxxx' \
                --data-ascii \"status=#{[day,time,program].join(" ")}\" \
               'http://twitter.com/statuses/update.json'")
  end
end

Simple walk-though:

Grab the time now, figure out if we’re on the hour or the half-hour. Grab today’s guide. Parse it, look for a string tag that starts with HH:[00|30], grab the name of the program, send that over to twitter via their API

There is probably a more elegant way to get the name of the program than that, but that works.

I plan to grabbing out some of the other data too, host name and the like.

Here we go, here we go, here we go

August 7th, 2007

So today marks a new dawn of blogging for me. I have tried before and have failed miserably, I just didn’t think i had anything interesting to say.

As it turns out, some people think I do have interesting things to say. Last month at our Rails Meeting I gave a talk about how we do things over at iseekgolf.com. It was the first time i’d spoken publicly for, maybe, 10+ years? I think i was a little rusty to start with but soon found my groove. I have been known to be able to talk for way to long on things I know about. The video was featured video of the day on the 6th of August over at viddler

Anyway, the guys on IRC prodded me into starting to write some of my ramblings down, so here we go. Watch this space for a plugin i wrote today to handle a specific caching problem I was having.

Here’s the video.