Tom Morris

10 January 2007

A pungent mix of programming, philosophy, pedanticism, procrastination, perplexity, peripheral political polemic, and platters of preposterousness.

Semantic bookmarker

I’ve just finished the very early alpha of my semantic bookmarking tool. It’s currently set up just for me (more on that in a minute). I’m using Notation3 for the semantic markup, and it’s extremely simple.

Basically, the process is quite easy at the moment. When I want to bookmark something, I press a button in my browser. Up comes a page with a box for bashing in N3, with some already pre-filled (the Dublin Core title element). I fill it in, then choose either the “submit” or “submit to delicious” button at the bottom of the page.

Either option then adds the semantic markup to a specified file. This is my ‘scratchpad’ file. It’s stored as raw N3. Occasionally, I go in and do a diff of the current scratch file with a ‘public’ N3 file. If there’s anything that needs changing, I change it and update the public copy and then transform that in to RDF XML. I can then run SPARQL queries over that and display the results however I like.

What’s nice about it is that it’s a kind of geeky notepad for surfing. I can quite easily dream up a new field to add and type it in. I can work out the relationships between URLs as I bookmark them, or return to them later.

I’m honing this idea of “individual iterative development”. I’ve got an itch that I want to scratch - ie. I want a semantic bookmarking tool because del.icio.us tags don’t scale for me. So I’ve built a little hack that does the job for me. As I discover annoyances with it, I’ll fix those annoyances as quickly as I can. If I keep going in that manner, within a few months I’ll have something ready to ship.

It’s a bit like how you can choose to write a 60,000 word book from start to finish, or you can write lots of bits and pieces and then stick it all together in to a product afterwards. I haven’t got time to do a big software construction project. So I’m just piecing together bits until something comes out to be highly cool. Software is my “20% time” for the next few months while I finish my degree, so this development model seems to be a good idea.

Laziness and ennui sets in if you have code that doesn’t work. Having code that does something is a huge motivator. In fact, I’d say that the ‘boil the ocean’ projects that have been coming out of academia in the RDF/SemWeb space are probably the primary reason that RDF/SemWeb haven’t happened yet (running code, however primitive, is the best defence against vapourware and the accusation of pipe dreamery).

Similarly, if I build something for me and get the actual guts of the thing working first, then I can do the boring stuff later. For a semantic bookmarking tool, it is the actual bookmarking interface and storage which counts most and the login system least. I’ve got some good ideas on how to do that - OpenID for one. But it’s more important to build the piece that has value first then worry about the rej… [sorry, the rest of this post was cut off due to some XML parsing magic]

Tags: