I picked TaskWarrior as an entry point into CLI todo tools. There are a lot of them, and the struggle between Danny-O’Brien-style “just write it in a text file” minimalism and … the other extreme … is real.
I picked TW because it has been around forever. I will not presume to judge its design decisions. I can tell a few strategically placed aliases would do a lot to remove the sense of crushing overhead. I also picked it because it is super scriptable, so it was easy to build a tasks backend into my contacts TUI with it.
I decided, alongside implementing TaskWarrior support, that I’d probably better implement Things support. Of all the task management tools I’ve ever used, Things has been the most sticky, because it’s always lurking around whatever device from the last time I used it, and it is so easy to ramp back up. Whenever I pick Things back up again I collapse the sidebar and live in the Inbox list until it gets to the point I’m setting up projects again. So I added Things support in case TaskWarrior turned into a misadventure, as these things can.
The best way to describe my relationship to any task management tool is probably “anticipated decay” I never get into one thinking “this is it forever.” I know it’s going to follow a cycle:
- Tentative first steps, barely justifying its existence over a legal pad or Apple Reminders with just one todo list
- Creeping complexity: Projects, areas, tagging, subtasks
- Data entry simplification. If there’s a hotkey, widget, Raycast thinger or whatever, I’m all about it. This is always the beginning of the end. It really should not be easy to make work for yourself.
- Fully operational battle station. A sense of pleased familiarity when I review what’s in it each day.
- Minor vibrations and oscillations as priorities shift; increasing in intensity until I dread reviewing what’s in it each day.
- Collapse. I go into crisis for a few weeks and write a few hasty export scripts to at least remember what plates were spinning. Then I walk away.
Inevitably, somewhere between the “things are getting real with this thing” and the “I need to make the process of making work for myself buttery smooth,” the mobile or multi-platform questions rear their heads.
I imagine life without being able to consult my many deliverables from my phone and some unpleasant part of my personality sends a jolt to the pain and nausea centers, hitting the intersection of old work trauma and pigheaded nerd completionism.
The old work trauma is simple to explain:
My first well-paying job was for an online content play whose leadership utterly failed to anticipate the devastation of the dotcom bust in the early aughts.
When they hired me I was a recently discharged paratrooper splitting my days between running a database for a school and doing secretarial work. The pay was miserable, but my half of the rent came out to $250 a month so I spent my time screwing around with that database and getting called “four-eyes” by the kids who got sent to the office. I wrote a long comment about man
pages on Slashdot that caught the attention of a Linux.com editor who turned it into an article, and that caught the notice of a website editor who offered me 3x the pay to come write a story a week, moderate comments, and keep a newswire site running.
So when the good times began to run out the next year, and the layoffs started, my little workgroup went from 15 people to just me in about six months because, I later figured out, “3x part-time database, part-time secretary pay” was still pretty cheap in the online content world at the time.
But I was terrified of losing that job. Terrified at the prospect of being laid off. I spent one nine-month stretch working every single day of the week. I got good at a very primitive sort of early 2000s mobile computing because if I wanted to leave the house on a Sunday afternoon, I needed to at least moderate comments from a device, somehow.
Eventually some things went really, really wrong with that place and I quit caring whether I kept the job or not, and I finally just left and went back to school, but I never really lost the habit of thought that some mobile access is very, very important.
When I pause for a moment and have a thought, I realize that is mostly ridiculous.
At work, I live on director time. I’m struggling mightily to imagine a scenario where I would need to know the details of some particular task on the spot, or where it would not be okay for me to say, “you know what, I know that’s in my tracker. When I get home I’ll Slack it to you.”
In my personal life, again, no. Groceries, I guess, but those go in Apple Reminders because we’re an Apple family, as do most little one-offs.
Someone, somewhere mightily disagrees with all this. That is fine. I’ve been reading about peoples’ assorted “systems” and “methodologies” for, like, decades. Everyone needs what they need.
And what I need is “less,” because my unchecked impulse is to optimize for things that I don’t need to optimize for just because I can, and because the correct direction for anything having to do with work and a mobile device is toward little more than “whatever I need to answer a management on-call page or do backup 2FA for Okta.”
So as I was fussing around figuring out the useful aliases to set up for TaskWarrior I had a brief “but how do I check tasks on my iPhone?” thought that yielded gratifyingly quickly to “I know there are ways, but just don’t allow for that use case this time.”
So I’m not.
There’s a tiny bit of friction in the system as a result, and I think that is fine.
I do some extra data entry: During the day I have a daily note with Markdown checkboxes for todos I acquire during meetings and 1:1s. I have a calendared reminder called “clear the decks” around five on weekdays that is my cue to sweep the tasks from my daily note into my task system, when I can think about describing them better. My notes tool has an “unchecked box” search I can use to make sure I haven’t missed a stray item.
This afternoon’s deck sweeping netted a few things that I shouldn’t have written down in the first place, and a chance to catch a pattern from reviewing the day that I missed in three separate moments during the day.
As with any CLI tool, a certain amount of practice is in order, so I’ve invested some time doing a lot of manual task entry just to get the basic syntax burned in. Yes, I briefly considered scripting an import, but decided to do it the hard way for the practice, so no AI-fueled moral hazard for me!
(While I was puttering around, I was briefly reminded of when I was a really big fan of the old Remind app, too.)
Anyhow, it’s been sort of interesting rewiring my brain around CLI/TUI tools the past few weeks. My sense of what it means for something to be discoverable, scannable, or legible has shifted a little as I’ve built interfaces that suit my particular sensibility about how to be keyboard-oriented. Things that initially felt a little opaque or closed-in have begun to feel more expansive.
I’ve tried to be mindful about how much time things really take, not just how long we’re sort of conditioned to think things take, or conditioned to believe are more easy or discoverable.
It led to a curious iteration where I got sort of tired of dealing with Emacs as an uneasy citizen of macOS, to deciding maybe if I pared back Obsidian’s UI a ton I’d be happier there, to wandering into my own notes app backed by Helix, where I’ve been able to define what is most legible and discoverable to me.
It is pretty nice to just fullscreen Helix in a kitty session, or split my notes into one Zellij pane and my tasks into another. There are some tradeoffs living that life, but it feels less cluttered.