JDOM’s XPath implementation has (in my opinion) big glaring bug with respect to its handling of the default namespace. That’s a namespace that looks a bit like this in the XML:
<?xml version="1.0" encoding="utf-8"?>
... some stuff ...
... some foo stuff ...
Note the ‘xmlns=…’, denoting the default namespace. As opposed to ‘xmlns:foo=’ which denotes the ‘foo’ namespace.
Let’s say I wanted to run an XPath query for: ‘//myChildElement’:
XPath xPath = XPath.newInstance("//myChildElement");
List nodes = xPath.selectNodes(aDocument);
This will never work. XPath does not play nicely with default namespaces. The solution is to register the same namespace URI against a made-up prefix and change the XPath like so:
XPath xPath = XPath.newInstance("//dh:myChildElement");
The query should then work. This is not a new problem.
As a developer, of course I went off and found the webkit benchmark. Results below, in all their ugly unformatted glory:
TEST COMPARISON FROM TO DETAILS
** TOTAL **: 2.28x as fast 5387.6ms +/- 0.6% 2358.2ms +/- 0.2% significant
3d: 3.69x as fast 621.6ms +/- 1.1% 168.6ms +/- 4.0% significant
cube: 5.35x as fast 229.0ms +/- 1.3% 42.8ms +/- 11.5% significant
morph: 2.88x as fast 205.4ms +/- 1.4% 71.2ms +/- 5.7% significant
raytrace: 3.43x as fast 187.2ms +/- 2.1% 54.6ms +/- 3.1% significant
access: 6.93x as fast 885.6ms +/- 0.9% 127.8ms +/- 4.3% significant
binary-trees: 13.7x as fast 112.6ms +/- 0.6% 8.2ms +/- 12.7% significant
fannkuch: 8.92x as fast 401.2ms +/- 0.1% 45.0ms +/- 2.0% significant
nbody: 4.86x as fast 210.8ms +/- 2.7% 43.4ms +/- 10.0% significant
nsieve: 5.16x as fast 161.0ms +/- 1.7% 31.2ms +/- 4.4% significant
bitops: 8.42x as fast 796.8ms +/- 0.2% 94.6ms +/- 5.3% significant
3bit-bits-in-byte: 26.6x as fast 154.2ms +/- 0.4% 5.8ms +/- 17.9% significant
bits-in-byte: 17.8x as fast 217.2ms +/- 0.5% 12.2ms +/- 8.5% significant
bitwise-and: 5.51x as fast 178.6ms +/- 0.9% 32.4ms +/- 4.4% significant
nsieve-bits: 5.58x as fast 246.8ms +/- 0.2% 44.2ms +/- 7.0% significant
controlflow: 28.3x as fast 113.2ms +/- 0.5% 4.0ms +/- 22.0% significant
recursive: 28.3x as fast 113.2ms +/- 0.5% 4.0ms +/- 22.0% significant
crypto: 5.29x as fast 405.0ms +/- 0.3% 76.6ms +/- 4.8% significant
aes: 4.97x as fast 153.2ms +/- 0.7% 30.8ms +/- 6.0% significant
md5: 5.27x as fast 126.6ms +/- 1.1% 24.0ms +/- 8.2% significant
sha1: 5.74x as fast 125.2ms +/- 0.8% 21.8ms +/- 2.6% significant
date: 1.07x as fast 416.2ms +/- 1.1% 389.6ms +/- 1.6% significant
format-tofte: 1.23x as fast 261.4ms +/- 1.3% 212.2ms +/- 2.0% significant
format-xparb: *1.15x as slow* 154.8ms +/- 1.0% 177.4ms +/- 1.8% significant
math: 3.79x as fast 619.6ms +/- 1.1% 163.4ms +/- 5.6% significant
cordic: 3.24x as fast 294.2ms +/- 0.9% 90.8ms +/- 6.2% significant
partial-sums: 3.39x as fast 177.8ms +/- 2.9% 52.4ms +/- 11.3% significant
spectral-norm: 7.31x as fast 147.6ms +/- 0.5% 20.2ms +/- 2.8% significant
regexp: *1.88x as slow* 305.8ms +/- 10.1% 573.6ms +/- 0.5% significant
dna: *1.88x as slow* 305.8ms +/- 10.1% 573.6ms +/- 0.5% significant
string: 1.61x as fast 1223.8ms +/- 3.3% 760.0ms +/- 1.4% significant
base64: 1.81x as fast 154.8ms +/- 2.2% 85.6ms +/- 9.5% significant
fasta: 3.84x as fast 306.0ms +/- 2.1% 79.6ms +/- 2.6% significant
tagcloud: - 216.0ms +/- 3.5% 209.0ms +/- 1.5%
unpack-code: 1.36x as fast 378.0ms +/- 10.1% 278.2ms +/- 2.3% significant
validate-input: 1.57x as fast 169.0ms +/- 2.9% 107.6ms +/- 2.4% significant
That’s looking a bit more believable. On average Chrome/V8 seems to be twice as fast as Firefox/Spidermonkey, with results varying from 30 times faster to almost 2 times slower. It will be interesting to see how Tracemonkey compares, as it seems to be about 1.8 times faster than Spidermonkey.
Ruby is so, like, web 2.0. More than two graduating classes have, er, graduated since Ruby became the next big thing. That makes it nearly your grandad’s social networking application programming language, in these ‘internet speed’ times we live in. This would be the same community that has just realised that network connections that survive beyond a single request are actually quite useful. But that’s my XMPP / HTTP rant, not this one.
- Perl: Larry Wall
- Python: Guido van Rossum
- Ruby: Yukihiro Matsumoto
- Java: Sun
- .Net: Microsoft
Don’t use Double.NaN when you meant to say zero. Zero is, amazingly, a number.
Otherwise you might be buttumed to be buttociated with the consbreastution of the united states of buttinine.
Try the following Google searches:
And, my personal favourite: consbreastution
Haven’t laughed so hard all day. But then I’m easily breastillated.
Update: and there’s more! Wouldn’t want to be a buttembly language developer, or worse, get buttbuttinated.
Funny? Laughed my burte off.
The process of migrating from movable type involved a bit of skimming over old posts. I was certainly, er, ‘younger’ back then. The me of 2002 certainly wrote a lot of crap nonsense.
Not sure the me of 2008 has significantly improved on that score, except whereby writing less at least reduces the number of opportunities to open my mouth and put my foot in it.
Plunge taken. Comments enabled on new posts. Come on spammers, I’m ready for you. Or preferably, don’t.
All I need now is a bit of good old fashioned controversy to kickoff some heated ranting.
Huge endorsement to johncompanies hosting for the same day actioning of my request to switch off an old redhat version onto a shiny fresh Ubuntu install. On a sunday. After I decided this morning to impulsively eject movable type and switch to wordpress, and change distro’s while I was at it. Couple of polite emails confirming I’d backed up everything I needed and blam, old server gone, new server running.
There’ll be broken permalinks all over the place, but who uses links to find stuff anymore? Its all about the search. I’ve maintained the main RSS feed at least, using a bit of mod_rewrite magic.
Just got to get my head around WP now and sort out a theme other than the default.
Update: So it seems that the mod_rewrite rules I used have also ‘preserved’ some of the MT style archive links but due to all the posts getting renumbered on import they all comedically point to different places than they used to. I like that. I think I’ll leave it.
Brand new server, brand new blog tool. Bear with me for a little while.
Today felt like the first day I discovered the world wide web. Pure awesome:
Before today I had never even heard of any of these artifacts of amazing. What a couple of idle hours will find. Okay, five. Or so. Roughly. Maybe seven. Anyway.
PS. If it’s not too late to mention, hotforwords might be a bit NSFW. A little. More embarrassing than, you know, dodgy. Maybe shrink the window a bit before clicking. And look over your shoulder. Check for reflections in windows behind you. Its fine really, just, perhaps, hard to explain if you’re not prepared. She’s got 2 degrees in philology you know. Just explain you only watch it for the etymologies. That excuse always works.