Seeking Out Opposites
For the past year or two, I've been trying an experiment in my personal research and learning. I've been seeking out tools and technologies which are as different as possible from those with which I already have experience. I want to break up some prejudices and habits I have, and expose myself to more ways of looking at things. Now that I write this, it sounds like a great approach to life in general, but for now I'm focusing on computer science. :)
My success with this has been entirely dependant on free time and brain cycles, of which I've had precious little. But, I have managed to wean myself away from Perl to learning Python, developing a few apps with it and incorporating it into my problem solving kit. I've also managed to get myself away from XEmacs for hours at a time in order to weave Vim into my work-a-day life. These two things haven't been easy for me, since I've been using both Perl and some variant of Emacs for almost 12 years now, and I've done my share of sneering at that which is not perl or emacs.
And, although I've yet to spring upon them, I've also been making wary, narrowing circles around Lisp, Smalltalk, Prolog, and .NET. There been occasional forays into Java, as well as my daily attachment to Flash and Actionscript lately. And then, there've been my hefting and swinging of XSLT and XPath, as well as RDF, countered by a few feints with plaintext shell tools and YAML. There's been more, but most investigations have been too tentative to mention.
If there's a "holy war" between two things, I want to explore them both. I tend to see two apparently intelligent parties in an extended debate over which of them has a hold on the One True Way. In my experience, though, there's a high likelyhood that such a phenomenon points toward a real truth which lies somewhere inbetween. (This, of course, ignoring such cases where one party is correct, and the other is WRONG, WRONG, WRONG!) There tend to be very good reasons why smart people on either side of a fence have taken up with what they have, and I want to know both sides thoroughly. I know full well that both sides have at least some valid criticisms against the other, but I want a synthesis of the two.
In this field of computer science, there are as many ways of working with the dreamstuff as there are ways of structuring thoughts. And, rather than there ever being One True Way to do things, there will always be another smart person developing another powerfully expressive and insightful way of doing things. Someday, I'd like to be one of those smart people, so I need to have a sense for that truth in the middle that other One True Ways bracket and zero in on. And then, I want to know enough to jump out of the frame altogether, and in which ways I can invert and twist things to encircle some new spark.
Someday in the next few years, I'd like to get back into school so I can get to even higher levels of growing up to be a computer scientist. But for now, it's back to work for me. And, if you happen to think of any geeky holy wars, let me know. I'm collecting them for study.