Lifestream logging: I’m lifetrailing my laptop and iPhone.
Over the past few months I have been experimenting with collecting “life-trail” information about where I go and what I do. If I use an application, or make a phone call, I want it logged. I automate the collection of this output into my personal wiki.
Capturing Information for Billing
Being self-employed it’s very important to me to ensure that I bill my clients correctly. While my clients keep telling me that they appreciate the level of billing I give them, that billing has always incurred a great deal of overhead cost to document.
Last year I used product for the PC called http://www.timesnapper.com. I loved this program: it gave me a breakdown of what I was doing and when I was doing it. (It also collected screenshots which were pretty handy but the analysis was where the value was for me: reclaiming a few minutes was easily enough to pay for the program).
When I moved to a Mac I had to find something new because Timesnapper didn’t make a Mac version. After a brief flirt with RescueTime, I settled on Slife, from Slifelabs.com. The main reason I preferred Slife was because, unlike Rescue Time, which sends your personal information up to the Rescue Time Website, Slife maintains a local database.
Slife captures your web and document histories so you know where you browsed and what you edited. After the fact you can quickly easily figure out when you’re working and when you were “relaxing”, and knowing you’ll be faced with the history adds another level of motivation to get my day started earlier
Capturing for Personal Knowledge Management
I have always been very keen on personal knowledge management. Capturing enables reuse and refinement, and later, delegation.
As useful as Slife it is for billing and productivity, it doesn’t tell the complete story. e.g. What if I’m not a computer?
Well, I do have an iPhone. With this I make phone calls and I go places. So, of course, the iPhone call log knows who I have spoken to. I found and hacked a program (calllog2ical.rb) that queries this database and fixed it so it creates a log of the output instead of writing details to ical. For the GPS my (jailbroken) iPhone has an application called “Locatableā. Locatable really is a tool for programmers that knows your current GPS location and can call a script you write. So I use it to call back to a script that writes a log every 30 minutes noting wherever I go.
I work a lot in a Linix command shell. Whether configuring servers or installing software, a lot of it is tedious detail-oriented expert work. A problem can easily take 45 minutes to solve and result in a command of one or two lines. If six months later, you can hit the same problem, and wish you could remember what you had typed. So, I wrote a modification to my UNIX command line profile (based on the Bash External History method) to record exactly what commands are given to the command line, and I log these too.
When editing I mostly use Emacs. For this I wrote, using emacs-lisp, a script to log which files I was saving. (And, while I was there, created a mechanism whereby (almost) every edit a file would result in a RCS history file to be saved alongside. RCS is very commonly installed, blatantly obvious and doesn’t conflict with modern revision control systems). Now from the log I can see which files I edited, and from the history RCS file, see what I changed.
I’ve hacked together an IRC conversation extractor too. If I was involved in a conversation, it copies that part into the log file, and on to the wiki.
And recently, I built a client to pull in my history of tweets from twitter. These now get filed into my wiki too.
None of the code is production quality. It is all Perl scripts, Shell scripts, and nasty things that invade application’s private databases looking for data.
I’ve discovered it is really neat, albeit sometimes a little anal, to know exactly what I did the last three months, who I spoke to, where I went and what I worked on.
There’s always more I’d like to add: e.g. a call log, such that I can make voice notes or written notes after I’ve concluded a call. And why not share those notes with the person with whom I’ve conversed?
I should, of course, make all this code available. Open source it. I have no objection to doing so: ask me and I will. Indeed many of the components that comprise my solution are already using is open source. Frankly, I wouldn’t want to maintain the code for a community, for it really is not central to what I do. But I would prefer to move my code base into an existing system.
I know companies are working on products that do this type of thing. Do you know of any? How about Open Source ones?

January 25th, 2009 at 11:21 pm
BTW. I MacSpeech dictated the first draft of this blog post