Deprecated: Return type of I::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 62

Deprecated: Return type of I::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 91

Deprecated: Return type of I::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 71

Deprecated: Return type of I::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 101

Deprecated: Return type of I::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 53

Deprecated: Return type of Collection::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/collection.php on line 80

Deprecated: parse_str(): Passing null to parameter #1 ($string) of type string is deprecated in /home/public/kirby/toolkit/lib/url.php on line 135
One Tap Less | Why I moved my tasks to plain text

Why I moved my tasks to plain text

You've seen a lot of buzz lately from Gabe about TaskPaper, maybe you found this blog through his latest reference. As you know by now, TaskPaper for iOS was discontinued as Jesse, the now solo developer of Hog Bay Software, decided to focus on his Mac applications. If it were a marketing stunt, I would say it has been successful as I bet you never heard so much about TaskPaper on such a short time span. But it is not and now we must look for an alternative to carry our to-dos along with us. Or even create one.

There's nothing more personal than what makes you tick and there's no right answer on how you handle your tasks. That's the biggest challenge for a task manager: be the bump that makes you move forward. After you settle with a work methodology, it would be imprudent to flip the table and try something else. Been there, done that, the next revolutionary app is nothing but a twist from the previous and if you found out what makes you punch the card everyday, then you know what you need.

If I'm forced to set a due date to my tasks, I'll just postpone it until it blows in my bare hands. Enforcing deadlines not only drains my desire to work on something, it also stands in the way of tasks that I'd be pleased to do. Soon I learned my workflow had to be dynamic, then I got the Getting Things Done book and flipped through its pages. Yes, the contexts may be dated by now, but what it implies in the big picture got me hooked.

My system was actually quite simple, all I needed was tasks, sequential or parallel projects, a couple of contexts and a next actions filter. The problem lies in the projects, as without that specification your next actions filter turn out useless, like in Things, after a while looking out, only three apps had the tools I needed: Omnifocus, Nirvana and Toodledo. I couldn't stare at Toodledo for more than 5 minutes and Omnifocus required several perspectives to implement my method and felt cluttered and unwelcoming, so I spent a few months with Nirvana and missed the integration of a native application. The coup-de-grâce arrived with my iPad and the absence of support on the platform. I was drifting away. Again.

While in this turmoil, I was also engaged in learning Python and the power it yielded to my iOS devices through Pythonista and, later, Editorial. TaskPaper was already a known friend, but I never appreciated it much until I snapped: what format gave me the freedom to apply whatever method I wanted wherever I needed it? The short answer is plain text, to which TaskPaper already offered a reliable syntax, expanded over its history by the users to support more functions.

I invited my good friend Pedro Lobo to join me on the venture of creating Python scripts to manipulate the TaskPaper syntax to our demand, implementing the features we needed to achieve the perfect outcome for the workflow I improved over time. In mid-development, the news on the discontinuation stroke us and the project went on hiatus until Gabe gathered a couple of friends to share their TaskPaper management recipes. That gave us the boost to pick the project again.

We created a Github repository to hold our progress and at the moment our main Python script analyzes all your projects for undone tasks that should have been marked as completed according to its parent or children and sets them as @done. It also includes the @next tag to the Next Actions, according to the project type. Regular projects are always sequential (meaning the tasks must be done in that specific order) and projects prefixed with a slash are parallel (indicating the tasks can be done in any order). All subtasks are parallel and we don't plan on extending our script further than that. It also doesn't handle sub-projects as we don't use them at all.

If you run the script right now, you'll find it has a development tasks' list, which we use to cover most possibilities and squash bugs. It probably won't be hard for any regular follower of this blog to use Launch Center Pro to pick the contents of your TaskPaper file from Dropbox using [dropbox-text] and triggering the script to send the results to Drafts with an action to replace the content of your TaskPaper file. This action set is not embed in the script right now because we plan to support this file exchange with the dropbox module.

Our script is still a rough diamond with a lot to be polished still, but it is evolving in a good pace. We hope to soon introduce you to additional filtering custom tags, such as @waiting, @hold and others, start dates (skipping the @next tag in tasks not yet started) and removing the @next tag from @done tasks. The latter is sort of a priority, but besides that we also plan to improve the speed, link directly to Dropbox and return a Status Board's panel for your next actions' list.

Henceforth, wish us luck, me and Pedro still have a long road to trail and all support is welcome, so fork the repository on Github and dance on the music if you know the rhythm.