Catalyst

adventures in webdev with perl

blog

Back in Business

After a 6 month hiatus, I'm back. The task is to develop a new engine for Catalyst. Also, should time suffice, to keep the [install]] info updated. And to add some info on [DBIx::Class.

Wish me luck

PPM Rant

Now, I like ActiveState, not enough to buy and use their version of Emacs. Yes, they call it Komodo, and it's based on Python instead of Lisp, but it's still a mammoth, omnipotent-wannabe development environment, and therefore equivalent to Emacs. But hey, ActivePerl is decent on Windows and it sure beats compiling Perl on Windows (I vaguely recollect trying that once, must be a suppressed memory surfacing).

But the package manager they deliver with ActivePerl, ppm, oh ... my ... god! I am trying hard not to bang my forehead against my keyboard here, it takes hours to find all keys and put them back in their places.

One one hand it is capable to uninstall packages, which is good. On the other hand it only supports precompiled packages, which is bad. It's good to work with precompiled packages when you aren't in the mood to mess around with one of the module building systems (and there's at least 3 of them), but it's very bad when no one else was in the mood either and therefore there is no package available, making ppm useless. So we have 1 for PPM and 1 against.

But now, ladies and gentlemen, we come to the "wonder", the "nec-plus-ultra" that is the PPM interface. First its interface is command line based. I got nothing against the command line (hell, I use it daily) except when that command line is the hellish abomination which is cmd.exe. This blasphemy is only surpassed in horror by it's most vile predecessor, command.com, which is the ultimate evil of command lines, the Morgoth of command lines, which would make cmd.exe the Sauron (I deeply apologize for the LOTR references and promise to do my utmost to abstain form them in the future).

The damn ActivePerl distro includes Tk, so is it that hard to throw in a GUI for PPM? You, see cmd is very smart and cannot be resized in width, only in height. As a consequence, long package names will always by truncated in the package list (but with ~ appended so I know it's making fun of me) and forcing me to do some fantastic tricks involving two commands and a number, which involve too many swearwords to detail here.

Next, we have upgrading packages. This one is straightforward: when I want to upgrade my packages I just type upgrade, upon which ppm computes pi to the googolth digit, finds the question to 42 and takes a million year nap. After that it shows you a list of packages which could be upgraded. Simple isn't it? Then I type upgrade DBI, in response to which ppm tells me that yes, there is an upgrade available for DBI and does nothing. Then I usually call ppm names. When I get tired of that, I remember to type upgrade -install DBI (I personally, would have gone with upgrade -fucking DBI, but that is a matter of taste, I think). Now ppm will search for the exact version of DBI I have already installed and happily upgrade to it, not before telling me that there is a newer version available. It is clearly mocking me at this point. I used to uninstall and reinstall Perl several times at this point just to show ppm who is the boss here. After uninstalling, I would usually shout at the screen, "Who da bitch now, ppm? You da bitch!" while doing a little obscene dance, but the nice doctor at the the psychiatric ward made me promise to stop it. So I just disable all repositories except the one holding the version that I want and upgrade.

I love ppm.


Update (30.10.2006)

Truth be told, the PPM that ships with ActiveState Perl 5.8.8 build 819, has a GUI and some improvements in the repository selection (namely it shows you module versions from all repositories and you can select the one you like best). However it would be much better if it would show you only the latest version (and a hint showing from which repository this version would be installed) and let you expand a list with other versions/repositories.