After reading Clive Thompson’s latest piece, “A Sense of Place”, in Wired about geolocated to-do lists, I decided to try the idea for myself. He mentions apps like Checkmark that pop up items from your to-do list based on where you are. For example, if you are driving near the grocery store it will alert you that you need milk, or vegan cheese, or whatever graces your reusable hemp grocery bag.
However, he also stresses that Checkmark, et al. are based on GPS, which is “crude, because GPS isn’t very accurate.” (Not to mention sapping your already awful battery life… where are those nuclear batteries they promised us?) He goes on to say that “tech like near-field communcations (NFC), Bluetooth, and RFID… could let you embed your intent inside your house or office – reminders that call out at the right time as you pass by.”
Since I just got a new Samsung Galaxy S3, I decided to put this NFC theory to the test. I bought some blank NFC tag stickers
and started sticking them to everything. Here’s my crudely-decorated sticker for Home:
I put them on my desk at home and in the office, and used NFC Task Launcher
to program each tag so when I arrived there, I would put my phone up to the sticker and it would automatically open my to-do list for that location, as well as change phone settings, like changing the ringer to silent in the office or turning on Wifi at home. So far it’s worked great. I love organizing tasks by where I am instead of by time, just because my schedule is pretty random and I like to know what I should do with the things I have around me.
Now for a much more detailed tutorial of my whole setup. (Disclaimer: extreme nerdization ahead. I left no stone unturned, no app unaltered, no script un-hacked: technoanthropologists from the distant future will look back on this and think “Geez, the stuff those neanderthals had to do to get their apps to talk to each other!” ). Here’s my whole to-do list process:
- First, you need a to-do list service that can sync to multiple devices. I chose Google Tasks, since even though it’s API is a bit buggy, it is integrated with all my other Google nonsense.
- Second, you need a to-do list app. I like Astrid Tasks for Android because it’s cute, open-source, has some amazing features, and it syncs with Google Tasks! (most of the time… see above about Google’s API bugs.)
- Now we have your to-do’s to-done, tackle the NFC part with NFC Task Launcher. Here’s the tags I have set up:
- Office (Arriving):
- Set ringer to vibrate
- Turn Wifi on
- Show all Astrid tasks tagged “Office”
- Office (Leaving):
- Set ringer to loud
- Turn Wifi off
- Home (Desk):
- Turn Wifi on
- Show all Astrid tasks tagged “Home”
- Bedside (Weekday)
- Set ringer to silent
- Set an alarm for 9am
- Bedside (Weekend)
- Set ringer to silent
- Disable all alarms
Launching Astrid with NFC
To do step 3, I needed a wonderful app called Tasker. It basically is a scripting engine for your phone. You can monitor events in your phone, and trigger different actions based on those events (for instance, turn on GPS whenever you launch the Maps app, etc.). The cool thing is that NFC Task Launcher can launch any Tasker script when you scan an NFC tag. So here’s how I combined them to launch Astrid to show a certain list of tasks:
To get Astrid to show only certain tasks when you launch it, you have to use a custom Intent
. Thankfully, Astrid is open-source, so I just browsed the source code
to find out how it handled Intents. Turns out, you can give it an ACTION_SEARCH Intent with a query parameter, and it will show you all the tasks whose title contains your query parameter. Here’s the Tasker script that will launch Astrid to show all tasks with “office” in the title:
<TaskerData sr="" dvi="1" tv="1.3.3u2"> <Task sr="task2"> <cdate>1359439958479</cdate> <edate>1359611825161</edate> <id>2</id> <nme>Office</nme> <pri>10</pri> <Action sr="act0" ve="3"> <code>877</code> <Str sr="arg0" ve="3">android.intent.action.SEARCH</Str> <Int sr="arg1" val="1"/> <Str sr="arg2" ve="3"/> <Str sr="arg3" ve="3"/> <Str sr="arg4" ve="3">query:office</Str> <Str sr="arg5" ve="3"/> <Str sr="arg6" ve="3">com.timsu.astrid</Str> <Str sr="arg7" ve="3">com.todoroo.astrid.activity.TaskListActivity</Str> <Int sr="arg8" val="1"/> </Action> </Task> </TaskerData>
Call it “Office.tsk.xml” and import it into Tasker. Then, you just set an NFC Task Launcher action to be a Tasker script named “Office”. You’re all set!
Create Tasks From Your Emails in Thunderbird
What good would this whole teetering structure of hacky popsicle sticks and glue code be if you couldn’t easily make tasks for yourself? Well, I also hacked up a Thunderbird extension so I could create tasks directly from an email (something I do all the time – people will send me an email, and I don’t have time to send a decent reply right then, so I need to remember to do it later. This way I can just right click the email, choose “Convert to Google Task”, and set a due date where I get a reminder in Astrid! Then I just add “office” or “home” to the end of the title and it will show up when I get there! full_circle.gif)
So I found a Thunderbird extension that gets 90% of the way there, called Google Tasks Sync
, which is extremely simple but also extremely useful and the fastest way I’ve found to make a task.
Apparently, though, it wasn’t fast enough. I went ahead and hacked in a context menu, so you can right-click on any email and create a new Google Task from the email. Just set a deadline and you’re done! (I sent my patch to the author and he said he’ll include it in the next update, so stay tuned for that!)
If you made it all the way to here, you are either very brave or very bored! Congrats! If you try some location-based to-do lists for yourself, let us know in the comments!