About

Who?

Defrocked mathematician, now working as a computer scientist in the area of distributed computing and semantic web. Linux hacker. Administrator of UK Linux User Groups server. Amateur tenor. Fond of Real Ale and Real Food (and surreal food).

Repository issues: The Custom Application

After a project meeting today, it was suggested that I keep a note of all of the "interesting" issues that I encounter with the various data repositories I encounter on the project. So, here's the first of them.

At least two of our repositories consist of custom-built applications. One of them is a fairly large piece of PHP, backed by a MySQL database. The PHP for this repository is complex, and only understood by one person. The database schema is also fairly cryptic, and almost entirely undocumented. To make matters worse, the web user interface implemented by the PHP is actually a GUI, developed with (I think) Google Gears. The only way of querying this data store through an alternative interface is to access the database directly1.

Drupal and blog filtering again

After some struggling over the last couple of days to sort out tag-based blog aggregator filtering in Drupal, here's how I did it, with the extra patches and sub-modules I needed to make it work.

Drup, drup, drup...

... the sound of blog filtering through the percolator.

I've been putting together a website for my current work project, in Drupal, and wanted to aggregate items from many blogs, filtered by keyword on the item's tags. Now, Drupal's default Aggregator module doesn't do this. The News Page module seems to offer the feature, but I couldn't get it to display any blog posts, which was rather a shame. I eventually wound up with the FeedAPI modules.

Playing with Drupal again

I'm playing with Drupal, to see how I can aggregate RSS news items with particular tag keywords from several sources into a single place. It seems that the Drupal Aggregator module doesn't do that, but that the News Item plugin can be used to make it work.

This post is more of a test of that mechanism, than actually saying anything interesting. :)

Review: Pro Git by Scott Chacon

When I agreed to review this book, through the auspices of HantsLUG, I had almost no experience of using Git. However, I'm an experienced developer, and have used several revision control systems in the past (CVS, Subversion, Monotone). I originally expected the book to be "the pro bits of Git", covering the advanced uses and leaving out the basic parts, so I was prepared to have to do a significant chunk of reading before I could get into this book. That turns out not to be the case.

Evil Plot, Part 1

From our reporter in the Department of Vague Stuff.

I have an evil plan. It's been brewing for a while (subversion tells me since April 13th). With a few trusted Persons of Hench in the know, we've been working at a slow but steady rate on some code:

hrm@joshua:wor $ find \( -name \*.py -o -name \*.js \) | xargs cat | wc -l
2313

Adventures in Matroksa

I've recently re-encoded a whole load of MPEG2 video I've got into MPEG4 (using H.264). I thought that I'd put it all in MKV containers. Sadly, this turns out not to be the case: HandBrake's presets explicitly set the output container — mostly to MP4. So I'm now left with a large number of videos in a format that I didn't intend. What's worse, I can't easily flip forward and back in the files I do have, using either my Popcorn Hour or any of the video players I have on my Linux desktop. Here's what I did to fix this sorry state of affairs.

Why I love NFS

I export a bunch of directories over NFS. One of those is the filesystem I record TV onto. At the moment, the recording machine is working on two separate channels, all streaming to the NFS filesystem.

My server just crashed. I rebooted it.

The recording machine is still quite happily going. I don't know if there's any lost data, but I doubt it. More news after those files get processed tonight...

You know you need a break when...

... your compiler starts rejecting perfectly valid C++ like this:

class ContextHandler: public DefaultHandler {
...
}

Of course, javac doesn't like that very much. D'oh!