It's all spinning wheels and self-doubt until the first pot of coffee.

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.


Archived Comments

  • In a group of friends we keep a list of these things. Some of the technolgy ones are: 1. Windows vs. Unix 2. Linux vs. BSD 3. Emacs vs. the unmentionable one (vi) 6. Fortran vs. C/C++ 7. Perl vs. Python 9. LaTeX vs. Word or Framemaker 10. Steered Code (via scripts) vs. Not Then there are even pronunciations of some products that de-evolve into holy wars: 12. Pronunciation: b. .gif: Gif vs. Jif d. LaTeX: lah-TEK vs. LAH-tek vs. LAY-tex e. data: DAH-tah vs. DAY-tah I look forward to more information from you on this and seeing what you find.
  • Static vs. dynamic typing, and its cousin, compiled vs. interpreted languages, seem like big interesting ones. More trivially, tabs vs. spaces. Also, if you want to find more holy wars than you ever dreamed possible, you could always try searching Wiki for Vs.
  • I would say that even more intense than Perl vs. Python is Ruby vs. Python.
  • Here are a few: * IDE vs. multiple tools * HTML vs. Flash MX (or Java Applets, I suppose) * learning an existing tool or writing your own I also find that some tools are cool to know, because in a narrow set of uses, they're fscking awesome: * Expect (for use in automating some cron scripts) * awk (for piping through output) * ANSI color codes for making output more readable Plus there are great add-ons to the software you already use: * various emacs modes and tools (recentf is killer) * CPAN modules you might not have known about * list comprehensions and the __foo__() methods you can override in python
  • I'm not a programmer, I'm more of a user (software, not people), so I think of MSWord vs. WordPerfect (in the old, pre-Corel days) and for that matter, CorelDraw vs. everything else in the mid-90's. Ok, but what struck me was not the holy war per se, but the pursuit. I just read "Zen and the art of motorcycle maint." and you both seem to be on the same path, looking for Quality (capital Q, specifically) in life, in work, in everything. I support you in your quest!
  • Trying to solve the same problem with different languages can be enlightening. It requires that you bend your mind enough to understand, not syntax, but how things are done in different languages. Have you looked at Objective C?
  • If you're looking for a holy war that makes no sense to someone on the outside of it, try Common Lisp vs. Scheme.
  • CSS-based web design coding vs Table-based web design coding Jakob Nielsen vs Joshua Davis Actionscript 1.0 vs Actionscript 2.0
  • RSS 1.0 vs. RSS 2.0 This is a great one because: --the RSS 1.0 geeks' argument was based almost entirely in the purported benefits of the One True Way to the poor simple reg'lar non-geeks what'll never understand them goshdarn namespaces --the entire thing actually seemed to be entirely about whether Mr. Winer was, in fact, insufferable and whether O'Reilly is Publisher of Cute-Covered Geekbooks or Cabal Bent on World Domination