State of the Sound RecorderAs 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.