skip main content

Archive for January, 2009

Visualising our SVN commit history

posted by Duncan at 12:03 pm on January 30th, 2009

I saw a post on the other day named Ruby Swarms: Visualizing Rails & Git. The visualisations looked really cool, so I thought I’d create one myself. It is created using the code_swarm software and doesn’t require much work to produce something cool, tweak a few config files and bingo!

This is a visualisation of BBC Radio & Music’s SVN commit history up until Dec last year. The massive explosions are people freezing Rails projects. The colours of the crosses reflect the type of file being committed, and the size reflects the size of the file. It takes a while to get going, then goes crazy!

CodeSwarm vs BBC SVN commit history

TweetMe – Another simple WordPress plugin that Twitters

posted by Duncan at 6:37 pm on January 24th, 2009

[UPDATE] Twitter have now turned of HTTP authentication which means until the plugin is updated to use the OAuth, it won’t work. I haven’t got time to update the plugin right now, but will when I do. In the mean while, the plugin code is available on github, so maybe someone else could add this support. Thanks.

[UPDATE] If you install my new revcanonical plugin, then TweetMe will use auto generated short urls from your own website, instead of going to a 3rd party site.

I’ve written a simple little WordPress Plugin to get me moving again. TweetMe posts a tweet to Twitter when you publish a blog post.


If you do a search on Google there are loads of similar plugins out there. The problem is after trying a few, none of them did what I wanted, and many of them seemed far to complex for the task in hand. I simply wanted this. Nothing more, nothing less:

  • I enter my Twitter credentials once and they get validated.
  • I decide how I want my tweet to look.
  • When I publish a new blog post, it gets sent to Twitter.
  • If I update that post, I don’t want it resent, unless I choose.
  • That’s it….

So that’s all TweetMe does.

Nothing, then 4 come along at once

posted by Duncan at 1:42 pm on January 19th, 2009

I went to France last Thursday night for a weekend of SnowBoarding with my friend Nick, who’s staying in Bourg St Maurice. Friday morning was great, the snow wasn’t fresh, but was in good condition and we blasted around clocking up nearly 30 miles.

But in the afternoon, halfway down the Arc 1950 Boardercross run, I had my first big slam in 18 years, caught the back edge of my board at hi speed and bang! 4 Fractured ribs and lots of brusing.

Fractured Ribs

So, a bit of time off work is in order, and a good excuse to do lots of reading ahead. Pass me another pain killer…

Visualising Radio, pushing, not pulling

posted by Duncan at 10:21 pm on January 12th, 2009

This morning the department I work for at the BBC launched a new visual radio player. You can find out all about the motivation behind the product from my colleague Yasser, over on the Radio Labs blog, but as one of the engineers on the project, I thought I’d give a quick overview of the different technologies we used to create the experience. There will also be a technical overview on the Radio Labs Blog too.

Visualising Radio

So, the big news here is that we are pushing and not pulling. Ordinarily, you would request a webpage using your browser and a some data would be returned. The only way that you would then subsequently see any changes to that data, would be if you requested it again, or if something on that page requested it for you, maybe via polling.

We decided to go the other way, and push information to the page. When the user opens up the Visualising Radio Client, (a dumb, but not stupid Flash application), the first thing it does is create a XMLsocket connection back to a server. This means that we have a path back to that client, and it’s the same for all the others that are connected.

On the server side we have our admin console. This is a Ruby on Rails app (2.2.2) and allows the studio team to prepare content to send to the clients. We also have a bunch of background processes running that prepare our databases, and do various other tasks including sending messages to our message broker.

So, if the Radio team want to push content to all the people connected via the Visualising Radio console, they will activate the specific module they want to show and a chain of events occur. At at a high level, are:

  • A message containing a url to a resource is put on a queue on our ActiveMQ message broker
  • A process watching this queue, see’s the message and parses it
  • A request is made back to the resource url above, which returns some XML
  • This XML is then posted to a server
  • This server then sends this data off to all the clients connected
  • The client parses this XML and displays the information to the user

