Learning Taskwarrior, one dream at a time

Hey, check it out, there is a value, now:

   Net Fix Rate:         1.6/d
   Estimated completion: 2018-11-18 (4w)

I feel like I complete more than 2 a day, so I’ll have to check what the Fix Rate is. Maybe an estimation of how long everything is complete if I don’t increase the rate at which I generate tasks, over time?

I know this is less a taskwarrior tip and more a conceptual stance on repetition, but I’ve been experimenting with a recurrence system I think is both novel and silly: random amounts of days!

task add The oddly recurring thing due:eod wait:due recur:17d

That makes a task that recurs every 17 days. Because something I have things I need to do periodically, but not that often, and not on a clean date. I have a lot of things to do each weekend, beginning of the month, 15th, etc. This let’s me push tasks into a loop that is easier to break, because it just pops up outside the spikes of activity.

1 Like

recur is useful for other tasks, as well, such as lists.

For instance, I’m moving a bunch of domains and sites from a hosting place to new homes. I’ve had a task for a while, “Create list to process hosting items” (yeah, that’s how I talk to myself, deal).

That was sitting there for 8 days, my brain didn’t want to start busy work. And then other, meta-tasks started showing up. Which was surprising, since I had other processes working. Then it clicked.

When I need to start a project, such as being in a meeting with the person, or getting paid, I just create a process recurrence, a ticket that says, “do an increment for the thing”.

So now I have a recur:2d for “Process a hosting asset”, and that works for me! I’ll get it done over time, and I don’t have to think about it. :slight_smile:

Hey, not bad! I am accomplishing more than backlogging.

I use annotate a bunch. Mostly for URLs. So when I view my next report, my description field is a mess. After poking around Taskwarrior - Reports, I found a nuanced difference between description and description.count, and figured out how to override the default view (again, I already changed the filter).

Basically, I made a tiny change. The default:

report.next.columns               id,start.age,entry.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description,urgency

And in my .tackrc:


That made me wonder how I’ve been doing with my task list:

I think it looks like that because I have recurring tasks (all tagged with +routine), things like “Caffeine!” and “Eat breakfast”.

Oh, I can just drop a few items from my list here:

ID Age Tag              Recur Due   Description                       Urg 
72 22h next routine       P1D 35min Caffeine!                         24.7
73 22h next routine       P1D 35min Eat breakfast                     24.7
71 1d  home                   -1d   Find charger for Clover camera    10.2
59 7d  home               P7D -9h   Vacuum the homestead!             9.82
74 22h routine            P1D 35min Inbox zero                        9.59

This has helped me tremendously for a single reason: I don’t have to track the massive amount of micro-decisions I decide each day in my head. As a creative knowledge worker, I make decisions all day. For the the choices that actually require creative thought, I have the energy and capacity, as I’ve externalized the rote, mundane and spontaneous (by capturing notes in books and creating actionable tasks to complete).

due:eod wait:due-6h recur:1d is for my daily wind-up tasks.

No task should take longer than 20 minutes.

Most of my tasks are annotated with links to talkgroup, including private messages. It’s a pretty useful way to get back to the thread where the action is happening.

A neat feature I found on accident: when one creates the recurring mask for a task, the status is carried over. Meaning: you can “start” a task, and it will begin started when it pops up on the list.

Not great for time-tracking, but a nice way to tell yourself a thing has to be done first thing each morning! I’m thinking of traveling, and having a routine for that trip. Also useful I don’t use taskwarrior for tracking time. :slight_smile:

I’ve recently refined using taskwarrior a lot more, and had to finally do something about annotations. I sometimes need to leave a bit of info, or a relevant URL, on a task, but that bumps up the urgency:

The lowest coefficient, that of annotations, has a value of 1.0. This means that a task with more annotations is more urgent than a task with fewer. The value of 1.0 means this is a weak contributor to urgency, but nevertheless means that tasks with lots of annotations are an indicator of some kind of focus of activity. You may not agree with this assessment however, and so you might set this coefficient to 0, which means you want the term to have no effect on urgency.
Taskwarrior - Urgency

So I added urgency.annotations.coefficient=0.0 to my .taskrc and that is no longer an issue. :slight_smile:

Two things:

  1. Taskwarrior - Context - Whaaaaaaat? Exactly what I’m looking for, humorously wrapped in the very subject I’ve been educating Clover on recently, and…
  2. I’m using syncthing instead of taskd :sunglasses:

Whoa, I found a neat thing, because I misstyped “start”:

[maiki@yuzu ~]$ task stat

