Born-Again Javascript

While most of my coding for fun is in Python, a whole lot of my coding at work is in Javascript. Over the years I have tried many, many frameworks for extending Javascript to add new widgets to the browser, to handle functional-style programming in Javascript, or simply to make the browser DOM easier to use. They pretty much all suck. Much of the suckitude comes from trying to support beasts such as Netscape 4 or IE Mac, neither of which are supported by any sane company these days. Of course, now that Netscape 4 is finally settling into the dim recesses of history where it belongs, we still have all the flavors of IE to plague us. Microsoft does their best work when they are playing catch-up. Everyone predicted that as soon as they were the dominant browser they would stop caring about standards and stop updating their browser in any significant way. Microsoft denied it, but can anyone really say they’re suprised that it’s exactly what they did? Only when Firefox began to seriously erode their “market share” did they reanimate the moribund IE team. I can’t wait to see what kind of nightmares we get when that monster walks out of the laboratory.

Despite all this, I’m still somewhat of a fan of Javascript. It doesn’t get much respect, in part because of poor implementations, and in part because it wasn’t designed to be very modular. It ignores modern concepts such as threading. You could go on for days on the problems of Javascript, and others have, so I won’t. What all this is getting to is that I’m excited about seeing good uses of Javascript in Google Maps and Backpack. I’m going to try using to see what I can get away with (using my new fave web framework, CherryPy). And I’m really, really looking forward to what Bob Ippolito is cooking up with his semi-stealth project: Mochikit. Bob has done some amazing work with PyObjC, and Mochikit could well be the Javascript framework I’ve been looking for, complete with documentation and unit tests. I can’t wait.

« Previous Page « Previous Page Next entries »