This all happens very quickly, and is very effective. Especially in the fast paced environment of a radio show.

The trial continues for the rest of the week with Chris Moyles, check it out and see what you think.

Fonebank rules for getting rid of old phones

posted by Duncan at 11:23 am on January 10th, 2009

I found fonebank the other day. It’s a service that allows you to sell your old mobile phones without any hassle. It’s brilliant!

I had a whole bunch of old phones, just the phones, no chargers or boxes I wanted rid of. I could have tried to sell them on ebay or the like, but I’d of had to make an advert, and go through the whole selling process, which I didn’t want to do. Fonebank was super simple. You select which phone/s you want to sell from a list, they tell you how much they’ll pay you for them there and then, and then you just post the phone/s to them. Once they receive it, they send you a cheque. I got the cheque today. It’s £150 I wasn’t expecting.

Oh and the recycled handsets are sold and re-used in developing countries. If you do use this service, could you recommend me using this code:

Referral Code: Rrx1sQ

they pay me £3 for every successful transaction, Yippee!

Resolutions, Resolutions, Resolutions

posted by Duncan at 5:20 pm on January 3rd, 2009

I spent Christmas and New Year at my wife’s parents holiday cottage in France. It was very, very relaxing and gave me time to think about 2008 and my plans for 2009. I don’t normally write down resolutions, just keep them in my head, but this year I thought I’d jot them down and see how they pan out. I’ve listed them as things I’m going to stop doing, and things I’m going to start doing or do more of.

I’m going to stop doing:

  • Twitter, and specifically watching tweets. I have realised I waste an enormous amount of time watching what other people are getting up too. I know it’s meant to be an ambient stream that you can follow if you choose, but inevitably you watch all the time because you don’t want to miss anything. I managed without it before so I can manage without it again.
  • BBC specific hacks. As a BBC employee I seem to spent a awful lot of my spare time hacking away at things that are BBC based or involve a BBC service of one kind or another. This is in part due to the fact that I know the terrain. These are normally well received and supported by close friends, but the amount of hoops I have to jump through and politics I have to dodge, and kid-gloves I have to wear as a BBC employee, aren’t actually worth the effort I put in, so apart from a couple of things I am working on at the moment, I have scrubbed my to-do list and have only left non BBC stuff on there.
  • Read so many RSS feeds. I currently have 112 subscribed feeds in Google Reader. Do I really need this many? I don’t think so.
  • Quit trying to learn everything, and be more selective. I have a tendency to want to learn everything. If something new in software comes out, I need to know it. If something gets written in a language I don’t know, then I want to learn that language. It means that my mind never gets a chance to relax, and by the end of the year I feel fried. This year off the top of my head I have learnt/improved my knowledge of: Ruby, Rails, JavaScript, Apache, mod_rewrite, mod_proxy, Git, Unix, Awk, Vim, PHP, Objective C, Cocoa, HTTP, REST, Perl, Python, Django, Merb, Google App Engine, iCalendar, ActionScript, QRCodes, Camping, Shoes FacebookApps, iPhone web Apps, ActiveMQ, jQuery, Jabber, XMPP, Erlang, Ejabberd, Capistrano, RPMs, vHosts, Passenger, Processing, DaemonTools, God, Taconite, VMWare, CentOS… etc. I think this proves my point. Some of this was needed for my job, but everything else was just extra load.

I’m going to start/continue doing:

  • Running. I did a fair bit of running in 2008 (I changed computers so this site only has some data), but it petered off towards the end of the year. This year I’d like to do more races and improve my speed over long distances
  • Spend more time outside. I do actually spend quite a lot of time outside, but this year I think I like to do more camping, walking, visiting.
  • Learning to relax so I can get a good nights sleep. In France I slept like a baby, 10 hours with no waking. This is something I can only dream of at home and is my goal. I’m not 100% sure how I’m going to acheive this one (any pointers greatly welcome) but I’m hoping by removing some of the stop doing’s will help.

I’ll be interested to see how many of these I can keep by the end of the year, but here’s hoping.

back to the top