This semester, I joined the
Freeseer project as part of the UCOSP project course. The project was a new challenge for me, but at the same time, it was very enjoyable. Now the term has almost come to an end, and I'd like to share some thoughts about this valuable experience.
About Freeseer & My Role In It
Freeseer is a free, open source, cross-platform application used to capture presentations. It has been used at many open source conferences to record hundreds of talks. The way Freeseer works is simple: first, store information about the talks you want to record, including the title, event, speaker, room, date and start time. Next, set up the external cables and connections for recording. Then, select the current talk to record, and Freeseer will capture the speaker's laptop screen along with the presentation talk.
My project this term was to implement a new auto-recording feature for Freeseer. This feature detects when a talk is starting/ending, and automatically records it. This would allow a laptop doing the recording to automatically record all the talks in a room without the need of a volunteer to monitor it. For this feature to work, we first store an additional end time of a talk on top of the start time. Then, if the user presses the auto-record button, we search for all the talks starting at or after the current computer time, in the specified room. If no talks satisfy these conditions, a dialog box pops up, informing the user that no such talks are available. Otherwise, we enter a fullscreen mode that displays the title and speaker of the next talk to be recorded, and the countdown until the start of the recording. As the time to start recording approaches, the screen flashes, and an alert sound plays to remind the speaker to get ready. During the recording, there is a similar countdown informing the speaker how much time he/she has left until the end of the recording. After this recording, the cycle repeats again.
Reflections About My Project
It was really fun to implement the auto-recording feature because, not only did I get to familiarize myself with the existing code in the Freeseer repository, but I also got to learn lots of cool new techniques, such as how to use PyQt4's QTimer to simulate a countdown, how to show changing countdown display messages, how to use system notification sounds as alert sounds, etc.
While doing the project, I've also encountered some roadblocks along the way. There were times when I spent a whole day trying to find a bug in a function, carefully debugging and showing the state of the variables after every line, and still hadn't found the source of the problem. Then, in my devastation, I finally switched to another method to implement this function, and TA-DA! It worked! Because of these kind of failures, I have learned to become more flexible with programming.
We were required to keep blog posts about the progress we made each week, what we planned to do next week, and any issues/concerns we had. At first this seemed like a burden, but soon, I found keeping blog posts very helpful! Since I also had to think about assignments/lectures for other courses, it was impossible to work on Freeseer every day of the week. So, when I
returned to work on the project one week later, I could barely remember anything from last week, or what I should be working on next. Thus I relied heavily on my blog posts to keep me on track. It was also quite easy to write the post! I only needed to keep a note of what I just did after I completed each task, while it was still fresh in my mind.
Tips For Students Doing UCOSP Next Year
- This semester, the code sprint was scheduled to be later than in previous years, so the students were less motivated to start working right away, and the pace was slower than usual. However, it's a good idea to start early because when doing programming, it generally takes longer than you think to finish something. Furthermore, the earlier you start to work on the project, the more questions you may have for the mentors at the code sprint, and thus the more productive you will be at the code sprint.
- It's always hard to start the project because students would at first feel overwhelmed by the large existing code base, and do not know where to start. The advice from one of the mentors that really helped me was, instead of stressing over the right place to start, just start somewhere. Try running the application, play around with the code, and you'll naturally become more familiar with the code.
- The code sprint is a place to meet your team members and mentors, as well as teams from other UCOSP projects. This is your chance to communicate face-to-face with your team, and ask any questions you may have for the mentors. Of course, most of the time is spent on coding, so please bring your laptop! (This may sound like an obvious suggestion, but I didn't really know what the code sprint was about before going there, or whether there would be computers for us to work on. Now that I think about it, everyone is working on different projects, which have different installation requirements, so of course we would need our own laptops if we want to work on our projects! Hahaha...)
Well, that's all from me for now. I really had a great time taking this project course, learning, contributing, and getting to know some very nice people, all at the same time. I hope future UCOSP students will enjoy this precious experience, just as I did!