Present Perfect


Picture Gallery
Present Perfect

Just as I was about to consume one of my favourite home-made Belgian delicacies on the net …

Filed under: General — Thomas @ 10:39


... I get greeted with this message:

We don't reccomend using Ubuntu Server for servers as it seems to have crashed due to load. Unfortunately our current host is unable to provide installation of any other OS - as well, they are currently not able to restart our server.

Well damn.

any distributed private RSS reading tools out there ?

Filed under: General — Thomas @ 11:41


Hey web, lazy is my middle name.

I am in the market for a piece of software that lets me read RSS feeds. Lots of them exist. For my usual RSS feeds, I am actually completely happy with BlogLines. It just works, and being web-based it saves my read status as I move from machine to machine.

What I now want is a piece of software that I can trust with a bunch of private URL's (for example, for bug trackers of private projects) that I would not trust any online service with. I want to get RSS feeds of all my TODO items in various bug trackers and other places. I want to keep the same advantage - whatever computer I use (under my control) I want to save the state of what I've read. Two obvious ways of doing that are 1) having it be web-based and/or 2) having some sort of - preferably text-based - state of what's been read that I commit to svn (as I do for my todo list).

I would give this application only my todo RSS feeds, to resist the urge of reading other stuff that aren't my tasks :) But I want to have an easy tool to get a glance of the state of items assigned to me.

Anyone using anything that fits the bill that they recommend ?

iCalendar, UID and Google Calendar

Filed under: General — Thomas @ 00:20


This weekend, with the help of Zaheer, I was trying to write an application that calculates the bonus for our support guys.

The idea is pretty simple. We have one Google Calendar in which they assign themselves support duty. The idea is that every moment is covered and no shifts overlap. They put their name in the summary, and that's it.

Another calendar contains "factors" - support duty on Christmas has a higher factor than during the day.

So, the idea was to write something that scans both calendars, counts each person's support duty, totals them, and prints out what we should be paying them. Simple enough, no ?

After a bunch of hacking and rewriting, I've come to realize that I don't really understand what the goal of UID: in the iCalendar RFC is.

Specifically, this UID is supposed to be "globally unique" to the creator of the event.

Now, in our case, I'm getting an ics file from the Google Calendar that contains entries with duplicate UID's. After some experimenting, I nailed it down to the following sequence of events:

  • create a new calendar
  • create a two-hour event on monday, ask it to repeat all weekdays, and have the rule be active for only a week - scheduling 5 two-hour events
  • now move the first instance of this event one hour down. It might or might not ask you to update all events in the series - choose to update only the one event

Visually, you now see the first event at a different start time, and the other four as they were.

Now, export the calendar - download the private ics URL. The ics file contains two events. Both have the same UID. One event is the first instance, which was moved. The other is a recurring event as you defined it originally - including the first event as it originally was!

So, Google Calendar seems to think that the first entry for the first instance is somehow more specific than the recurrence rule, so does not consider the recurrence rule to apply on the first day.

I tried importing the ics in Evolution - as I expected, it only shows the first event, and none of the instances of the second (recurring) event. I think this is correct behaviour, in the sense that it ignores additional events with the same uid.

So, any iCalendar experts out there that can comment on what's going on and how my program can detect that it should not schedule an instance of a recurrence rule on a certain date, because some other event has the same UID ?

Festival season

Filed under: General — Thomas @ 13:13


I'm seriously considering going to This ATP festival in the UK. I've missed Explosions in the Sky on several occasions, and now they've assembled a pretty good line-up for a festival.

Long shot, but anyone else thinking of going ?

(Come on, Rombo, you know you want to...)

Trac and OpenSearch

Filed under: friction,Hacking — Thomas @ 00:36


Every time someone posts a ticket number in #fluendo I have to go to firefox, go my bookmarks toolbar, click Fluendo, click Trac, click Flumotion, wait, then on the page click Search, wait, and type my search term.

Annoyingly slow, all in all.

So, last week I decided I wanted to know how that search dropdown in Firefox works.

Turns out it's really simple - it uses OpenSearch, which is a standard, and also supported by IE7. There's a nice simple page explaining it, and it was easy to set up a simple test (after figuring out that for some reason the xml description only allows http or https URL's, not file://, so you need to set up a web server).

So, with all that information on hand, I got on a plane to Barcelona on Saturday and started to hack. Trac plug-ins make for excellent plane hacking material - Trac is well-designed, relatively easy to browse around in, and plug-ins are usually pretty small, making it easy to get something done in the 75 minutes of computer time I get on a plane.

A big time sink on setting up a plug-in is the "how to get started" part, ie creating the directories, the plugins, setting up test trac, ... So this time I took some notes for me personally - poke me if you think I should make them public.

By the time we got to landing I had a simple prototype working, and I polished it off yesterday.

Then I went on IRC to ask a question on how to do something, and I learnt that the trunk of Trac actually has opensearch support built in. Sweet ! That means I won't have to port this 0.10 plugin to 0.11 when we upgrade.

I fixed up my plugin to be more like the trunk opensearch integration so it will be a seamless transition when the time comes.

I love it when a 2 hour hack reduces the number of steps for an action I do tens of times daily from 9 to 1. I used to think of the technical part of my job as removing friction, and this is definitely a good friction killer.

If you're interested, get the plugin, read the README, and install it.

Next Page »