While I'm working on software that I am designing or coding, I am constantly in a state of learning new things. Mostly it's about using the specific tools of .NET. But when I am writing articles or preparing sessions, I sometimes find myself off in whole new worlds. One of the reasons is that I tend to target conference sessions that explicitly push me to learn new things. For example, when I decided it was time for me to stop scratching my head every time I heard someone mention encryption and digital signing, I decided to really learn how that stuff actually works. I found my self in places like cryptography newsgroups and even NASA's website for explanations of how RSA works.
So I'm off on a tangent again as I prepare for my DevConnections session on "Advanced Data Access Patterns in ADO.NET 2.0" which was inspired by ADO.NET Team Technical Lead Pablo Castro's wonderful session at PDC05. One of the three advanced techniques that Pablo demonstrated was building an in-memory query processor for datasets. He fleshed out the demo and shared the code on his weblog recently. As part of my session, I want to show off this very cool tool he came up with (reminder that it is not an official supported Microsoft tool, just something he created for fun) which he built to demonstrate the incredible power that they have built into the latest dataset.
But what this means for me is that I'm going to be working with this code in my session and talking about how query processor's work in order to do so. I now find myself reading serious technical papers from places like the ACM website so that I can understand the basics of q.p's (what the cool kids call them) well enough to give a useful high level explanation in my session.
It seems funny to me that with things like WCF and WPF that I really am chomping at the bit to dig into, I am side tracked by learning all about query processors. Something I may have no use for in my real life as a coder, but am having fun with and therefore grateful for something that led me down that path.