Logging Things Done

Does "last action" clutter make your "next action" maps less effective?

In a post on the Yahoo GTD-MindManager group, Colin raises the question of how to best handle completed tasks in MindManager maps:

Has anyone here struggled with the best way to track a history of completed tasks? When it comes to finite projects, it makes sense to me to leave completed activities right where they started in the map. However, my personal map (what is sometimes called bits and pieces) is rather large and is "ongoing" so keeping completed activities would make it unreadable over time. However, I do want to be able to look up past activities (i.e., what day did I purchase that TV? How long has it been since I changed the oil in my car?, etc.) I'd welcome any thoughts about this issue, even if it's just "I complete it and delete it!"

There are at least [six] approaches for dealing with completed tasks when using ResultsManager:

  1. Leave them in place
  2. Leave them in place and power filter to hide them
  3. Move them to a collapsed "completed" branch in the project map
  4. Move them to a separate "completed" map
  5. Utilize the ResultsManager "Set Activity Complete" (Alt-c-v) macro to mark them complete and automatically note their completion in the notes of the project.
  6. Utilize a custom "completed items" dashboard to summarize and archive completed activities by project or area [added based on suggestion below and in yahoo group].

In a corporate environment, people often tend to choose option one, as there is a natural inclination to want to show historical progress and communicate completed work (e.g. for monthly reports). This bias sometimes this gets in the way of making room to lay out a clear path to the finish and can quickly cause a map to go blunt. The GTD methdology is about next actions, not past actions. David Allen essentially says "cross it off and move on" when describing the work flow in the Audio version of the book. The ResultsManager logging of completed info into the project notes is helpful, but can't be compiled easily across several projects and maps.

Creating a Log Map with copies of Completed Tasks
Thinking about Colin's question, I realized that GyroQ might be able to help address this long-standing problem and dashed off a quick tag that does the following:

  1. Accept a comment from the GyroQ dialog on the task
  2. Copy the topic using a sax basic macro – (originally this macro copied just the topic text)
  3. Run the RM "set activity complete" macro. This sets it complete and notes that in the project notes. If used from a dashboard, it also marks up the underlying project map automatically.
  4. Put the topic as complete on the "TimeLog" map (same as used by GyroTimer) in branches subdivided by year, month, and day.
  5. Save and close the log map.

This macro is available in the GyroQ Tag Library. There is also a version that replaces the ResultsManager macro line with a "complete:100" for non-ResultsManager users. Note that is does all its processing in real-time and requires the Developer edition of GyroQ. You can see it in action in this video.

