MOTIVATION
The objective of the proposed system is to provide real time event tracking service to the users coupled with other services of social collaboration and event personalization.
Events play an important role for college students as they facilitate:
Knowledge Sharing: Events have renowned lecturers sharing their thoughts and research findings on a topic with all.
Building up of Social Network: You get to meet with different people from various domains and interact with them. This way you can build a good social network which helps in your personal as well as professional life.
Events host companies which are on a look out for student candidates as prospective employees for working with them.
Events have other attractions too like food stalls and raffle prizes.
However with large number of these events hosted at different locations around the campus at different times it becomes difficult to keep a track of all of these.
This precisely is what motivated us on coming up with an Event Tracker, moreover a
Real Time Event Tracker.
OBJECTIVES
The GT ComET Event Tracker is built with following objectives:
Making event tracking simple for the user, by providing a UI that facilitates what exactly the user is interested in:
- Typically this is the topic of the event
- The take-aways / attractions at the event
- The location and time of the event
The system provides event personalization so as to allow the users to customize the events in the most intuitive fashion for them.
Tracker presents a visual representation of the events thus facilitating direct mapping of events with the venue thus also helping user locate it by proper directions.
Users used to track their events with their preferred event trackers still should be able to integrate with them.
Users should be able to collaborate with each other over an event.
Users should be able to come up with their own personal plans.
THE ARCHITECTURE
The client connects to the GTComet server using a login id and password.
The GTComet service retrieves details of the events for which the user has subscribed to from the GTComet database. The service is built using a jetty server supporting an implementation of cometd. The main purpose behind using jetty was to explore the feature of continuations. This feature allows the server to handle multiple connections.
The event data is entered into the database using an Event form. This is done using javascript and jsp. The front end is designed in HTML and CSS. This functionality can be used by administrative assistants of various departments to enter events into our system.
Another way of getting event details is by crawling. The event pages shown in the diagram are the event pages of different departments. The crawler would go to the individual pages and extract relevant information pertaining to the events.
The shout box is integrated with the GTComet service. It provides the functionality of broadcasting messages to all the users.
FUNCTIONAL COMPONENTS OF THE SYSTEM
1. A map based visual representation of events
Since, we want to show events around campus, the best way of doing so would be a representing them visually on a map. Hence, we have used the Google Maps API. In order to make it even more intuitive, we have used a KML file that overlays atop the map and shows the building in the campus. If there are multiple events to be held in a building, we show them using a tabbed information box as shown above. The event details are displayed along with other options such as “Add to briefcase” and iCal/vCal. We have also implemented an event notification functionality where in these details will be displayed in red after a certain amount of time before the event is to begin. Other Google Map features such as zooming, satellite views etc are available as well.
2. Shoutbox
A shoutbox is present where in all users logged onto the system can chat with each other. The user logs in by using an alias and can discuss events etc. We have tested this using 20 users and the server is capable of handling this.
3. Tag it!
We have also implemented public tagging by which users can tag any event. Common tags for events would be food, career, freebies, free etc. Since this is public tagging, when a user tags an event the tag can be used to search by any of the users.
Furthermore, when the user clicks on Show
Tags, a list of available tags is displayed.
The font size of tag varies and depends on the frequency of events that have been associated with that tag. On clicking on any of the tags, the user sees the map with all the events that have been tagged with that keyword.
4. Event Subscription
We have used the concept of event categories in order to ensure that the user sees only the events he is interested in. When he logs in, he can subscribe to another category as well and see the events in that category. Also, the implementation of the comet technology comes into play. If a user is logged into our system and subscribed to a particular category say Career
Services. If the administrator of Career Services adds an event to this category, it is immediately displayed to the user without him having to refresh the page. This, essentially is the push-server model that comet uses.
5. Event Filtering
Just as the user can search for events based on a tag, he can also be provided with the option of searching for events in a particular category. The search can be performed over the events in his briefcase or over all the events in present in the database
TECHNOLOGIES
Comet server:
Comet is an architecture in which a web server sends data to the client without the client asking for it. Once the connection has been set up, the server pushes data to clients as and when it is available. In order to achieve this functionality, the server needs to maintain persistent connections with all the client instances. The diagram shown above shows the basic working of the comet server. This can severely burden the server and thus increase latency. However, the jetty server provides a technique called as Continuations.
Using this technique, the request handling thread goes to sleep until it gets a message or times out. When the thread on the server receives a message, it wakes up and sends the message payload sent, back to the browser (which also implies that it's time to send a new request). On timeout a request is made for a new connection.
Dojo:
Dojo is an open source JavaScript toolkit developed by the Dojo Foundation which provides a richer UI experience. The Dojo foundation has made a few attempts at standardizing the comet architecture. In our project, we’ve used the Bayeux protocol. This protocol defines a higher-level protocol for communication between browser and server. It allows the same server to communicate with multiple client-side JavaScript implementations. Bayeux is based on a publish/subscribe model
Google Maps API
It provides an interface to embed Google maps in the application. Google maps API is used in the project to display events on the map. The map provides an intuitive visual interface where in the events are displayed as pins on the buildings.
We’ve also used a .kml file to overlay on the google maps. Keyhole Markup Language
(KML) is an xml based language schema which provides a way for annotating geographic information. The kml file is used as an overlay on the google map to highlight the various buildings present on-campus..
Evaluation and Testing Method
The main testing criterion throughout this project was the scalability of comet.
Scalability should be a fundamental feature of the server being used, since a large number of concurrent TCP connections have to be handled.
Jetty 6's Continuations API lets the Comet application scale to a large number of clients.
The server was evaluated for its performance under 20 clients and checked to see how the server handles open connections to multiple clients and whether this affects the response time of the server. The results were favorable with quick response times.
The main features tested were the shoutbox and the multiple clients subscribed to the same channel.
The testing of the tagging feature of Comet made us realize that a tag cloud would be more beneficial and user-friendly. This would enable users to tag their events using more popular tags making it easier for the other users when referring to these tags.
The alarm feature of GTComET was also tested to consider the timing and the quick response of the alarm when the time was triggered. Multiple clients subscribed to the same event were able to receive the alarm at proper time.
FUTURE ENHANCEMENTS
Event Personalization
Private Chat
As mentioned earlier we have implemented the shoutbox feature where all users logged on to our system can chat with each other. However, a private chat application could be added which will enable each user to have a private conversation with his buddy.
Group Based Events
The events that can be added to the system are those that are being held on campus by different organizations or departments. We could even allow users to add their own personalized events such as “Going for a movie” or “Meeting at the library”. These events would be shared only amongst those invited.
Add Event Crawler
Currently, we have “Add Events” page that will allow the administrator to add events to the system. However, a crawler could be implemented that will periodically crawl homepages of different departments and append them to the database.
Add to MyBriefcase
Past events should be automatically deleted from the system after their completion. However, the user might want to store them with his comments etc. This can be achieved by implementing a briefcase functionality where the user can archive his past events and keep track of the future events he wishes to attend.
Notifications
The current reminder functionality can be enhanced by implementing snooze and dismiss option. Furthermore, users can also be notified of events they are interested in through emails or mobile messaging. To take our system one step further, we even propose integrating the
Georgia Tech emergency alert system. Weather alerts and other critical events can be notified using this.
Import to iCal/vCal
In spite of providing these various features, if the user still wants to import the events to standard calendar formats like iCal/vCal, this option can be provided as well.
BIBLIOGRAPHY
http://dojotoolkit.org/book/dojo-book-1-0
http://www.mortbay.org/jetty-6/
http://docs.codehaus.org/display/JETTY/Continuations
http://code.google.com/apis/maps/documentation/index.html
http://code.google.com/apis/kml/documentation/
http://flickrvision.com/