The problem I've always had with C is the lack of namespacing and the need to just learn it, all of it, all of the API and library functions and internal stuff, all at once, before you can even to understand a piece of code let alone work on it. I'm used to Javascript where you know fairly well that the function to bar foos will be in the foo object, and is likely to be called bar(); in C it could be called more or less anything. This is true to such an extent that I've never really bothered learning C because it is, like it or not, popular as it may be, getting very long in the tooth and shows it. An example of this: I would dearly love it if mplayer were able to load colour lookup tables - think of a Photoshop curves filter, which is just a list of 256 input values for every R, G or B output value. Presumably somewhere in mplayer's code is a point where the frame is just decoded bytes in memory and loading and applying such a lookup table is relatively trivial. I fully understand the logical operations required to do that work. Actually finding that point and implementing the logic, though, is a horrible job because mplayer, like anything written in C, is just a huge undifferentiated bunch of stuff and you either know absolutely all of it or you are completely clueless and there's very little inbetween. It just becomes unapproachable and I'm very happy to let other people work on it! P