Every once in a while I reach a stage where most of my on-going work is done, such as all or at least most of the modules I am working on are released to the CPAN etc. It is then that I am seeking for something new and while doing so I am trying all different kind of things.
This happens in an unstructured way. A while ago I was talking with a fellow about some stuff, mostly computer games, and we agreed that it would be sort of cool to write ones' own. Since I've never done anything like that, I had a poke around at several available libraries and ended up having a closer look at the SDL. It's less complex than I thought, but I lack quite a bit of background knowledge on some apparently vital stuff, mostly involving image processing and such.
So I made a mental note to return to this domain later and moved on. The next item on my to-try list was writing a module for the Linux kernel. I had in mind a simple module that allowed to mount audio CDs as ordinary file-systems and thus see the tracks of the CDs as virtual WAV files that spring into existance once I copy them onto a harddisc partition (grabbing by doing a
cp). I'm sure that this would be an entertaining thing to program, but during my first attempts I realized that it's exceptionally easy to freeze the whole system. I had a few of those lock-ups and concluded that programming with reboots every three minutes is less fun than programming without reboots.
So I returned to the SDL. Quite soon I reached a point where things - albeit mostly working - got annoying because they required a lot of code. Those are things that should not, in my estimation, require that much work. Rescanning other libraries revealed that some of them offer a slightly more high-level functionality, for example the clanlib which looks quite promising. Only drawback is that this it's a C++ and not a C library.
Since I've wanted to improve on my C++ skills for a long time anyway, I decided to start all over again, this time doing it in C++, with the prospect in mind, that thusly I can switch to the clanlib a little later. Now I am already regretting that I postponed my C++ experience for such a long time. It's all very nice and smooth. In particular, it's much easier to keep the program relatively tidy thanks to classes and namespaces. In C, most of the time is spent on coming up with a clever naming scheme in order to avoid name clashes and such. I'm glad that this is now something I have to worry about much less.