Monthly Archives: November 2011

Personal Mobile Assistant

I’ve been thinking more about this natural language processing. I’ve taken moving an appointment as my example:

“Move my next appointment to 4 o’clock and send updates”

How would I process this?

I’d start by looking for a subject term – in this case “appointment”.  Then I would look for whether I’m processing a new or an existing item – “next” (without the word new, as in “new appointment next to” etc.) signifies an existing appointment.  So what do I want to do with it?  Delete, move, cancel, see / hear details?  Where am I moving it to? 4 o’clock – most likely PM.

This makes me think a lot of these tasks can be broken into flows like this, which would eventually look like a big tree diagram.

Surely you could then create some kind of interpreted language to build this tree, open it out to the web and have user submissions through some kind of web app, with peer reviews of each processing step.

Again, anyone want to join in and help?

A Close Call

I should have posted this back when it happened, at least October wouldn’t have been such a dull month* on here:

Note this is my first day back cycling after being knocked off….

* Is it ever actually not dull?

Is a server based app best for mobile processing?

As much as I think it’s a gimmick, I like the Siri adverts. Mostly because I like gimmicks. Anyone who knows me knows I will never buy an Apple product, so I’m looking for an Android alternative. The current front-runner appears to be Iris. I was looking through their blog, and found this post.

Their whole release flopped because the volume of requests took the server down.  Apparently natural language processing is hard and so needs to be done by the server, however the server has to handle thousands of requests, and there is a network overhead.  My phone is over 18 months old and has a 1GHz processor (HTC Desire) which is more powerful than a PC I had 10 years ago.  Dividing server hardware (even chunky servers) by thousands of users comes out at less power being allocated to me than my phone has.  New phones are dual core 1.2GHz plus, and there are rumours that phones around the corner will have quad core processors.

When building server apps at work, I’ve often wanted more processing power and have wondered about all the wasted processing power on the phone-monkey’s machines (this isn’t a derogatory comment – my day job splits me between being a code-monkey and a slide-monkey).  Folding@home is all about distributed processing power, so when security of data is less important offloading tasks can be hugely beneficial, especially if the data processing is easily split into chunks and you have a large user base.

Surely these two things can be pulled together…

What would I do if I was building this application (and I’m tempted to try – let me know if you want to get on board)?  I would first write my algorithm, making sure it could be coded in a number of languages.  I would then build and test a phone and server version.  Finally, I would route the processing to the optimal place – on a fast phone it would be done locally, and on a slow phone it would be sent to the server.  Simples.