With the completion information retained in both the project note and the log map provides more flexibility in deleting or archiving the original tasks. This might turn out to be the more useful of the GyroQ tags in the library. Having the rolled up task completions by day for several projects in one location as well as the comment info could be handy as a reference as well as a place to see how much you are (or are not) getting done. Perhaps Gyronix might consider building something like this into the Alt-c-v macro? Give it a try.


  1. Stefan said,

    December 1, 2006 @ 12:24 pm

    Hello ActivityOwner,

    this is quite useful.
    What I would prefer are the following options/changes to that script:
    – Delete the finished task in the project map when copied to the log map and
    – Sort it in the log map by project or have a separate log map per project.

    Would that be possible with GyroQ? I am just a stupid user and have no idea of programming.

    Many thanks and regards


  2. Trevor said,

    December 1, 2006 @ 5:20 pm

    Me thinks you could create a dashboard that would collect completed activities sorted by project. You could then easily cut and paste the relevant sections to a log map (or leave the dashboard as is, perhaps run it weekly) and clean out the project maps themselves.

  3. ActivityOwner said,

    December 1, 2006 @ 9:13 pm

    The Gyroactivator language doesn't currently have a "delete" command, so you would need to use the send keys command {send:'{delete}'} to delete completed tasks using the script. Note that the send command can be a little unreliable. It also means you need to work from the raw map rather than the dashboard.

    Figuring out what project a task is associated within the project map would be difficult using only GyroQ unless you made some assumptions about the project map structure. For example, you could use the central topic name (but that would require use only on the raw map). Perhaps it could prompt the user for the project or area name on the fly. If the script was designed to work only from a dashboard map, it could likely be plucked from the call-out that ResultsManager adds (but then you can't delete it). It might be hard to create a one size fits all solution. Maybe this will draw some lurkers out with some ideas.

    Trevor's suggestion of using a "completed" map seems like a workable manual approach. You just need to remember to toggle the "allow completed activities to dashboard" setting between other dashboard uses and make sure you keep track of what you have archived before deleting.

    I think pushing tasks to a completion list in real-time or daily with this macro might turn out to be a good motivational game to play (what did I get done today, and were they the right things?). Time will tell.

  4. Bill said,

    December 5, 2006 @ 4:53 pm

    This is a VERY interesting topic. Currently I just have a 'Completed' branch in each project map with subtopic 'Year'. I know there are limitations to what GyroActivator & MindManager can do but here's my suggestion FWIW. Start at your Map Central & create a tag that cycles through all the projects looking for completed tasks. These tasks would then be rolled into a log map under their given project/result based on year, month day. Perhaps add a commented part of the tag that would delete from the original map. After watching the currently video I still had the sense the process was manual (I.e, having to select the task). It seems more natural that users would, if they own RM, complete the tasks w/in the dashboard then send those changes back to their original maps. So, after updating your dashboard, all you'd need to do is go back to your map central and run the 'log complete tasks' tag. Perhaps this is too complex for GyroActivator & should be requested functionality of RM version Vista :)

  5. ActivityOwner said,

    December 5, 2006 @ 10:05 pm

    Yes — the current tag involves manually selecting a single task, running the macro, adding a comment, and optionally deleting the task when the macro is finished. It takes a few seconds, but its not like I have that many completions to deal with :-).

    I don't think the current GyroActivator language features would allow what you are proposing. You can select all the completed tasks in one shot {select:complete:100}, but can't easily cycle through them to process them to another map or delete them.

    I think a potential strategy is to run a RM dashboard (as suggested above), mark all the completed tasks with a category (e.g. marked-done), cut/paste them from the dashboard to a log map manually, and then filter them from returning to the dashboard the next time with a "NOT marked-done" category filter. They could be deleted from the maps later manually (e.g. by using the MM power filter to select them.). This might not enable the same cross-project daily view that this tag provides unless it is done daily.

    Personally, where I've found the most use for the "log it done" approach has been by incorporating the code into 3 tags I use for repeating "put it front of the door" -type tasks (e.g. daily — clear email inbox, daily — exercise; monthly — pay cc bill). Previously I just used these tags to move the start and end date out to next cycle. Using this approach provides the positive reinforcement of showing completions accumulating. These commands work from dashboard (where I usually use it) or on raw map. I've posted these to the library.

  6. ActivityOwner said,

    December 30, 2006 @ 11:37 am

    Note that these macros have been updated to copy the entire topic to the completed map rather than just the topic text. This could be done pretty easily using a SAX basic macro line:

    and later

  7. Curtis said,

    January 18, 2007 @ 6:18 pm

    Wonderful script!

    Gyroactivator quits during/after the script runs. Any ideas as to how to go about debugging? It shows up properly in the tracking map but doesn't disappear from the dashboard and only sometimes disappears from the underlying map.

    AppName: gyroactivator.exe AppVer: ModName: oleaut32.dll
    ModVer: 5.1.2600.2180 Offset: 00033e2c

    How hard would it be to either delete the topic from the underlying map or apply the date/notes to the underlying topic as well as the tracking map?

  8. ActivityOwner said,

    January 18, 2007 @ 8:14 pm

    By "quit" do you mean "crash"? Is it crashing consistently? If so we can put in alert messages along the way to see how far it is getting. Inconsistent crashes are harder to figure out.

    What do you mean by "disappear"? The current scripts don't have any deletion step. The early versions of "dit", "diw", and "dim" might have had a deletion in early versions as I was using it that way on repeating items on dashboards.

    There isn't a gyroactivator command for deletion and I found the send keys function wasn't reliable. Some of that may have been due to some documentation errors that are being corrected in the send key code reference. It could probably be done reliably on dashboards (not original maps) using Sax basic command similar to how these scripts accomplish the copy/paste. It would be much more involved to figure out how to surf into the original map and find the task for a deletion.

    It would be easy to set the due date to the done date in the dashboard and send the changes back to the original map along with the completion status. Notes don't seem to be sent back using send changes (at least if you have the option turned on to not pull the original notes into the dashboard). That makes sense as you might not want to overwrite the original notes.

    Thanks for interest. It is always good to know some folks are giving things a try.

  9. Curtis said,

    January 19, 2007 @ 5:41 pm

    GyroActivator.exe crashes after every use with the message: "Gyroactivator.exe has encountered a problem and needs to close. We are sorry for the inconvenience." Right….

    So there isn't a way to append notes to a task using the scripting language?


  10. ActivityOwner said,

    January 20, 2007 @ 9:38 am

    Curtis and I talked offline. His problem seems to be gone for the moment after a restart.

    It is very easy to create notes {notes:'text'} or append notes {notes:'text':add}. The problem is it is also good practice to configure ResultsManager to not bring topic notes along to the dashboards as it can slow things down. In that scenario, you might not want to add a note to a dashboard activity and "send-changes" back to the raw map, as it might overwrite an important original note. I believe ResultsManager is probably configured to avoid this problem and thus doesn't send note changes back.

  11. Kenneth LeFebvre said,

    June 10, 2007 @ 11:57 am

    I have slightly refactored your macro to make it a little easier to modify the actual syntax you defined for recurrence. You can see a brief description and a link to the code, on my blog, here:


    Thanks for your hard work at putting all these great macros together!

  12. ActivityOwner said,

    June 10, 2007 @ 1:02 pm

    Thanks Kenneth — That is a nice upgrade. I've been thinking that the script needed some clean up and a way to make syntax clearer. I was considering having the macro read a a mindreader.mmap-like syntax map, but figured that is probably too much complexity for someone who just wants to run a macro that works.

    My personal mindreader.mmap uses the "category" branch to assign the repeat category keyword (e.g. If mindreader sees "mow lawn weekly", it gives it a weekly category that "mark task complete" will recognize). In order to roll that out I'd like to keep the syntax as consistent as possible between the two. Your modifications are more readable (e.g. End of Month instead of endofmonth), so I'd like to roll them into the 'production' version.

    What I'd like to do is first add a line of code that looks for legacy keywords and either warns user or (optionally) updates them. Once that is done I'll paste it into the "Dev" version on the wiki.

  13. ActivityOwner said,

    June 10, 2007 @ 1:36 pm

    Note that your script will recognize "biannually" as "annually", won't recognize keywords because the current code has a "Lcase" command to convert the category strings to lower case.

    I ran into same thing and thus chose "yearly" instead of "annually". I think just removing the "Lcase" statement will do the trick.

RSS feed for comments on this post · TrackBack URI

Leave a Comment

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.