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

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 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.


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 :)

Tuesday, September 17, 2013

Chicago LUG/Hack Meeting at Sofware Freedom Day, and Open Source Comes to Campus

Chicago LUG/Hack meeting this weekend

We'll be meeting up at Software Freedom Day at FreeGeek Chicago this Saturday, September 21. The event is from 10 am to 5 pm. You can R.S.V.P. here. I'll be doing  a short presentation at 4 pm on getting involved in Free Software. There will be a lot a neat talks, some hacking,  and a CryptoParty. Next month we'll resume our regularly scheduled programming :)

And OpenHatch Event for Women next week
I've also been working with OpenHatch and University of Illinois at Chicago's Women in Computer Science group to plan an Open Source comes to Campus event for Women. It is going to be a beginner-level immersion event to teach Chicago area women students to contribute to Open Source projects. It will be happening at UIC on Wednesday, September 23rd and Thursday, September 24th, from 5 pm to 9 pm. You can sign up for the event here.

Cheers, and hope to see you all around in the next few weeks :)

Saturday, September 14, 2013

Sound Recorder Update 9

I'm finished with the first complete iteration of the Sound Recorder.
You can watch a video of it on YouTube. There is no sound in the screencast since it was done with GNOME's screencast tool, which is actually a good thing because you really don't want to hear a recording of my ThinkPad fan. It's unpleasant.

The next few days I'll be testing it out and fixing bugs, so I'll post one more update before the end of GSoC \o/

Happy hacking :)

Sunday, September 1, 2013

Sound Recorder Update 8

This week I planned to work only on UI but got sidetracked by a bunch of stuff relating to autotools, unmerged GJS branches I was relying on, and the fact that I started classes again. So I didn't get as far as I wanted to in my UI implementation. Anyway, here are the results:

I have several bugs to fix next week and some features to re-implement, and some code clean-up, but in general I've finished everything except refreshing the UI when a file is added or deleted. I'm planning to just watch the directory with Gio.FileMonitor and just refresh the UI on changed, which shouldn't be too hard to implement.

I'm hoping to push the code to as soon as it's cleaned-up - in a couple weeks - and release a preview of the app for unstable 3.11.

Happy hacking :)