My New Organizer

| 1 Comment | No TrackBacks

Every few months, I modify and/or reinvent the ways in which I stay organized. More recently, these inventions have been more like iterative improvements than total rewrites. In the past, I’ve had a calendar online and a task list (most recently managed by Hiveminder), but as I analyzed the way I work, I realized this has inadequately dealt with my work style. I have then tried several solutions over the past month to see if I could find something different that worked. The closest to fitting is still Hiveminder or, if I want to pay $80, OmniFocus. Stikkit also comes very close to what I want.

I considered paying the $80, but I decided that unless the solution was close to exactly right, that money probably wouldn’t be serving me in six months. Since I couldn’t find anything that was compelling enough to fit me the way I want, I’ve decided to put together my own attempt at a productivity tool. After a week of hacking, I’m actually getting to be happy with what I’ve done. I’m going to outline the requirements and then describe the implementation and where I’m planning to go with it. At this time, the tool is strictly my own toy and I have not shared the code, but if you’re interested, I can probably post it to a code repository somewhere.

Requirements

Why did all the other online solutions fail me? They were oriented around the lists of items to do, not around the work I’m doing. If you watch me work (as I’ve tried to do over the past month), you will see me taking lots of notes. I usually have a 10 squares/inch cross section pad in front of me with lots of scribbled notes via a Zebra Sarasa gel-ink pen. These notes usually are used to help me remember what I’m doing for the day or two they are needed and then got tossed in the box to be shredded after I’m done (shredded because work related notes are considered confidential by default).

Simple Journal

So, what I really need is not another to-do list manager, though that’s important, but a journal that works the way my notes do. Therefore, I need the following:

  • Each day I need to be able to create a series of journal entries. Each journal entry is used to log my activities and take notes on things I’m working on.
  • Each journal entry has a start and stop time associated with it to help me track when I worked and how long I’m spending on a project or group of tasks.
  • Each journal entry has a series of comments attached that are timestamped so that I can see what I was doing and when I came across certain notes.

That was the first set of things I did.

Task Management

The next aspect of things is that I need a way to organize a hierarchy of tasks. This was the primary draw of OmniFocus for me. Some of my ideas here have been borrowed from there. When I attack a problem, I state a goal to be achieved. Then, I add a bunch of steps to the goal. Some of these may be broken down further. I need a way to do this. Thus, I came up with the following:

  • I need to be able to group all of my tasks into projects. A project is really just a task at the top level that may or may not have sub-tasks.
  • I need to have a special project at the top-level for being a holding pen for general tasks that don’t really belong to a project at all or don’t yet. (Several task lists managers I’ve looked at include an “Inbox” for this purpose.)
  • I need to be able to add tasks to a project and then be able to freely arrange and rearrange those tasks into groups of tasks.
  • For maximum flexibility, it should be easy to turn any task type into any other task type and seamlessly.

This latter feature is what I would have gotten from OmniFocus for $80. Hiveminder does not handle hierarchies of tasks, though, there are some hierarchical aspects (e.g., dependencies). However, I wanted this tightly integrated with the journal, which brings me to…

Project Management meet Simple Journal

Now that I have each of these separate, I need to cross-communicate between these two features. This is where my organizer will become interesting:

  • Each journal entry should link to a particular project. All the comments on the journal entry should be treated as if they belong to that project and a collection of all the comments should be shown on the project page.
  • Each comment may have one or more tasks attached to it. The purpose here is that a comment might be made noting the completion of a task or might create a new task or might just be noting some progress made toward the completion of that task. Again, each task would have a list of comments that have been attached to it for history and tracking.

The links go both ways here and flowing back and forth between sides of the application should be relatively fluid. At least, that’s the hope.

Implementation

I’ve put together my implementation using Jifty. At this time, it has no access controls at all (I’m the sole user running the web app on my local machine) and I have only themed the work I’ve done and not done much beyond the vanilla Jifty application styling (which is very vanilla).

Journal

Here is a screenshot of the journal:

Screenshot of the Journal Screen

Since it’s just Jifty, it is heavy on the Ajax. By clicking the Start button, a new entry box is immediately visible at the top. The timer immediately starts and the stop time and hours counter update on screen. You can save the fields other than the comment by clicking the Save button after starting and entry and you close an entry by clicking the Stop button. As of this writing, you cannot modify anything but what you see and a stopped entry can’t be reopened. I plan to change all of that, but this is just a few hours hacking so far.

You create new comments by filling in the text box and clicking on the Post Comment button. It’s my intention to make it so that Enter or some keystroke submits, but since I haven’t decided which would be handier or had time, I haven’t messed with it yet. Oh, and the comments can use Markdown formatting in case you need to link or bold or create lists or something.

You can also use the date browser to look at past entries.

Project Manager

Moving on to the project manager, it looks about like this:

Screenshot of the To Do List/Project Manager

Here you create a new task just by typing the text description into the box and clicking enter. This adds a new task to the “none” project. You can then drag and drop (using jQuery’s UI plugin) the tasks around to change them into projects (the whitespace at the top becomes a target for projects), add them as subtasks to another task, etc.

Sorry, I’m not showing off the full power here in that screenshot, but my test site currently has confidential information from work on it. (I’m actually using it with some success).

That’s about all there is to it.

Cross Linking

There’s really not much of this yet. I’ve created the link from journal entry to project so far, but that’s pretty much it.

I intend to make it so that you can add a new task in the entry’s project in a comment by typing:

[ ] A new task

and hitting save. You could place an “x” in the box to mark it as completed. I haven’t yet figured out exactly how I want to handle existing tasks, but I’m thinking of using a nickname format like:

[x] @123

where “123” is the tasks ID. A UI to help look up these task nicknames would be a requirement.

Messing with multiple tasks in a hierarchy could even be manageable via:

[ ] A new task group
- [ ] Sub task 1
-- [x] Sub sub task A
- [ ] Sub task 2

Similarly, I’d like to use a combo box or something to be able to create new projects on the fly or even have a way to make the journal entry name become a new project by prefixing it with a special character.

The Future

In the future, I’d also like to incorporate other activities like automatically pulling SVK commits into comments, exporting the timestamps for use with work related time tracking, exporting certain comments to Twitter, and I’ve even considered sticking a wiki or something on the side that could be used to help collect the notes I want to keep longer term.

We’ll see where it goes. I’m kind of hacking it 5 minutes at a time a couple times a day during breaks between tasks and a couple hours a night and on weekends (about all the time I have to spare for such things). It’s been fun and useful so far.

Cheers.

No TrackBacks

TrackBack URL: http://contentment.org/mt/mt-tb.cgi/594

1 Comment

I looks nifty. I think the cross linking will serve you well as it grows — put some thought into that part.

Leave a comment

About this Entry

This page contains a single entry by Andrew Sterling Hanenkamp published on June 24, 2008 10:28 AM.

Going to YAPC::NA, sort of was the previous entry in this blog.

Developing RESTful Web Services in Perl, Part 2 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.