The US Open CourtConnect site allows you to watch in real-time what people are talking about on Twitter and Facebook regarding the US Open. You can see personal photos taken right at the event by the general public, as well as those tweeted by players, experts and celebrities. CourtConnect takes the tweets and status updates and automatically color commentates by attaching facts relevant to the keywords in the message. It also highlights experts, players and celebrity tweets so you know who is who.
CourtConnect was built in Python using Django 1.3 and jQuery using Masonry in a very compressed timeline by Rudy Menendez, the team at Blenderbox and myself. We were able to use APIs from Mass Relevence and Pusher to push this site through that timeline. Other cloud services used are Embedly and EC2.
The architecture If you've ever heard me talk about loosely coupled architectures, you know I'm a huge fan. Loosely coupled processes do not completely depend on any other process behaving properly or at all. An example of a loosely coupled process would be how your smartphone's email program depends on an internet connection. You can still view and even compose an email without that internet connection working properly or at all.
Because CourtConnect is loosely coupled, processes can go down for maintenance without breaking everything. Even Pusher.com, a service which has performed flawlessly, can go down and we can fallback to simply serving static files instead of pushing data.
Besides reliability, performance is very important to serve the real-time requirement. We use multiple threads to poll the various APIs and to process these tweets and attach US Open related facts to them. Multi-threaded development is a book or at least a blog-post onto itself so we won’t dive into that. It would not be required if real-time was not important.
This project would not be possible in the time it was done without Django’s maturity and the cloud services available on the market today. Mashing together of cloud services along with a little clever optimization and keeping them loosely coupled can produce a world-class site in less time than ever.