Create Backpack reminders via e-mail/SMS

It’s no secret that I’m a huge fan of Backpack. And though it’s great to store all my miscellaneous info and personal mini-projects in one central location, I’d forget to do anything without Backpack’s reminders feature. It’s simple and it works beautifully.

The one problem I have with Backpack reminders is that I almost never think of the things I need to be reminded about when I’m sitting at a computer. So, what I’ve done is whipped together a quick Rails app that gives me the ability to create Backpack reminders via e-mail or SMS. Here’s how it works:

  1. Realize that you haven’t called Aunt Betty in a while.
  2. Whip out your phone and type call aunt betty sat aft into a new text message.
  3. Send the message to “”.
  4. The script I wrote picks up the message and sets a Backpack reminder for Saturday at 2pm with the text call aunt betty.
  5. Go about your business until Saturday afternoon, when your Backpack reminder fires off, and alerts you either by e-mail or SMS.
  6. Call Aunt Betty and stop feeling guilty.

You can use any e-mail program to send a reminder message to the “remindme” address, which is handy when you’re in front of a computer. The SMS example above relies on the feature most cell phones have in which a text message sent to an e-mail address magically “becomes” an e-mail.

You can enter the date and time in either order. Here are some other examples:

  • Call Dave (reminds you in three hours)
  • Pick up dry cleaning 5pm wed (time comes before date…that’s OK)
  • Make doctor's appt tom (reminds you tomorrow at 9am)
  • Pick up dinner 5pm (reminds you today at 5pm)
  • Send in taxes 4/15 9:30am (You do pay your taxes, right?)
  • Report for active duty 9/1/07 15:00 (Sept 1st of next year at 3pm)
  • Post files soon (reminds you in 10 minutes)

Those of you that use Backpack reminders already will recognize morning and afternoon corresponding to 9am and 2pm, respectively. I also added the keyword of night (or nite or even nit) to translate to 6:45pm. Call Dave later will work the same as Call Dave, reminding you in three hours. I also added soon to remind me in 10 minutes because you’d be surprised how quickly something flies out of my brain. Finally, you can enter the input text into the subject line of the e-mail or the first line of the body itself.

How can I use this for myself?

This is the tricky part. Essentially, you will need a web hosting account to make use of this. The script is written to work with my (awesome) host, Joyent, which can be configured to call the script when an e-mail comes in and feed it the message. This is definitely the most reliable way to do this and I highly recommend it.

If that doesn’t scare you, just download the Ruby script and configure your web host to launch it when an e-mail arrives at a certain address. In my case the message is passed to the script via good ol’ STDIN.

How does this work?

The parsing was not that hard, really, because Ruby’s such a cool language and has so many great features baked right in. This definitely would have been a bigger pain to write in Java, severely reducing the fun factor. Also, I’ll note that this took me about a week of nights and weekends to put together, and I’m not a Ruby expert.

I need to give credit where credit is due and point out that this was possible to put together because the good people at 37signals have released a really nice API for Backpack. But, more than possible I’d say it was easy to put together because they went one step further and created a sweet Ruby wrapper that made the Backpack calls drop-dead simple. The only way they could have been better is to add this feature into the official Backpack product and render my silly hackery irrelevant. (Hint hint!)

One gotcha: since there’s no way to determine which time zone your Backpack is in through the API, you may have to hard code some stuff in there to offset if your web host is in a different time zone than you.

Happy Backpacking!


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s