Why do you keep torturing yourself?

Thursday, 9 July 2009

Recently I came to realise that my planning and memory skills weren't adequate to keeping track of what I want to do, and what I need to do.

For a while I've been fooling myself into thinking than "emacs ~/TODO" was a good way to keep track of tasks. It really isn't - especially if you work upon multiple machines throughout the week.

So I figured I needed something "always available", which these days mostly means an online application / website.

Over the years I've looked at many multi-user online "todo-list" applications, and inevitably they all suck. Mostly they suck because they're either too rigid or don't meet my particular way of working, living, and doing "stuff".

To my mind :

  • A todo-list should above all make it easy to add tasks.
    • If you cannot easily add tasks then you won't. So you'll never use it.
  • A task might be open or closed, but it will never be 23.55% complete.
  • A task might be "urgent" or not, but it will never be "urgent", "semi-urgent", "do soon", "do today".
  • A task might have many steps but they should either be added separately, or the steps noted in some notes.
    • I find the notion of making "task A" depend upon "task B" perilous.
  • A task belongs to one person. It cannot be moved, shared, or split.

Some of those things such as subtasks and completion percentages I guess are more application to project management software. Those and time-sheet applications really wind me up.

With my mini-constraints in mind I sketched out a couple of prototypes. The one I was expecting to use had a typical three-pane view:

[ Task Menu ]     |  Task1: Buy potatoes
                  |  Task2: Remember to check email
  All Tasks       |  Task3: Order more cake.
  Completed Tasks |------------------------------------
  Urgent Tasks    |
                  |  [Taske Details here]
  Tags:           |
   * Work         |  [Urgent | Non-Urgent ]
   * Fun          |
   * Birthdays    |  [Close Task | Re-OPen Task ]
   * Parties      |
   * Shopping     |  [Notes ..]

That turned out to be a pain to implement, and also a little unwieldy. I guess trying to treat a tasklist as a collection of email is a difficult proposition at best - but more on that in my next post.

So a quick rethink and now I've came up with a simple but functional layout based upon the notions that:

  • Adding tasks must be almost too easy.
  • Most tasks only need a one-line description.
  • Adding tags is good. Because tasks cross boundaries.
  • Adding notes is good.
  • No task should ever be deleted - but chances are we don't actually wish to view tasks older than a month. We can, but we can hide them by default.
  • When a task is closed/completed it cannot be edited.
  • All tasks belong to their owner and are non-public.

So what I've got is a multi-user system which is essentially split into four behaviours: Adding a task, viewing open tasks, viewing closed tasks, and searching for tasks.

Tasks can be tagged, have notes added to them (but never deleted/edited) and over time closed tasks fade away (though they're never deleted).

Some of my constraints or assumptions might change over time, but so far I'm happy with them. (e.g. I can imagine tagging an entry "public" might make it appear visible to others.)

Anyway the code is (surprise) built using minimal perl & jquery and you can play with it:

The site contains a demo user which you can use. I don't much care if people wish to use it for real once it is more complete, but I expect that it will either be ignored completely or be the kind of thing you wish to self-host.

With that in mind the code is currently closed, but I'll add it to my mercurial repository soon. (Maybe even tonight!)

ObSubject: Dog Soldiers



Comments On This Entry

[gravitar] hitzi

Submitted at 21:16:17 on 9 july 2009

look at

[gravitar] Iain

Submitted at 23:10:15 on 9 july 2009

I came to the same realisation a short time ago, including the inadequacy of emacs ~/TODO. todo-mode just doesn't feel like it does anything useful.

My solution was to give in to the armies of faithful proclaiming the power of org-mode. (I won't bother preaching its features - you can get that anywhere). The "always available" is important to me too, and I originally answered it by keeping my org files on my colo and pointing my various emacsen directly at /ssh:colo:org/foo.org. That was pretty sluggish though, and I now keep the set in git and push and pull them from the colo when necessary.

The final step, and I shall be a happy camper when that is complete, is to get an emacs device like an n810 to use for disconnected orging. It's on my TODO list.

[gravitar] Dan M

Submitted at 23:44:20 on 9 july 2009

Tasque rememberthemilk.com does the job for me

[gravitar] Claude

Submitted at 01:51:15 on 10 july 2009

Nice and simple. Two points: First, maybe consider defaulting to open on "Outstanding" tasks. Does the "Home" tab really provide any functionality? Might you get rid of it entirely?

Second, the search bar doesn't appear to search tags. E.g., "geekery" shows up in test's tag cloud but searching for it doesn't pull up any results.

[gravitar] memnon

Submitted at 02:09:09 on 10 july 2009


Emacs Orgmode( hg)?
You know orgmode, right?
As easy or as complex as you need it ...
And it should be "always available" ;)

[gravitar] Steve Kemp

Submitted at 10:19:38 on 10 july 2009

Thanks for the feedback everybody - Org mode I've never used, instead when I used "emacs ~/TODO" I used folding to alternate between a simple list of items and any optional detail.

RememberTheMilk.com looks interesting, it definitely wasn't around the last time I checked things.

As for my site its in live use by me and seems to be working but of course I'll only know for sure in a few weeks - right now searching is broken, but I'll get that fixed tonight.

[gravitar] Marc

Submitted at 16:45:16 on 10 july 2009

Another way of putting org-mode information online is to export it in ical format. I use a .ics file so that my calendar is visible from Google Calendars.

[gravitar] Miguel Angel

Submitted at 15:38:17 on 20 july 2009

Hi there.

I am working in two programs like this. Both of them GPL.

First one, called 'Bitacora'1 and made in python, is almost what you are looking for. Well, I'm not maintaining it at this moment, but it is just because it has no users :D As far as I remember, it was usable when I leave it for Kyto.

The second one, called 'Kyto'2 (because of "Keep Your Tasks Organized") is in a very early development stage. It is made in java with communications and saving in ZeroC ICE and Freeze, respectively.

Please, comments will be appreciated.

Thank you!

[1] http://sites.google.com/site/magmax9/projects-1/bitacora
2 http://savannah.nongnu.org/projects/kyto/


Comments are closed on posts which are more than ten days old.

Recent Posts

Recent Tags