Jonny Lamb Jonny Lamb's personal website. Fri, 28 May 2021 22:04:13 +0000 en-GB hourly 1 Sciopero Tue, 28 Oct 2014 11:11:36 +0000 Continue reading "Sciopero"]]>

Public transport strikes in Rome are so frequent that it’s hard to remember when they are. I wrote a GNOME Shell extension to help remind me when there’s one either coming up or in progress. Find it on It gets its data from another little service I just made.

A Roma gli scioperi dei mezzi pubblici sono così frequenti che spesso è facile dimenticarsi quando ci sono. Ho scritto un’estensione per GNOME Shell per avvisare quando c’è o si avvicina uno sciopero dell’Atac. La puoi trovare su Funziona grazie ad un altro piccolo servizio che ho creato.

Automatic Connections Mon, 04 Oct 2010 13:30:00 +0000 Continue reading "Automatic Connections"]]> My network blocks SIP on 3G, so when I start using its 3G service after leaving a wireless network my N900 constantly complains about not being able to connect. Although this is my specific annoyance, there are many similar requests, such as I only want my work XMPP account enabled when I’m at work.

I wrote a simple application to achieve this. A list of wireless networks is configured per instant messaging account. libconic is used to listen for connect & disconnect events. When said events occur, accounts are enabled or disabled as configured.

I just uploaded it to extras-devel. It’s called Automatic Connections.

Monorail Thu, 14 Jan 2010 14:44:00 +0000 Continue reading "Monorail"]]> Recently, I’ve been working on a file transfer app for the N900. It’s called monorail and I uploaded it to extras-devel last night, so you can try it out right now.

I implemented an OssoABookContactView with support for filtering on Contact Capabilities (or a draft of it, at least) as old-style caps aren’t great. This gives a nice list of address book contacts who have at least one account that should support receiving file transfers. It would be nice if these extra caps could go into the address book which is where they belong, but it won’t.

If someone would find this widget useful, I’ll clean up the code and maybe throw it in its own library.

I also started to implement a sharing plugin, but it turns out it’s poorly documented and appears to be impossible to do anything useful for my use-case, like popping up a dialog when the user taps “Share”. The example isn’t very exemplary, but does contain some amusing code.

This sharing plugin is only half-written and impossible to debug. If anyone has any pointers on writing these plugins, I would appreciate them.

It’s a shame that although Hildon widgets can look really good on the device, it can often take some fiddling to make them look consistent with the rest of the UI. Additionally, oddities in some widgets can leave you baffled, or amused.

The most annoying thing I have come across regarding this app is just how little I can get it integrated. The file manager is all hard-coded so there’s no way to add a Send to Contact menu item, and no buttons can be added to the libsharing dialog (which appears when the user shares a photo) which is annoying as it looks like it’s missing this feature.

Telepathy Extras Thu, 14 Jan 2010 12:30:00 +0000 Continue reading "Telepathy Extras"]]> A few weeks ago, I got a cool Christmas present from work. It’s pretty sweet, and I’ve been writing some apps for it. I’ll try and blog about them here.

A while ago, I wrote some a number of account plugins for Maemo 5, so that other Telepathy connection managers could be used and well-integrated into the N900’s Contacts and Conversations User interface. This enables the following extra protocols:

There are still a few problems which I’ll try to iron out soon enough but they appear to be working pretty well. The best thing about it is clearly the integration with the rest of the phone, as demonstrated by Marco in the screenshot above.

The PR1.1 update, which is due today, also opens the door for enabling other protocols dynamically by providing libpurple plugins. I will be adding Facebook Chat support soon, and someone else has made a package for Twitter.

This is in extras-testing for you all to download and try out. You can find all the packages in the Network category of the Application manager. The Extra protocol plugins for Conversations and Contacts metapackage (telepathy-extras, in reality) pulls in all the cool account plugins and connection managers of the time. File bugs from the package link.

Debugging Telepathy Sat, 02 May 2009 00:31:29 +0000 Continue reading "Debugging Telepathy"]]> Sometimes debugging Telepathy can be a pain. I die a little every time I see just run gabble from the command line with GABBLE_DEBUG=all on #telepathy.

Daf started implementing a debug interface in gabble but he fled the country, so I finished it off, and added a hot new dialog to Empathy.

Additionally, if you are a Telepathy developer, this may be an interesting addition to your shell startup file:

g () {
    project=$(basename `pwd`)
        libtool --mode=execute gdb -q --args ./src/$project --g-fatal-warnings
Debexpo Wed, 09 Jul 2008 01:41:46 +0000 Continue reading "Debexpo"]]> debexpo (Debian package exposition) is a web application that allows one to run a user-friendly public Debian package repository with social interaction that one may be used to from social networking sites. debexpo will be the basis for the site but will be useful for others as well. debexpo is the project I am working on for this year’s Summer of Code for Debian under the watch of Christoph Haas.

debexpo is more than just a web application though. It was based on suggestions by you, and therefore it has some nifty features:

  • Uploading is done through HTTP PUT directly in debexpo, and handled immediately. This means that packages can be available within seconds of you uploading the package instead of having to wait for a cron job running an importer.

  • debexpo supports plugins for several stages of package life-cycle. The main use of these are for QA purposes on the package, such as automatically running Lintian, checking the watch file, or checking bugs closed actually belong to the package in question, but there is scope for much more. Plugins are easy so you can customize a repository to check for whatever you want. Other cool plugins allow features such as pulling an orig.tar.gz from Debian if it is absent from the upload and not in the repository already. Plugins provide you the option to customize your repository for any purpose.

  • Users will be able to have their own personal repository (much like Launchpad’s PPAs) to host binary packages. This is simply achieved by creating a new user, uploading, and adding the appropriate entry to your sources.list.

  • Sponsors will be able to tell debexpo what kind of packages he or she likes to see, and a filtered package list will be shown. These kind of filters will include whether it’s a python package, or C library, whether it uses CDBS or straight debhelper, or even whether the maintainer is in the New Maintainer process (this is clearly a mentors-specific feature).

  • Packages will be able to be commented on by other users, in the same way as Ubuntu’s REVU tool. This keeps package discussion in one place, and Debian Developers can claim to have uploaded the package. This is useful to stop the scenario of a Debian Developer reviewing a package that has requested a sponsor, and then finding the package has been uploaded already after the initial uploader left no mention of this.

  • And more to come.

Development can be tracked through its Trac instance:, where I invite you to submit tickets or even submit patches! Its Git repository is public: Last but not least, the there is also a low-traffic mailing list.

I invite you to try it out, and report bugs. Posting to the list is a great way to get in contact.

There is little visible eye-candy in your browser to show for the work so far as nearly all the work so far has gone into the backend. A sneak peek at what it looks like at the moment is available though:

As you can see, the theme is somewhat familiar. Hopefully, as the SoC program nears an end, this will be fixed.

This is my first post to Planet Debian.

gitweb with Enscript Sun, 06 Jan 2008 01:57:42 +0000 Continue reading "gitweb with Enscript"]]> I got a little bored of looking at gitweb with no syntax highlighting, so I shoved in support for Enscript:

Also, it’s easier to select source straight from the browser without the line numbers prefixing every line – something one does every day, of course:

Of course, there are a few bugs and limitations in this. I just wanted to blog with some pretty pictures, I suppose. Now I can see why I’ve never touched perl before though.

Sundial Fri, 10 Aug 2007 15:47:26 +0000 Continue reading "Sundial"]]> Recently I started adding CalDAV support into Bongo. This is actually progressing very well. I’m working on the sundial branch in Subversion. If you want to try it out, then you can checkout using:

svn co

And then install how one normally would from source. To try out the CalDAV support, you must be running standalone – Apache will simply not work at the moment. Point your client at:


You should be asked for username and password, but the auth system is a little broken at the moment. It is next on my list of things to do with Sundial, and hopefully I’ll commit a fix for that tonight, but I might not have time.

Remember that this is three or four days old and not only will it have bugs, but if you glance at the code, there are many TODOs floating around, so this is very alpha quality software. With respect to CalDAV client support, I’ve done most of the testing on Mozilla Sunbird and in my opinion that has the best CalDAV support, but Evolution should work (it did last night)! Come find me on IRC if you have any questions.

SimpleFeed Mon, 26 Mar 2007 10:01:13 +0000 Continue reading "SimpleFeed"]]> I was looking for a MediaWiki extension that could read RSS feeds and output them onto the page. The trouble was, the extensions I found either didn’t work, or were very uncustomisable. For example, for one that actually worked, adding this to the wiki page:


forced this output on me:

<h3><a href="">Minimo Bongo</a></h3>
<small>22 March 2007, by jonnylamb</small>

<h3><a href="">Durham Visit</a></h3>
<small>22 March 2007, by jonnylamb</small>

<h3><a href="">Musically Active</a></h3>
<small>22 March 2007, by jonnylamb</small>

<h3><a href="">++age</a></h3>
<small>5 March 2007, by jonnylamb</small>

This is not ideal. Instead of looking further for a better extension, I wrote one. It is called SimpleFeed and it lives on the Extension:SimpleFeed page on

It is simple for two reasons:

  1. It uses the SimplePie feed parsing library
  2. It’s exactly that- simple.

Here is a quick tour on how to use it:

Once it is installed, one can choose the syntax each item is outputted in. For example:

<feed url="">
<small>{DATE} by {AUTHOR}</small>


For each item from the feed, the curly-bracketed words get replaced with their corresponding values. Note the use of wiki-markup as this is then parsed by the MediaWiki parser, producing something like this:

<a name="Minimo_Bongo"></a><h2> <span class="mw-headline"> <a href="" class="external text" title="" rel="nofollow">Minimo Bongo</a> </span></h2>

<p>22 March 2007 by jonnylamb
<p>I shoved

So of course there’s a whole load of MediaWiki stuff added which makes it integrate into the wiki much better, and the killer feature is the customisation possible!

There’s more information on its page.