A Fuse-day project story: LiveCast - a real-time, live and fun classroom

 In the last fuse day, the Javascript/Flex team partook upon itself to develop a system we named (temporary name – please forgive us for the non-original thought) LiveCast. LiveCast is actually a classroom for real-time e-learning, designed specifically for learning programming related stuff.


At the heart of the system, there's a real-time bi-directional video/audio, shared syntax-aware text-editor, shared drawing canvas and a common text chat box. The sessions are recorded, so they could be replayed offline.


We got the biggest and the best room in Tikal offices, but even that felt rather small, since we were about 12 people at the max... Yea, a real nuclear reactor of creativity; it was fun although crowded and challenging. We didn't do exactly pair-programming, but rather a triplet/quadruplet programming, which was nice, because of the educational value of watching someone else working on a technology that others (and someones he himself) never touched before – after all, that's the real purpose of this FUSE day.


We broke down the mission into a few tasks, and formed groups around each of them:

- Backend

- Client layout and general logic

- Video/audio

- Text-Editor

- Canvas

The chat was left alone, for future development.


The core technology we used was the WebRTC, that provided all our real-time communication needs, mainly the video, but also the canvas communication and later – the chat would use it as well.


The layout, login logic etc. were rather basic and straight-forward html/css with the help of bootstrap ; the canvas painter was written from scratch using the HTML5 canvas API; the code-editor was a deployment of CodeMirror (some backbone.js was used for that) and finally, the backend, was written in node.js.


We used github for our git repository. It was fun looking at the branches graph after about eight hours – I never saw a such a tree growing so complicated so quickly, although we didn't have almost any difficulties merging etc., except for the Canvas group, which, by mistake, forked-out from our baseline instead of branch-out. Besides that, integration was not too problematic, although all in all, we did not finish – although we didn't expect to – yet we had in our hand a rather cool prototype at the end of a 10 hours day.


For me, the main problem was the so ever tempting, decadent refreshments that the wonderful staff of Tikal were streaming to the front desk... yummy... I was shocked to find that I gained a whole kilo just in one and a half days!!! (self-control is a virtue, I keep reminding myself...)


As an end note, i'd say that I learned that WebRTC is fun, easy, powerful and we'll probably see it a lot in many web applications in the near future. Combined with JS and NodeJS, building applications such as the one we did, is a real breeze.


And the chat feature is still alone...waiting...


Next: some code snippets from the projects....