Mort by day, Elvis on the bus.
I've committed to buying the book that Kent mentioned - Build Your Own .NET Language and Compiler . It sounds like just the sort of book that I'd love for reading on the bus on the way to work and back. In fact this paragraph from the blurb sums up my own feelings very well:
All software developers use languages – it’s the fundamental tool of the trade. Yet despite widespread curiosity about how languages work, few developers actually learn how they work. For one thing, most texts on language and compiler development are highly academic and theoretical tomes intended for use in college level computer science programs. This is a shame, because the techniques used to make a language work have widespread applications in general programming.
Actually, I love reading about raw data structures, and I was only chatting to a friend last night about storage, access and data structures. It's quite fascinating to think that, in a tightly packed BinaryTree you can store ONE MILLION different pieces of data and take no more than 20 "hops" to find any single piece!
To quote one of my favourite books:
"When searching a tighly packed 1,000,000 element binary tree, no more than 20 comparisons need to be made because 2^20 > 1,000,000"
So that's a maximum of 20 comparisons as opposed to 1,000,000 in a simple linked list.
Now, granted, it's not often that you will have to roll your own BinaryTree's, but that sort of knowledge and problem solving can be readily applied to many pieces of the architectural puzzle methinks.
Anyways, I find that sort of titbit fascinating and I'm hoping that this book is written for the kind of people that do ;-)
Here's a link to a piece that I wrote about 18 months ago that discusses BinaryTree's and what they are: