Changing Jabber status based on my calendar

Eileen Brown writes about the new Office Communicator:

you know, its the little things that make such a difference. Like the fact that my status automatically turns to busy – (a blue no entry sign) when my Outlook calendar is marked with a meeting

Bingo! Wow, what a nice feature that really is – especially useful in the workplace, let alone at home. So, how can I emulate it in my IM clients? Let’s start with (what I hope are) some facts:

  • my preferred client, Psi, does not support plug-ins
  • although we use Outlook at work, I have a Python script which extracts my Outlook calendar into the iCalendar (.ics) file format
  • Miranda and Exodus, among other popular Jabber clients, support plug-ins
  • a third-party (such as a bot) can’t trigger a change in another user’s status

So then. What can be done? For the clients without a plugin architecture, I don’t think there’s anything that can be done (this kind of thing is too niche to become an accepted patch although of course you could build your own if you were a sado-masochist). For the others though, there’s a real chance that this could become quite a useful feature.

I can’t see, by the way, how Office Communitor isn’t going to be massively popular in businesses all around the world.

Use accesskeys for navigating Google search results pages with Greasemonkey

The Greasemonkey script: Enables navigation through Google search results pages using ALT+, and ALT+..

This script enables accesskeys for navigating through pages of Google search results using ALT+, for “previous page of results” and ALT+. for “next page of results”. I find it useful, so maybe someone else will too 🙂

I’ve been using Jesse Rudermans Search Keys Firefox extension since he first released it. It’s brilliant – when you perform a search on any of the listed search engines it inserts the numbers 1-0 after them, and makes them links, so that pressing “1” will take you to the first result, “2” the second, and so on. This has proved very useful for me, because I’m quite the keyboard fan, and tend to search Google from the address bar, and then just press the number of the result I want to see.

The problem was that if the result I wanted wasn’t on the first page then I had to grab my mouse and click “Next”, or use find-as-you-type and hope that the word “next”, or “xt” wasn’t in any of the links already there. This script helps me get around that, so that now I have a guaranteed method of moving between pages of the Google search results. Marvellous.

What’s your app’s minimum limitation on username size?

Six characters? Three? Do you have a minimum at all? Should there be a minimum length for a username? Why can’t I have a one-letter username? Obviously there’s a fair chance that someone might have taken it before me, but still, what’s stopping me? Are enforced-username lengths a security issue? If you allow one-letter usernames, then perhaps there’s a better chance of brute-forcing the password?

Regardless, it’s completely frustrating to try and sign up for an account, only to be told after you’ve entered your registration details that “Oh no, sorry, your username actually has to be at least six characters long. Didn’t we mention that? Oh, sorry.”

Well, thanks and goodbye. Your service may be great, but now I’ll never know.

More on Jabber non-adoption

Jabber frustrates me a great deal, mainly because I think it should be doing a lot better and acting more coherently than it currently does. The decentralised nature of the system itself seems to have persisted into development efforts (i.e. there are eight different open-source Jabber server implementations, and another six commercial implementations; that’s fourteen different server implementations. You can tell it’s too many because in the “Feature Score” column on that list, not one of them scores 100% and the highest score for an open source server is 79%).

The clients, as I’ve discussed before, are in an even worse state.

The_Tick discusses some of these issues and more in his latest blog post “Some of the reasons that jabber isn’t where it should be“.

My problem, of course, is that I’ve got a big mouth, and not much to back it up with (my main dev. language is Java, and all of the Java clients are comparatively immature). So, OK, what can a frustrated developer do to help things along? First thing – don’t start a new client. Next, look at the state of the current clients and see what you can do there. So OK, let’s look at’s list of recommended clients for Windows:

  • Exodus – open source, Delphi
  • Gush – closed source
  • JAJC – closed source, possibly dead
  • Pandion, open source, nasty disconnection bug
  • Psi – open source, C++, QT
  • Trillian, closed source

So OK, realistically you’re now down to contributing to Exodus and Psi (or fixing Pandion’s disconnection bug, which doesn’t look like an easy task).

Until recently, even looking at the source for Psi was pointless because it depends on QT, which hasn’t been available (for free) on Windows. Trolltech recently announced that starting with QT4, QT will be available for open-source development on Windows for free (see what the Psi forums had to say). This is great news, because Psi is my favourite client; but on the other hand Psi used to advertise itself as the Jabber client for power users (they don’t do this any more), and whilst they’re now doing massive work on usability and the development community is very active (they have leadership and focus, I think the Psi community is very impressive) I think it’s likely to stay fairly focussed on power users.

Personally, I’ve always found Exodus pretty hard going, but it *is* in Delphi, which I can write, and it looks as though it should pretty simple to make a number of improvements to the UI without too much hard work, but I don’t have a copy of Delphi 7, which it appears to be written in, and which no longer seems to be available from Borland. Which would be a problem.

So, given that I’m lazy, this leaves me doing one of the following:

  1. buying (or, er, “obtaining”) Delphi and hacking on Exodus
  2. searching for another client with equally good JEP support to hack on
  3. spending my life unconstructively complaining on my blog, frustrating all and sundry

but seeing as I hate both whiners and hypocrites I’ll aim for the first 🙂

Textile your textareas with Greasemonkey

First of all, the link to the script: Textile your textareas with pure JavaScript.

Roberto De Almeida has posted a Greasemonkey script that makes all textareas textilable which works by injecting a button after your textarea which sends its contents off to his public PyTextile service and then replaces your contents with the parsed results, which means that although you have the full power of the latest version of PyTextile at your fingertips, it can be a little slow to respond.

But of course, Textile has been ported to JavaScript, so here’s a script which does the Textile transformation locally. It’s more limited than Roberto’s version, but still covers most of what you might want to do, like headings, lists, images, text-styling (bold and so on), but no tables and the more complex elements.

It’s based around Roberto’s script and uses Jeff Minard’s SuperTextile for the actual transormation. There’s currently something slightly wrong with it as it sometimes takes a few seconds to run through the final regexes, but I’ll probably just live with it.

“Microsoft Unveils ‘Office Communicator'”

so says BetaNews.

I can’t imagine anything I’d want less than an IM client inside of Word. You’d hope that instead of tacking in all this shit they might try and make Office stable.

“The relationship between Istanbul and LCS is similar to that between Exchange and Outlook,” a Microsoft spokesperson told BetaNews. Jesus. Well, if that doesn’t fill you with fear and dread, nothing will.

Finding related items in your RSS datastore

Jon Udell’s latest screencast “The on-demand blogosphere” shows how he mines the data stored by his aggregator to find out who on his blogroll has made a post related to what he’s reading at a given moment, based on anything from the currently selected word in a block of text, to the URLs the text links to.

It’s all very clever, and probably quite useful if you only skim read your aggregator, or have a veritable mountain of sources to look at, but it’s clearly version 0.1 as far as this kind of thing goes (as Jon himself suggests).

For me, the next step would be to automate the searching; using either Greasemonkey or an extension to display either a sidebar or a section in-page containing the related links.

Taking Jon’s step of then searching out through the blogrolls of the people you’re subscribed to is harder by an order of difficulty, primarily because there’s no easy way of discovering exactly who they subscribe to (if they even make it public). There’s always the chance that they might have a FOAF file, but then the problem becomes one of identifying which link in their FOAF file is to a blogroll file (probably in OCS or OPML) before you’ve actually downloaded it.

I imagine there’s some way you could centralise it all by using Bloglines and associating the blogs you read with user IDs, and then harvesting the public blogrolls, but that’s just a wild guess.

Tantalisingly though, all this stuff seems just out of reach. I can’t think of any truly practical way of going about it (especially in a decentralised way, which would be the most useful). I’m sure this is the moment where I’m supposed to say that the semantic web will save us, but I really can’t think of any way it helps here, sorry 🙂