Archive of published articles on May, 2009

Back home

MindMeTo

15/05/2009

MindMeTo is a reminder service which makes use of Twitter to introduce the concept of social task management. We launched the service earlier this week and so far reception has been great. It was my first time working with Alexander Kohlhofer and Filip Visnjic, and I enjoyed the project immensely.

Perhaps the most interesting aspect of working on projects such as MindMeTo is that problems will come along that totally knock you out of your comfort zone. In terms of web programming, it’s pretty easy to get yourself in a groove. You create countless websites which essentially use the same techniques, the same database and session abstraction classes, the same schema and queries, etc.

One of our major goals with MindMeTo was to make a service which was both quickly accessible, but also highly extensible. It became clear that, in order to allow the service to feel instantly familiar for new users, we would have to rely on a human-readable command structure. Take the following MindMeTo request as an example:

  1. @mindmeto buy some cat food tomorrow.

Even if you had no comprehension of what MindMeTo was all about, you’d still understand the request. What’s really interesting is the social implications of running a reminder service through Twitter. Given that reminders can be set via @reply (as well as Direct Message and through our web interface), the request is already framed within a particular context. When put in context, the full command reads a little something like this:

Remind me to buy some cat food tomorrow

Now ask yourself how many times you’ve said something similar to a loved one, and hopefully you’ll see what I’m getting at. Reminders are largely a social construct, and I think it’s interesting to see how they’ll behave on a service like Twitter.

Of course, the problem with introducing a service to such a social environment is that people naturally expect to communicate as if they were talking to a person. Specifically when setting a time and date for reminders. To tackle this problem, I considered timestamps in two basic capacities: specific and vague. It’s possible to set the following reminder:

  1. @mindmeto pickup milk on May 16th at 4:35pm

But it’s also possible to do something like this:

  1. @mindmeto pickup milk tomorrow afternoon

Perhaps the hardest aspect of developing a system devoid of any form of syntactical delimiters is that our parsing engine has to make an informed decision based on a number of potential results. Firstly, we must figure out where a reminder finishes and it’s timestamp begins. To do this, our parsing engine relies on what I call contextual flags. Let’s take another look at our two previous examples:

  1. @mindmeto pickup milk on May 16th at 4:35pm
  2. @mindmeto pickup milk tomorrow afternoon

While they differ greatly in the level of detail used to set the reminder timestamps, both carry contextual flags that MindMeTo recognizes and acts upon. Contextual flags also (as you may have guessed) help us to put the timestamp in context. A contextual flag of ‘in’ suggests that the timestamp we’re receiving is relative to the current time, for example:

  1. @mindmeto pickup milk in an hour

Is the system perfect? Far from it. But it doesn’t need to be. The beauty of introducing a human-readable format is that we accept the possibility of error (to err, after all…). After all, if you were to ask someone to remind you of something and they didn’t understand the request, they’d simply ask again. Provided the service fails gracefully, the user’s given another opportunity to express themselves. It’s our job to give them enough options so that hopefully they eventually find a way that is most suitable for their personal usage.

No Comments

Diabetting

14/05/2009

It’s always the simple ideas that people seem to be captivated by. Recently, in an attempt to force myself into taking my status as a Type One diabetic more seriously, I setup Diabetting as a way of putting a fun slant on an otherwise serious illness. Not only that, it got me checking my blood sugar regularly and really considering my diet.

The project took a day or so to complete and after putting it online I pretty much forgot about it. However, it looks like the site has proven popular. Having been featured on OnePageLove, the site gained traction and began appearing on various different blogs (and even a few wikis), before becoming a popular story on Metafilter.

The site was primarily put up for my own benefit, but it’s also become a platform for additional information on diabetes. Looking at a few of the comments from Metafilter, it looks like the site has gone down as it was intended:

This is great, it is an excellent way to motivate him to be sure to take his readings, and will really improve his health while possibly settling the odd bet. Win-win!

this site is great for diabetes understanding promotion. demonstrating a little fun shows that you too, can have fun with type 1.

And although I’ve never played Dungeons & Dragons in my life, this one put a smile one my face:

I have trouble taking my blood sugar as often as I should. If I were a nerdy computer programmer I would totally do something like this to force myself to take it.

Unfortunately, I am a nerdy D&D guy, so I just roll a D20 to make a constitution check.

2 Comments

Peeq v1.1

10/05/2009

Just a quick post to tell you all that I’ve (finally) found the time to release Peeq v1.1. Aside from a few bug fixes, the major addition in v1.1 is the ability to specify how URL spacing is encoded (which is handy for Wikipedia-type searches, which require underscores).

You can grab the latest version here. Those of you who are unfamiliar with Peeq can read up on it in my previous post.

1 Comment