Sunday, September 22, 2013

GSoC Final Report: GNOME Sound Recorder

State of the Sound Recorder

As I reported last week, I finished my scheduled tasks for the Sound Recorder project. I spent last weekend doing code cleanup and fixing a few bugs before Pencils Down happened on Monday. Earlier this week I tagged a release and pushed my codebase to git.gnome.org.

What I learned about coding...

 I spent a lot of the term getting to know GNOME's codebase. Yesterday on irc I heard someone mention that they had added a new feature to an app, and my internal reaction was not to go and try it out, but to read the code and see how it had been implemented. I definitely reached a new level of language agnosticism, and generally find that it no longer occurs to me that I have switched languages when I go from one codebase to another. The speed at which I pick up API usage has also increased. As I've become familiar with examples, I am able to move from reading other people's implementations of functionality to just looking up what I need in the API and using it. The learning curve has been a little steep for some APIs -- GStreamer in particular took some time to understand -- but as I've learned I've also become faster.

In many ways I feel like I gained a basis for understanding complex code that solves real problems. I don't feel like all of the information has sunk in yet, but in general I've learned a lot about functional programming.

This past week I've been experiencing a little of the Linux trial-by-fire wrt implementing dbus application launching in my app. I've spent a good few hours staring cross-eyed at makefiles, autogen files, .in files, .service files...plus a lot of weird launch/start calls. Everyone told me that no one knows how autotools really works, but honestly I don't believe it any more. It seems like everyone really does know, they just aren't 'fessing up. Luckily I found a wiki page that Ryan Lortie wrote that explains the whole app launching thing. Thanks very much to Sebastian and Giovanni for answering my questions.

I also got to be a lot more familiar with git in the past few weeks. I used to just do super-basic branching, pushing, etc. What I know now is still really basic, but I've learned to resolve rebase conflicts in remote branches, use interactive mode, check through reflogs, etc. My vocabulary has become a lot more functional just through investing a small amount of time upfront in reading the manuals.

Future...

The plan is to start testing, bug fixing, polishing, and adding features. Before I start I'm going to take some time off to work on my thesis. Thanks to everyone in the community for answering my questions, pointing me in the right direction, writing awesome code for me to read, and generally being great to work and hang out with. Thanks especially to my mentor, Sebastian Dröge, for doing an amazing job this summer. Happy hacking :)


No comments:

Post a Comment