In today's lecture (slides uploaded) I have covered (with examples) the new interactive featuers of HTML5 and given an overview of Web Application Architecture which was also recorded so you can check it out.

What I forgot to talk about is the Real Time Collaborative web application. These are the applications where several users work on the same "thing" at the same time and see each other changes. Good example is Google Docs where several users can edit the same document and see the changes live as you type. This is a very interesting (interaction wise) topic but very difficult (implementation/programming wise). The challenge there is keeping everybody's views in sync. The concrete problems are:

  • how to get instant updated - how do you update the view for the user as soon as the change happens. You don't want to be calling "refresh" every milisecond or even second as it will be a significant load and slow done your connection and the server. There are several solutions solving this problem (Comet, WebSockets).
  • syncing the changes - if the same two users edit the same object at the same time you need to negotiate the changes (which one goes first and what happens with the other one). There are set of algorithms known as Operational Transformation that deal with this issues.

As you can see there are soltions and techinques that help you develop real time collaborative applications. However, doing that is definitelly not trivial.

There is a new framework called Meteor that is still in the development phase (and is not recommended for production use), but has some interesting features. Mainly, the above issues are solved directly in the freamework so you do not need to think of them. It syncs everything automagically :). If you have ~10 min I suggest to look at the video on their site that gives a better overview of these features.