The Google Summer of Code is drawing to a close. This year SwiftRiver was a mentoring organization and we wanted to give our GSoCers some ‘face’ time on the blog by interviewing them. Mang-Git is a developer who worked on our influence analytic application, Reverberations.
Reverberations is a pretty simple app, it’s a RESTful solution for determining the influence of content online. Mang worked on the Twitter portion, where an algorithm returns the number of retweets an item has, and then the number of retweets those retweets have as well.
Reverberations is an open source project which can be found here: http://github.com/appfrica/Reverberations
Q: What is your educational (or professional) background?
I am a recent graduate of the University of Michigan, with an undergraduate degree in Computer Engineering. Over the past couple summers I have interned at Cisco Systems, as a Software Development intern. During the school year I worked as a computer technician for the School of Social Work at U of M.
Q: What was the project you worked on for us? Why did you select that as your GSoC project and what did you learn from working on it?
The specific project I worked on was called Reverberations, it is an add on to the SwiftRiver tool set. I chose to work on SwiftRiver, because of the far reaching social implications the software had. From my time working on Reverberations I have learned a lot about social networking, the REST architecture, as well as how to use the twitter API to gather the information I needed.
Q: What challenges did you run into during and how did you overcome them?
The largest challenge I came across was determining how to create a retweet tree. Twitter does not provide information on whether a retweet is a retweet of another retweet.
All retweets on twitter are displayed as retweets of the original tweet. To make matters even more difficult, I did not notice that the status_retweets API call returned all retweets as a retweet of the orignal tweet until the last week of GSoC. Eventually with some help from the Twitter developer forum I came up with an algorithm to create a retweet tree, using retweet timestamp information and info on the followers of a user. The most difficult part about developing this “algorithm” was figuring out what the implications are for each piece of information, as well has how to handle situations when it is impossible to determine who the likely parent tweet is. In the end I’ve created an algorithm, that although cannot always be a 100% sure of whether the retweet tree is correct, but is better than any other solution I have seen, especially since I have yet to find an application that even attempts to create a retweet tree using information form the Twitter API.
Q: GSoCers get to choose the organizations they work with, why did you choose to work with SwiftRiver?
SwiftRiver, along with Ushahidi, not only provides crucial information to rescuers during a crises, but it can also provide realtime, crowd sourced news to the general public. An example of this would be using Ushahidi and Reverberations in a situation such as the riots in Iran. Allowing reporters to filter and manage the huge amounts of user generated content flowing out of Iran, and thus helping spread the news of Iran even when western reporters were not allowed in Iran.
Q: Any closing remarks?
GSoC is a great program, and provides an excellent opportunity for students like myself to participate in open source projects, and be rewarded for giving back to the open source community. My participation with SwiftRiver has taught me a lot about the software development process. I have had to do everything from managing my time, to defining a spec from a concept idea, to learning how to use the tools needed for developing my program, and finally actual development and testing of my code. Working with Jon and GSoC has really been an excellent experience, I feel that I have learned a lot and grown as a developer.