There’s something to be said for the idiom “if you want something done right, do it yourself.” In the world of software, “right” is perhaps not the word to use, as it’s more about personal preference than anything, but the end result is still the same. That’s why I finally threw Astrid out on its virtual butt and created my own todo list system.

(Turn down the audio on the video quite a bit, or you will get a heart attack when the Say actions trigger)

I cover Tasker quite a lot, for the simple reason that it’s capable of doing the work of hundreds of other single-purpose apps, hence I could cover hundreds of ways of using it. When I first started using Tasker, it confused me to no end. I got it because the combination of Tasker and Astrid allowed me to create intelligent todo list notifications that would trigger on events other than just time. Over the months that followed I experimented with different ways of triggering my tasks, until I settled down on two “special” todo item types: Morning and Shopping. I get notified of any Morning items when I wake up, and any Shopping items when I leave the house. On top of that I have my normal calendar that I use for time sensitive events, and a “dumb” todo list with items that I don’t need alerts for, normally things like ideas for articles to write or apps to check out.

Back then, this system was like magic to someone who’d been using an iPhone for too long. It also introduced me to Tasker, which I kept playing with and learning to do more with. The more I integrated Tasker into everything, the more annoyed I got at the Astrid system that once impressed me.

First of all, the Astrid/Tasker combo works only one way: Tasker can trigger Astrid. This means that Tasker can set off Astrid alerts, but Astrid alerts can’t set off Tasker tasks, at least not in any practical way. This means that I can’t e.g. incorporate a a spoken notification of new Astrid items in my existing Tasker morning message, the one that already tells me weather, how long I slept, and several other things. It also means that I can’t pass data from Astrid onto widgets, nor can I create custom notifications for Astrid events using Tasker.

These issues are however minor compared to the real problem with Astrid: Bugs. The only thing more consistent than the developer’s tendency to ignore emails is the introduction of new bugs into the app. Things like the widget becoming bugged when you check off items in it, sync not working properly, emailed tasks suddenly disappearing, and duplicate tasks appearing at will. When the app recently started forgetting list tags (which are essential for my Morning and Shopping systems to work) at random, I finally had enough of trying to use an app from a developer that doesn’t give a rat’s ass about anything.

One advantage I have now that I didn’t have when I first started using Astrid is that I know Tasker very well. Well enough to more or less create whatever I need with it, including a todo list system. My goal in creating the system was very simple: Create an replacement for the parts of Astrid that were unique, meaning Tasker integration. As such, the system complements my calendar and a widget-based todo list, the latter of which has all the todo items that I don’t need to be alerted of. That leaves the Morning and Shopping items.

I won’t go into exact details on how I set this up, as it’s frankly too far above beginner level to be tutorial material. I will however answer any specific questions on how the technical side works, if anyone should have any. Other than that, here’s how the system works, as demonstrated by the video at the top:

  • Data input is done via a Tasker Scene (custom interface). It has a text input field for inputting the todo item title, buttons to select Morning or Shopping tags, a Save button, a confirm button to close out of the scene, as well as two text fields that list the contents of the two lists. The Save button saves the text in the text input field into one of two text files, one for each tag. Tapping one of the lists opens up the file in a simple text editor in case I want to edit it, while holding down on the list gives me the option to clear it. I didn’t create a system for checking off single items as both of these lists are things that I tend to clear all at once, and in the rare case I don’t, I can edit the files. The flashing you see when the scene disappears and reappears is a lazy way of updating/resetting all the elements at once by destroying and they showing the scene, with a one second delay between those to avoid it being too quick for its own good.
  • The Shopping list is read into a variable as part of my Outside profile’s start task. If it contains any items, it plays a notification message saying “You have new items in your shopping list” and puts a notification with the list contents in my notification list. It also sends the contents of the list to a Minimalistic Text widget on my Widgetlocker lock screen, thus allowing me to check the list without ever unlocking my phone. The Widgetlocker list disappears when I come home, regardless of whether there are still items in the list. If the list contains no items, it does nothing.
  • The Morning list triggers when my sleep mode is deactivated, which happens automatically when I unplug my phone from AC charging in the morning. If the item contains any items, it adds a message to my existing morning message, and puts a notification with the contents in my notification list. If not, nothing happens.

Compared to the Astrid system I used prior to this, the new DIY system has several advantages:

  • More reliable, because, you know, Astrid isn’t.
  • Being Tasker based means Tasker has access to the data (duh). This means that Tasker can change its behavior depending on the list content, i.e. include a message in my morning message and play a notification audio file when there are items in my Shopping list.
  • Customized interface with only the buttons and features I need, not heaps of priority tags and whatnot that only end up annoying me.
  • Ability to send and remove data from a widget.
  • Separation from my “dumb” todo list. I have no need to see listing for “buy bananas” in between article ideas in my todo list widget, which was a necessary evil with Astrid. Having it separate means it’s out of sight, out of mind until I get the notification.
  • Performance. This method doesn’t require anything additional to run in the background, only the existing Tasker process. This isn’t really noticeable in practice, but I might as well mention it.
  • Sync. Not only is Astrid’s sync bugged, you also cannot control certain types of syncing from outside sources (Tasker). I don’t currently sync my DIY todo list, but should I ever need to, I just need to make Dropsync sync the text files, a system I’m already using for other things and that works perfectly.

At the end of the day, this isn’t exactly a solution that most people would go for. It isn’t really very hard to do if you know Tasker, but there are multiple scenes, tasks, and profiles that all work together in a way that is easily broken by a small mistake. I’m very pleased with how it worked out though, and this is tailored for my needs after all. I guess it’s kinda ironic that the app that made me start using Tasker, Astrid, eventually got replaced by it.