Programmers are always on a never-ending quest for proper design of software. One of the buzzwords in this area is aspect oriented programming. I have heard of AspectJ and other stuff before but never cared/understood enough to take a look at it.
Recently, I came across the TreeCC program used in DotGNU and was amazed by its simplicity. Rhys Weatherley has written a neat and simple essay on TreeCC - it was an eye-opener for me on how proper object oriented design doesn't always mean proper inheritance hierarchy or proper method overriding - it simply means a clean separation of concerns and concepts. This essay is a must-read for any programmer interested in good design, especially in compiler writing.