In my last post I said that it was time to brush up my C programming skills. Well, it turns out that my C programming skills are way OK. The problem is that I don't know GNome's APIs.
It's like when you have one of those enlightening moments when someone explains you how to do something without having to do a Marathon before. I'm always saying: "Developer, know thy tools!". It seems this sentence is now haunting me because I don't know GNome's APIs and I'm paying the price: I end up look, searching or even reinventing something that has already been done all over again.
I know most of Java SE APIs by hart, their patterns and how they should be used. I know them so well that I can even abuse of them to my benefit. In fact, it is not the first time I go to Java's source code to see how something is done so I know if I can use it in a given way. In fact, the last time I did this was just a couple of days ago when I wanted to see if the Preferences API in Java 6 used the Context Class Loader of a Thread when instantiating the Preferences Factory. This is how I feel in Java: like a fish in the water because I have been using it since its first version.
With C and C++ it is different. I'm using C++ in my Thesis to program a robot and I need to learn its API and the API of the framework I'm using. For the remote control and UI I'm using Java because I feel more comfortable with it.
But GNome has a whole set of APIs that I want to get to know. The main problem is that, like most open source projects, the documentation is not what it could be. Maybe I can contribute on this end, that is, as I'm learning the API I can document it, or at least write some articles about it. What I would really love is to have something like the Java's reference API for all GNome's library. I'm using DevHelp and I can see the classes that exist and their API, but most functions aren't documented and what I'm missing is an introductory path to an API. For instance, if you want to use GDK PixBuf library to load a JPEG how would you do it? I know how to do it, but after scavenging the API for fifteen minutes.