Ok, so I'm working remotely, but need to keep track of what I'm doing - officially there's a daily scrum and I have to do a short weekly report. But more than this, if I'm hoping to have a cat in hell's chance of productive activity, I need to monitor my activity. Problem is, I've got an abysmal memory.
Luckily a significant part of my job is to try things out with technology that's can augment such human frailties. Specifically the Talis Platform, which essentially is comprised of Web-hosted datastores (for content/data and data/metadata) with a bunch of associated services.
I decided I needed something which would allow me to make very quick notes. What I came up with was a hacky little desktop application (in Java), working title QuickLog. The UI's intentially minimal, the text fields are for a title, description and folksy tags. Clicking Log submits the info as a log entry, clicking ToDo submits it as a todo item. The three radio buttons set priority: low medium or high. The checkbox in the bottom right (slightly obscured on the Mac) is for visibility: public (default) or private.
So I just leave this thing running, whenever it occurs to me I post a quick note. The fields instantly clear (threadz). What happens on clicking post is a little chunk of RDF is created, which will look something like this:
@prefix : <http://purl.org/stuff/quicklog/tags#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix prj: <http://purl.org/stuff/project/> .
@prefix quicklog:
<http://purl.org/stuff/quicklog#> .
@prefix rdf:
<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rss: <http://purl.org/rss/1.0/> .
@prefix tags:
<http://www.holygoat.co.uk/owl/redwood/0.1/tags/> .
<http://purl.org/stuff/quicklog/danja/entries/2007-10-04T20:51:15+02:00>
a rss:item;
dc:creator "danja";
dc:date "2007-10-04T20:51:15+02:00";
dc:description "some description, for screenshot";
dc:title "a test title";
prj:priority "2";
quicklog:permission "public";
tags:taggedWithTag :quicklog,
:test .
:quicklog a tags:Tag;
tags:tagName "quicklog" .
:test a tags:Tag;
tags:tagName "test" .
One copy of this is pushed into a local store (because IntegrityIsJobOne). Another copy is POSTed off to a store on the Platform, my own little offboard brain. (When ToDo is clicked, the item is also typed as a prj:Task).
That store has various services, and with the help of a bit of SPARQL and XSLT (to this JSON - the end date is just an hour after the start date), the relevant contents of the store can be rendered using SIMILE's Timegrid display. So here's my recent activity .
Notice that the system as a whole is very loosely coupled (RESTfully), the input to the store could come from anywhere, the output could go anywhere (through arbitrary queries, or search). The store is an integration point, I can put other linked data in there too (next I'm thinking of adding my browser history). I can work on the QuickLog code completely independently of the Timegrid code ( which is a good job, because they're both incomplete and buggy ;-) Not too much to remember.
@en