But it has made me interested in taking a new look at C. Over the past year, I've been using C++ on my graphics engine and the year before that I spent exploring Haskell. I've had mixed success with these. While they're both very nice languages it seems to me that for every problem each one of them solves, other problems are created. So I think I'm going to go back to C for a while and rewrite my vector and matrix math code in that language instead of C++ (or Haskell).
Much of my reasoning for this is based on Joel Spolsky's Law of Leaky Abstractions. It seems to me that while object oriented and functional programming abstractions can be very helpful, they can also be incredibly frustrating to deal with when something doesn't work and you have to go track down a bug. So I think a good case can be made for writing code that keeps as much practical information on the current line as possible - in other words code that is self documenting. And I think C might be a good way to do this. After all, sometimes less is more.