For the last two months, I’ve been using TaskWarrior to stay organized at work and home. I use it to track time on work-related projects, record personal goals, and remind myself of daily and weekly chores. TaskWarrior is an amazing TODO application that has completely changed how I stay organized. It’s simple yet powerful and as the official description says, “it does its job then gets out of your way.”
There are many, many ways to use TaskWarrior which makes it easy to adapt into any workflow whether you’re a heavy organizer or only need simple reminders to stay on track. There is no right way to use it.
> Get new todo app— 〰 (@darylginn) April 22, 2016
> Create lots of tasks
> Never open app again
> Get another new app
> Tell yourself it will be different
Over the months, I’ve collected some notes on how I like to use TaskWarrior and how I surprisingly fit it into my current workflow. It goes a little something like the below.
“We’re going to be launching this Thursday”
You got it.
$ task add Launch that thing Thursday project:Shutterstock.Bigstock priority:H due:thursday Created task 40. The project 'Shutterstock.Bigstock' has changed. Project 'Shutterstock.Bigstock' is 90% complete (2 of 20 tasks remaining).
And done. It’s a proven concept that writing things down makes us more likely to do them, which is the primary reason I like TODO lists.
Cool, so we can add TODOs .. big deal, right? Anybody with a free subscription to some e-learning site can make an app to do the same thing. Let’s explore the extremely powerful simplicity of the command we just wrote.
$ task add Launch that thing Thursday project:Shutterstock.Bigstock priority:H due:thursday
Here we’re adding a task with a
due date. Let’s explore each attribute a little bit more.
To help myself stay organized, I break all my tasks into categories and sub-categories, or rather projects. This allows me to filter tasks by project’s such as
project:Personal or a more narrower
project:Personal.Chore. We can even do reporting on our projects.
Let’s see how my performance at work as been.
$ task burndown.weekly project:Shutterstock
As you can see, TaskWarrior gives me a pretty decent breakdown of my activity at work. If I wanted to explore my work on Bigstock, I could simply filter by
$ task burndown.weekly project:Shutterstock.Bigstock
We can also break down our progress by day and month.
$ task burndown.daily project:Personal
Tasks aren’t always important. Sometimes I’ll create tasks to remind myself of things I’d like to someday do but maybe it’s not all that important if I do or don’t. For tasks like those TaskWarrior comes with some pretty nifty built-in keywords.
$ task add Buy a house due:someday Created task 41
This creates a task due 21 or so years from now.
For other tasks that are more-or-less important we can label them as such by using
priority:L. Priorities play a significant part in calculating the “urgency” of the item which we’ll talk about in just a moment.
Obviously we want our tasks to have due dates so we do this by appending a
due:[date] attribute to our command. As you saw earlier, TaskWarrior comes with built-in keywords that we can use such as
today, and many more. You can even write natural language strings to create due dates.
# Due tomorrow EOD due:'tomorrow + 18hours' # Due next week due:'1week' # Due 6 months from now due:'6months'
So I said TaskWarrior is powerful but so far all I’ve noted are standard TODO app functionalities. Here’s where the core of TaskWarrior comes in.
Each task you create is automatically calculated to determine a “Urgency” score. In essence, TaskWarrior automatically priorities our next task and displays the top-most important tasks we should be focusing on. Here’s what my current list looks like.
I tend to keep a busy life.
We can dig into why TaskWarrior assigned certain urgency scores. Let’s dig into the chore I’ve yet to do,
$ task 34 info
Here we can see the calculation TaskWarrior is performing to determine the urgency score. It even shows us the last edit we made!
Suppose you write a task but it’s not something you want to see everyday. For tasks such as these we can append the
$ task add Clean apartment due:'Saturday' wait:'Friday'
TaskWarrior will now only show me this task after Friday, convienent when I have a thousand other tasks on my plate and my messy apartment can wait.
Some activies we do over and over, like cleaning the messy apartment. This is extremely easy with TaskWarrior by appending the
$ task add Clean apartment due:'Saturday' wait:'Friday' recur:'1week'
Now we’ll only be reminded to clean the apartment on Friday to be done by Saturday and TaskWarrior will remind us to do it each week.
An incredibly powerful feature that I often use for more complicated tasks is the
depends:[id] attribute. This sets a task to depend on another task which significantly alters it’s urgency score. Tasks that are blockers for other tasks are automatically put at the very top of your list to make sure they are done before anything else.
# We need to get an external harddrive before we backup our computer $ task add Buy harddrive due:tomorrow Created task 42 # Add a new task to backup our computer $ task add Backup computer due:tomorrow depends:42 Created task 43
Done! Now when we look at our todo list using
task, we’ll see that 42 is the most urgent task we need to work on.
Not only does TaskWarrior organize, it also keeps track of how much time you’ve spent on activities. You can start and stop the timer for tasks easily.
# Start a timer for a task $ task 33 start # Stop the timer/mark it done $ task 33 done
When you run
task burndown you’ll also see how many tasks are in progress which is powerful when managing any number of projects.
Like any proper TODO manager, TaskWarrior also keeps you synced across your devices; however, it is a bit cumbersome to setup.
Right now, I’m running a $5/mo Digital Ocean droplet that powers a few web utilities including TaskServer which keeps my work laptop, home desktop, and personal laptop all in sync. I’ve setup cronjobs on all my devices running TaskWarrior to sync to the TaskServer every minute so I can be sure I’m always be up to date.
The more I grow as a developer, the more I find it impossible to live without a good TODO manager. I’ve tried desktop clients and web applications but I never liked how over-engineered they often were. In my opinion, TaskWarrior is the perfect TODO manager and is perfect for anybody that spends 90% of their time in front of a terminal. It’s easy, it’s extremely flexible, and I’m learning new ways to use it every single day.
If you’ve considered picking up a new task manager, I seriously recommend giving TaskWarrior a shot. You might just end up changing your whole workflow for the better.