Personal desktop wiki for Windows

A number of small applications I’m working on have all had their release dates unceremoniously pushed back due to my discovery of Wikidpad.

WikidPad is a desktop wiki written in wxPython; and it’s great. You can download it and use it for free for 30 days, but it only costs $12 (that’s about £6 in real money), and is well worth it. WikidPad is now open source, and costs nothing. It has a Trac homepage on wikidpad.python-hosting.com and is actively maintained by Michael Butscher.

After a few days of using it, it was good enough for me to want to write my own, but with some of the behaviour changed slightly. After a few more days of using it I realised that it would takes months of hard graft to create anything of the standard that WikidPad sets, it’s really that good.

Apart from all the instant obvious benefits of having a personal wiki that’s just on your desktop, no server needed, it has some great extra features: it can export single pages, or the entire wiki to HTML; there’s no “edit” mode, you just type in the main window and it auto-saves your content; it saves its content in plain text files so you can modify them with any tool and best of all it’s really customisable.

The regexes for styling text (such as headings, italics, bold etc) are all editable, so you can change them to match your favourite style – for example I changed the headings to match the JSPWiki syntax because that’s what I’m used to using at work.

It has a list of public hooks so that on events like application startup, creation of a new page, saving of a page and so on, you can execute your own Python commands (it comes shipped with commented out CVS commands at the appropriate hooks, which would be very useful).

In addition it has a public API so that you can write plugins which can directly manipulate the application itself. You could probably even get hold of the parent window and create your own wxWidgets dialogs.

It also supports a kind of tagging for pages, whereby you can add something like [work=true] to a page and it will then be listed under the tag “work”. This is slightly cumbersome at the moment (really you just want to add a list of space or comma separated values), but might be possible to change by editing the regexes.

As soon as I realised it was so extensible my mind took off in all kinds of directions – how about enabling rendezvouszeroconf on it, for example, and using it in an office? Or instead of using CVS as a filestore, just use simple FTP commands. Or hook it up to the del.icio.us API for quick access to your bookmarks, or your favourite blogging tool so that you can post directly. In fact, JSPWiki also stores its files in plain text, so there’s the possibility of making WikidPad a desktop editor for JSPWiki, but one that you could carry around with you (hideous versioning problems aside). Just about anything’s possible, and as it allows you to embed (and evaluate) Python code directly on any page, you can automate an awful lot of functions; for example I can now write up my meeting minutes then hit a key combo which converts the page to HTML, posts it to our internal wiki, and mails the URL to the attendees. Brilliant.

So all of this is why I’m behind. Sorry 🙂

Job site’s search results in RSS

CWjobs.co.uk is the first website I’ve seen, outside of specialist services like Feedster, which provides the results of searches in RSS feeds.

Although it’s an excellent use of the technology to provide users with information, I wonder how many people use it? Most job websites send out the results of searches by email, and most people will want to have all the different search results arrive in one place, meaning that an RSS feed will typically be under-used for this purpose, possibly sending a signal to the company that it’s not worth bothering with, despite the fact that it could have a higher take up in other areas of the company.

Regardless though, it’s amazing to see such a comparatively niche technology penetrate this far.

It’s just a pity they don’t validate 😉

Del.icio.us Inbox is back!

If you’re a regular user you’ll have already noticed by now, but in case you hadn’t – del.icio.us inbox is back! (via WaxyLinks).

If you’ve not used the inbox functionality before, it’s basically a mini-aggregator for del.icio.us, so that when you’re viewing another user’s del.icio.us bookmarks (say, mine), you can click “subscribe” at the top of the page, and then all of that user’s bookmarks will appear in your inbox (see my inbox for an example). This makes it much easier to manage subscriptions to multiple del.icio.us accounts.

Not only that, but you can also subscribe to a user’s tags and to global tags, so for example you could subscribe to my bookmarks about jabber, or everyone’s! Marvellous!

Revealing yourself online

Isn’t it amazing just how much we reveal about ourselves on our weblogs now?

Some link on del.icio.us took me to a weblog called “Preoccupations“. Within five minutes, I knew who the writer is and where he works, what kind of music he likes, what interests him, his hometown, where he’s been and what he sees.

Of course, all this info is available about me, and any number of other people, but I was just stunned at how quickly I was able to gather together all this information.

Tracking comments through trackback

Also inspired by the complete quality that is Flickr’s ‘recent comments’ page, Matt Haughey’s also after the same thing for normal blog commenting, and touches on the idea that I mooted last month but disregards it because anything remotely manual gets dropped eventually (and he’s right of course). In the course of this though, he actually comes up with a reasonable solution based on trackback (it’s actually made clearer in the comments on one of his Flickr images).

The idea, summarised, runs thusly:

  1. Your home page has an RSD link to a trackback page
  2. When you leave a comment on a weblog, you always have to leave your URL
  3. The comment script looks up the address of your trackback script from the URL you’ve left
  4. The comment script pings your trackpage page with the details of your comment
  5. tada! You have an automatically-generated list of all the comments you’ve made

Of course then, not only do you have a list of the comments you’ve made, but the comment script could also ping you each time someone makes a comment after you, letting you know exactly what’s going on. There’s a potential scalability problem there – what do you do for posts that get comments from hundreds of different people? Well, sites that mandate a login before you can comment (like TypePad and Blogger) should enable you to follow your conversations through a central page anyway (which, by the way, they currently don’t), but trying to ping 300 previous commentors of your new post whilst still allowing comments on other posts would bring most people’s servers crashing to the ground.

The main problem with all of this, of course, is that you need not only all of the different blogging systems to implement this, but for non-hosted or centralised services you need the users to actually upgrade the version of the software they’re running. On the other hand, it should be almost trivial for the implementors, so there could (and should) be a quick uptake if this is deemed a good enough solution.

In the meantime though, I’m thinking about using Greasemonkey to rewrite the form submissions for every page I visit to go through my proxy page, so that I get to see exactly what I’m submitting, where and when. If I wanted it would be easy enough to blacklist certain URLS (like bug trackers and so on) where I don’t need to be reminded about the comment. It’s not a great solution, but for the time being, it’ll just about work.