To start, I really want to say thanks to the Rails Rumble organizers; this event gave us an opportunity to practice using Rails 3 and to bring into reality some of the ideas floating around in our minds. It was also a great chance to work with people whom we don't always get to work with.
Unless you are a solo contestant in the Rails Rumble you have some teammates that you'll need to collaborate with. If you're lucky enough, your team members may live close to you, which means that maybe you get to work face to face, coding together, fleshing out ideas together, maybe even eating together. But I think many of the teams are distributed, like ours was. We were each in different places, different cities, and even different countries.
The efficiency and quality of communication becomes an extremely important matter in a 48-hour competition like the Rails Rumble. Since my Rumble team was distributed, we talked beforehand about how we would handle communication during the competition. We considered several communication tools:
Although email was a practical tool to exchange ideas before the competition, it would not have been the best tool during the competition. Email isn't quite instant enough when you need immediate and interactive feedback from teammates. Additionally, using email as a main source of communication means that you have to check your inbox frequently, which is a distraction in and of itself. Sifting through other unrelated emails from friends, family and colleagues would have interfered with our focused attention on the Rumble.
We did consider using an instant messaging service like Skype to build a chat group. Although IM communication is instant, it still was not interactive enough for our needs. Sharing mockups, screenshots and files is a cumbersome task through IM; each time you send a file, everyone has to click to receive it and if someone is away from the desktop at the moment, he/she may miss this file. Moreover, as your conversations get longer over the course of 48 hours, you may find the chat logs are going to be a mess. It becomes difficult to identify which messages are replying to which questions. And there will be times when you really want to go dark and focus on your work. The IM alert notifications can start to drive you crazy, but if you close the IM, you'll probably miss out on important information from you team.
Why did we use Present.ly?
We chose to use Present.ly as our communication tool during the Rumble. Present.ly is a private micro blogging system. It uses XMPP like most IM services use, so it's instant. But unlike IM, the messages are well organized thanks to the way it uses threading to display message replies. Plus, there are no messy chat logs to sift through! We use Present.ly at Intridea every day as our main tool for collaboration and communication across projects, so we were already comfortable with the application and knew how well it would support our unique needs as a distributed Rumble team.
Present.ly In Action
At the beginning of the competition we created a new private group under our Intridea Present.ly account. We stayed on our group's page during the 48 hour event so that we would not be distracted by messages from the main corporate stream and so that our conversation wouldn't interrupt other work going on at the same time.
Personally, I like using Present.ly in Fluid, because Present.ly supports the sound and Growl notification alerts specifically for Fluid. This feature was very useful when I was waiting for time-sensitive answers from my team. But when I didn't want to be disturbed, pressing the 'Mute' button on the page turned off the notification alerts.
Present.ly also enabled us to collaborate efficiently as programmers: we set a post-commit hook, which sent messages to our Present.ly group after each commit. Using the commit notifications ensured that everyone was as synchronized as possible during the competition.
Let me show you some of our real examples during the Rumble:
Here is the post-commit file:
#!/usr/bin/perl # change your username and password, then copy this file as .git/hooks/post-commit # then 'chmod +x .git/hooks/post-commit' # it'll run every time you commit (not push, mind you) $username=''; $password=''; $git_text = `git log -n1 --pretty=format:"#commit (%h) %s"`; $git_long_text = `git log -n1 --stat`; chomp $git_text; chomp $git_long_text; `curl -k "https://intridea.presently.com/api/twitter/statuses/update.xml" -u $username:$password -d status="d imgateway $git_text" -d paste_text="$git_long_text"`;
Here is example of the commit message on presently:
Here is an example of the threading view:
Here is an example of file sharing:
There are a lot of communication and collaboration tools out there. But Present.ly was built by a development team at Intridea that understands the specific needs of real-time communication. So why not give it a try in next Rumble? And if you're not already using it for collaboration in your company, I recommend using it for that as well. It's a free and robust tool that helps to bring the power of real-time communication to teams of all sizes. I'm sure you will love it!