This assignment was to develop a concept around a two-screen, live event experience; specifically, using TV and computer via internet. Our group’s concept was a variety-style, Gong Show inspired show with binary voting from viewers to determine via aggregate whether a performance was Fly (a rousing success) or Pie (a miserable failure) which received a whipped cream pie in the face. (We’re a classy outfit here..)
My contribution to the project was the web voting interface and database backend as well as a simple API for communicating with it. I wrote the application using the Sinatra microframework for Ruby and utilized couchrest to communicate with a CouchDB database. A control panel interface enabled an operator to update the voting interface status messages and to open the next event for voting. A display page mocked up the live video with Fly and Pie status bars for viewers to watch.
Although the system is very rudimentary, all the pieces are in place for a live voting situation. During the class demo however, the server was crippled by only a dozen simultaneous connections, and become sluggish enough to be unusable. I believe that the problem stemmed from each of the clients polling the database, and couchrest seems to update a view each time it’s requested. CouchDB is quite fast at reads, but far slower at writes, and I think these things combined to make a big problem.
I think that performance could be greatly enhanced if status polling were eliminated, or at least read from static file that was generated by the control application or server when data needed to be refreshed.
Live voting is a tested and successful model, and the class seemed to enjoy the real-time updates at the beginning while the system was responsive. The show itself was successful largely thanks to Gordie and Lisa Maria’s performances (and willingness to take a pie to their faces from Jong Yoon).