Category                   Data         
Pending                    228
Waiting                    24           
Recurring                  22
Completed                  3263         
Deleted                    1317
Total                      4854         
Annotations                1585
Unique tags                115          
Projects                   7
Blocked tasks              9            
Blocking tasks             5
Data size                  18.8 MiB     
Undo transactions          20372
Sync backlog transactions  20372        
Tasks tagged               95.3%
Oldest task                2018-10-11   
Newest task                2020-08-06
Task used for              1.8y         
Task added every           3h
Task completed every       4h           
Task deleted every         12h
Average time pending       5d           
Average desc length        20 characters

You can do it for contexts, as well, which is very neat! And single or arrays of tasks as well.

Oldest task                2018-10-11   

I started this topic on 2018-10-14. :slight_smile:

That is just beautiful. I love text.

1 Like

I just added verbose=no to my .taskrc, and wow is that different: Taskwarrior - Verbosity

I like it, but after having the default amount of messages it’s kinda unnerving. Like I’m typing into a void. I like it! :slight_smile:

When I started using contexts I noticed my .taskrc was changing, as it notes the context changes.

I don’t mind this way of tracking it, but it made me realize I wanted to keep my config elsewhere in a while that didn’t change, so I moved it to an include.

I use stow for dotfiles, and was happy to find it does the smart thing for me in replacing/creating directories as needed. So my task directory looks like:

$ pwd && tree -a .
├── .config
│   └── task
│       └── taskrc
└── .taskrc

And .taskrc is simply:

include ~/.config/task/taskrc



On the first I use tasksh to review my tasks, cleaning up any I missed or have moved on from. Today I went to use it for the first time on a laptop and it wasn’t installed, whereas in the past I believe it was included in the task package (Fedora 33 currently). Noting here, in case I need to modify my install script…

Something funny I started doing and decided to keep up, despite how funny it is.

When I first start the “work” context, I switch and then filter, like so:

task context work
task -work


The reason is I use contexts as shortcuts for tag groups, basically. Here are a couple of the contexts I define:

context.notwork=+interi or +home or +remind
context.morning=+feeds or +daily or +remind

I prefer tasks having a single tag, I actually write them in that format. Here’s a common task I add:

task add +interi blah blah due:tomorrow wait:due recur:1d

Anyhow, for my “work” context, I assign tasks a single client tag. The context is defined:

context.work=+work or +client1 or +client2 or +client3

+work is my catch-all for work-related tasks that are not for a client. So to start my work day I switch to my work context and filter out all the work tasks. :slight_smile:

I’ve started using notes to capture detailed ideas, things that might take a lot of tasks to even conceptualize fully, let alone accomplish. And I will make a task as needed to accomplish them. But I don’t have time to make all those tasks and relate them inside my task list now, so I’ve been putting them into notes.

Then when I create a reminder task I just annotate with a file reference, task 123 annotate see example.md. Then when I get to that task it will look like:

maiki@deck:~/docs/notes$ task 226

Name          Value                                           
ID            226                                             
Description   create fedora games list
                2021-12-15 14:26:13 see fedora.md
Status        Pending                                         
Entered       2021-12-15 14:26:02 (2min)
Last modified 2021-12-15 14:26:13 (2min)                      
Tags          interi
UUID          6403076e-5ddc-4abf-ae4f-9b8cc19fd659
Urgency        0.8                                            

    tags    0.8 *    1 =    0.8

Date                Modification                        
2021-12-15 14:26:13 Annotation of 'see fedora.md' added.

I work on my notes on more devices than I process tasks, which means using simpler components (taskwarrior, syncthing, markdown text, etc.) allows me to customize my use without relying on a central system. In this case, as I update my notes more often, and on more devices, than I process tasks, it is simply a matter of which share I sync between devices.


Today I mistyped “start” as “stat” and found a report I hadn’t seen before:

maiki@deck:~$ task stat

Category                   Data         
Pending                    12           
Waiting                    8
Recurring                  6            
Completed                  1339
Deleted                    459          
Total                      1824
Annotations                693          
Unique tags                45
Projects                   0            
Blocked tasks              4
Blocking tasks             1            
Data size                  55.2 MiB
Undo transactions          57160        
Sync backlog transactions  57160
Tasks tagged               100%         
Oldest task                2018-11-05
Newest task                2022-01-20   
Task used for              3.2y
Task added every           15h          
Task completed every       21h
Task deleted every         2d           
Average time pending       9d
Average desc length        26 characters

The oldest task is from 2018-11-05, and I started this topic 2018-10-14, so I probably wiped my database at some point after an initial use period.

Task added every           15h          
Task completed every       21h

:thinking: Doesn’t seem sustainable…