autoconf, libtool, and friends, collectively the GNU build system. Man, they’re hard to understand ...ruby-prof (there’s a gem install), which is a much faster and thus better profiler than the built-in one. I learned a few more things ...: in front of constant strings. And forgetting parentheses. Especially empty parentheses. And semicolons. Especially semicolons. Bloody stupid useless semicolons.new Pony("black"), and the pony is made by Pony(String color). In Ruby, you’d say Pony.new("black") and the pony-maker is initialize(color). In Python, you’d say Pony("black") and the pony-maker is __init__(self, color). I wonder which is best? Does all this seem kind of ad-hoc? Anyhow, in real life, a Java programmer would start with an AbstractEquineBreederGenerator and work from there. And for Ruby you’d be able to say mySpecialPresent.get do | pony |, and it would clean up the pony poop for you (but the pony would be named Kurofune). Python programmers are Serious Men and Women who Don’t Have Time For Ponies. [Update: The email is already swirling in. Stand by for another virtual comments section.]Whatever[] w = new Whatever[Integer.MAX_VALUE * 2];long. (Which should be free on a 64-bit computer, right?) I’ll go update the binary-search article to add this caution. [Update: Maybe not. Greg Thompson and A. Sundararajan both point out that the Java Language Definition requires array indices to be integers, not longs. So I wonder why this compiles?]mod_php (first benchmark, but on a real app not synthetic). It’s GPL’ed. This is more than a little surprising. I’ve been campaigning heavily in the Java community at large and here at Sun specifically to make dynamic languages on the JVM a major priority, but I’d never really focused on PHP, because I didn’t know anyone was even working on the problem. (Well, to be honest, also because PHP has always made me nervous.) This changes the “On Beyond Java” picture. [Late addition: last word to Steve Jenson.]update and diff and commit. Things aren’t perfect; Java.net seems to run awfully slow sometimes. But it’s so great when things that are supposed to plug together just plug together and work.args[0] instead of args[1]. To all those who sat in rooms at one point or another this last couple of years and listened to me drone on in a superior tone of voice about the extreme importance and Karmic excellence of unit testing, you are now entitled to one large snicker in my general direction.pydoc time, and a nontrivial chunk of Python code in a nearby editor buffer (I used the Feed Parser) so you can look up idioms. At the end of the day, the code looks distinctly weird to my eye, kind of ragged without a supporting visual lattice of {’s }’s, and ;’s. But I’m sure you get used to it quickly.genxScanUTF8() method, so it’s not entirely vapor. Upon consideration, I think it will be virtually no extra work to make it emit Canonical XML, ready to be signed, sealed and delivered (and Rich Salz said he would help) so why not? Major thanks to Anthony J. Starks for the name—I am not a member of Gen X myself, but I do share a city with Coupland, so there you go. Since ongoing doesn’t have comments, I’ll post a pointer to this item over in the xml-dev mailing list, which is a natural place to discuss it. It would be very surprising if this first-cut sketch didn’t contain some stupid errors, so go get ’em.