Wednesday, June 29, 2011

Greasemonkey, jQuery and Strophe

Greasemoney is a Firefox add-on that allows third-party applications to add functionality to any site. With javascript libraries such as jQuery, it becomes really easy for a newbie to do this now. In fact, there are thousands of example Greasemonkey scripts to learn from today.

I needed to connect a conversational recommendation engine that recommends relevant content including people for domain specific conversations. When recommending people for different conversations, there is not much transactional value unless the system can bi-directionally ping the users (the recommended user should also get notified about the conversation so that she can possibly respond to the users in the conversation).

Trying to implement this functionality for a third party site, I found this neat XMPP library called Strophe. With the new HTML5 CORS specification, it becomes straightforward to use this client-side IM library for Jabber notifications on external websites using scripts. I had to add just a couple of lines in my apache server comfiguration to enable this feature. I will be updating the scripts online (with notifications) here.

When Information Technologies meet Communication Technologies, a new dimension is added to the existing IT space that allows realization of Vannevar Bush's 'As we may think' ideas. For example, I used Google+ ysterday which seems to have twined a nice combination of these two technologies together (ICT) with feeds from various networks and a logical integration with mail, chat, buzz and blog servers. Google wave failed initially for many reasons such as arriving too early in time and poor interface(with becoming an Apache project, I am sure there will be many cool applications coming out using the technology) but I thought it was a very cool project.

Thanks to open source technologies and foundations (eg. Apache) that have made available tremendous high quality projects and resources available to community to build up on and do creative stuff with it.

Friday, June 17, 2011

Cobot: Modeling long term user activity with time

What are users getting interested in with time?
How are the interests changing/evolving?

These are two important questions Cobot tries to ask and answer. More specifically, Cobot uses domain specific dictionaries (for Health and Education domains) to extract concepts from user's conversations and deciphers user's short term and long term interests based on her conversations.

Here, you will see a couple of LTM (Long term model) graphs for a user asking questions on a site about Math topics in March this year snapshot-ed every 3 days (or more depending on activity).

In these graphs, you will see some new terms getting added, and associations between terms (based on multiple co-occurrences in STM) developing and decaying with time.

What We are trying to do is to heuristically infer some parameters like window for snapshot based on activity(related to user's short term and long term memories), learning and unlearning rates (how fast are users learning and unlearning things - related to semantic memory) for every user, etc. This modeling (done well) eventually helps Cobot to pick right users for recommending in different conversations. (We do a Spreading Activation search in user's LTM graphs mixed with other techniques for user recommendation.)

(There is a similar vector space based model for modeling user's STM (short term model) interests as well in Cobot.)

Thursday, June 02, 2011


How should news look like for both publishers and consumers? Here is one quick sketch of a news publishing/consumption prototype.

There are some neat startups in this arena (like zite, flipboard, gabacus and ctrl-news) that blend together amazing UI with great backend filtering and communication technologies.