1. After several years of it sitting on my shelf, I finally read Kernighan and Pike's "The Practice of Programming". I was always a little intimidated by this slender little book. I felt like it was full of wisdom that I couldn't really absorb at the right pace. Now that I've spent some time working on more challenging code and trying to come to grips with at the least the basics of more advanced computing concepts it was the right time to read it. I can't recommend it highly enough, it really is packed with wisdom. I've got Kernighan's "Software Tools" on the way, and I'll post a proper review of this at some point since it's not as well known.
2. I decided to spend a little bit of time poking at the almost-but-not-quite-dead language Dylan. I'd remembered being curious about this language back from when I was a serious Mac child in the mid 90's, since Apple was hinting that it would be the future. While the Gwydion Dylan implementation was removed from Debian, there's binaries for both it and the OpenDylan implementation that can be downloaded and run on both Sid and Ubuntu.
What I can grasp of the language is interesting. It's sorta like what little I know of scheme, except that it's got an object system that is apparently like CLOS from Common LISP, which I also don't know. Most notably though, is that even though Dylan is considered a LISP it doesn't look like one at all. There's no parentheses except what you'd expect, and things are infix rather than prefix, so it looks more like algol-derived languages like C. It's strikingly easy to read, and while the object system is very different from C++-style, it's fairly easy to grasp because it relies on familiar concepts like multiple dispatch to work. It's optionally typed, which is something I've been after (give me safety when I want it, but don't force me!) and provides all sorts of cool things like closures. Additionally, it does allow hygienic macros, which are apparently LISP's claim to power and fame, although I don't understand such things yet even in Dylan. Despite all this, the language appears to be relatively simple, which seems nice. It seems to be a very well designed language that was allowed to languish in obscurity because Apple abandoned it*.
Unfortunately the implementations aren't really all there yet. I ran in to obscure compiler bugs in gwydion writing something as simple as quicksort, and gwydion doesn't really have much of a standard library yet, although it can apparently bind to C quite well and fairly easily (this is something I haven't tried). In addition, there's OpenDylan, which is even less there on Linux, because it was an opened commercial compiler (derived from the original Apple one I believe) and it's had fewer people working on it. It seems to have a very large library, but documentation is sparse on it and I haven't had any time to really go after it. I've really been using gwydion exclusively, although I'd love to see OpenDylan get up to speed. While I have no time to really work on anything outside of X right now, this seems like a good language that deserves some attention.
* This is a familiar story to all of us who lived through Apple's mid-90's