Fri, 07 Aug 2009

Live Feedback Mashup: Tinychat + PollDaddy + Windows Azure

We’re doing something that I think is really cool.  We’re trying an experiment in live customer feedback called the Windows Azure Lounge.  Read more in my previous blog post.

The technology’s kind of neat too, so I thought I’d do a quick round-up of what we’re using.

Chat - Tinychat

For the real-time chat, we’re using Tinychat.  We took a look at a few technologies (including LiveMeeting and IRC!), but at the end of the day, nothing else was as lightweight and easy to use as Tinychat.  I do have a couple gripes (limited size of the window, and an annoying habit of Tweeting on users’ behalves), but it seems to be the best at what it does.

Surveys - PollDaddy

One interesting capability we’ve added to the Windows Azure Lounge is instant surveys.  For this, we’re using PollDaddy.  Like Tinychat, it seems to be the best at what it does.  We’re embedding the surveys on the page, and surprisingly, getting this to work was one of the hardest parts about building the application.  (I had to wade through some of PollDaddy’s JavaScript to figure out how to get this to work… it looks to me like the feature to embed surveys on a page wasn’t designed for AJAX.)

AJAXy Goodness - ASP.NET MVC and JQuery

Our goal in creating the Windows Azure Lounge was to have the flexibility to modify everything during the chat.  That includes a list on the sidebar of the Microsoft employees who are present in the chat, the agenda, and surveys that we create on-the-fly based on what we’re hearing.  Because the chat window itself is embedded in the application, having users refresh to see changed content wasn’t an option.

These days most web applications I build use ASP.NET MVC, and this was no exception.  I used partial views and JQuery script to handle the AJAX here.  The most interesting bit was probably a small but important animation that highlights new surveys in yellow as they appear.  I’m using output caching to avoid having to build similar lists and HTML over and over, and the timeout on the cache corresponds with the client-side timers on the page that fetch the content.

Getting it Out There - Windows Azure

This was something of a rush job.  I spent about a day and a half doing the design and writing the code, and approximately no time deploying it, thanks to Windows Azure.  For the few dynamic things we’ll manage before and during the chat (start time, agenda, employee roster, and survey list), I created a simple admin page protected by a password.  The data is stored in a single entity in Windows Azure tables.