Colorado Rapids home opener, and Mr. Eddie Johnson

Lo! the cat with ball of string
Winking and jinking
Winking and jinking
Winking and jinking
Like Eddie Johnson

In other words, that boy bad! Naw, that boy bad! Running past CONCACAF defenders like they're wearing cement moon boots. Can't wait to see him at the World Cup in Germany next year.

We Ogbujis, proud Colorado Rapids season's ticket holders, went to see the home opener against F.C. Dallas Saturday night. I'll be honest, though. Eddie was the expected highlight. All the images have captions (titles, technically): just hold your mouse over them.

EJ takes a throw in (uuuuh, why, coach?)

Osi showing the folks how to do the Corner Kick Stampede <em>proper

Hmm. Eddie threw up some nice moves, Joe Cannon (should-be MVP and should be national team starter) made some spectacular saves, Carlos Ruiz did his usual flopping flounder impression, but it all ended up 0-0.

So what was cool was that Rapids staffers were going around spotting kids and giving out passes to a post game autograph session with Mr. Johnson himself. It's never hard to miss loudmouth Osi, so we copped some for the family. After the game we went to the tunnel for the event...

Osi gives RapidMan a poundUche sporting Rapids pride while waiting to greet the star opponentOsi and Jide making concrete angels, or something

And we got our brief, but cool bonus. Osi knows Eddie Johnson from watching his father cheer him on through the television set, but upon meeting the man and getting his autograph, his only words were...

EJ scribbles for Osi

Osi balefully inspects EJ's script, while Jide looks on

"Hey, I can't read those letters." Eddie Johnson replied: "So what, dude, you want me to print my name for you or something?". We laughed. We jetted. Fun night, all around.

[Uche Ogbuji]

via Copia


I pitched my day's leazings in Crimmercrock Lane,
To tie up my garter and jog on again,
When a dear dark-eyed gentleman passed there and said,
In a way that made all o' me colour rose-red,
   "What do I see—
   O pretty knee!"
And he came and he tied up my garter for me.

'Twixt sunset and moonrise it was, I can mind:
Ah, 'tis easy to lose what we nevermore find!—
Of the dear stranger's home, of his name, I knew nought,
But I soon knew his nature and all that it brought.
   Then bitterly
   Sobbed I that he
Should ever have tied up my garter for me!

Yet now I've beside me a fine lissom lad,
And my slip's nigh forgot, and my days are not sad;
My own dearest joy is he, comrade, and friend,
He it is who safe-guards me, on him I depend;
   No sorrow brings he,
   And thankful I be
That his daddy once tied up my garter for me!

Thomas Hardy—"the Dark-Eyed Gentleman", Time's Laughingstocks and Other Verses

I've since finished Expansive Poetry ("Essays on the New Narrative and the New Formalism"), but as I mentioned before, I would like to get back to some of the attacks on Ezra Pound and T.S.Eliot in that volume.

Richard Moore, who is no lightweight authority, uses Hardy's wonderful "Dark-Eyed Gentleman" to set up an assault on the acknowledged pillars of modern poetry. He shows how Hardy's work was couched in a tradition while shrewdly undermining the ugliest aspects of that tradition. Moore points out that Hardy, rather than rail on in the poem about the near misogynistic standards of Victorian mores, chose to create a vivid character who expressed the problem using a frank, affecting voice with just the right amount of irony. So the point is that Hardy is an poet of extraordinary skill and sensitivity? As a devotee of Hardy, I whole- heartedly agree. After working this point about quiet revolution through a wandering journey in Euripides, Shakespeare and others, Moore arrives at his main task.

Moore starts by blasting Pound's "In a station of the metro". The entire poem:

The apparition of these faces in the crowd:
Petals on a wet, black bough.

Moore scoffs at the slackness of the iambic hexameter of the first line and at the second line, which he says "makes no metric sense at all". He then goes on for almost two pages about how the poem shows contempt for the conventions of English poetry by merely "alluding" to iambic pentameter, rather than properly using it.

At this point I'm bewildered. Can this really be Richard Moore writing? It seems obvious that Pound here is translating Chinese and Japanese prosodic conventions into English accentual verse. But never mind the eastern motor within this poem. One needn't know the first thing about haiku in order to feel the power of Pound's 4 stresses per line.

The apparition of these faces in the crowd:
Petals on a wet, black bough.

Coleridge used the same 4 stresses non-syllabic in Christabel. You need look no further than the famous opening lines:

'T is the middle of night by the castle clock
And the owls have awakened the crowing cock;

I can imagine Moore praising Coleridge as a metrical genius for the way he mirrors the lines as anapestic tetrameters with iambic final feet, but then how would he explain the "Tu–whit !— — Tu–whoo !" of the next line? What are those, anyway? Two iambs (surely no one would stoop to such scansion)? Two spondees? What of the clue in the em dashes? (Christabel was a favorite of an old girlfriend of mine, and I remember her reading it aloud. She was no prosodist, but I remember that she nailed the crucial caesura in that line.) How would Moore go on to explain the rest of Christabel? (Forget for a moment that even Coleridge can't adequately explain "How drowsily it crew")? Of course a discerning critic such as Moore would appreciate the accentual meter for what it is. Why can't he see Pound's poem the same way?

Clearly "In a station of the metro" is accentual, rather than accentual- syllabic. It would take a truly tin ear to want to stress "of" and "in" in the first line, just because it made them iambic, as it would to add "like" to the beginning of the second, because it makes it approximately iambic. Pound uses the copious unstressed syllables in the first line to emphasize that he's starting from a very quotidian encounter ("quotidian" in the modern sense, as borrowed by English from medieval Latin, rather the classical Latin adverbial expression, as used in the title of this article). The second line explodes into the image as even Moore acknowledges. The lack of unstressed syllables cuts the image into the line as surely as a laser etching. Even the unstressed syllables in the second line have a purpose. It occurs to me to think of "on a" as saying "if you mistook that last word for a cheap-trick trochee, just you watch what comes next".

I have always counted this poem as one of the triumphs of "free verse". De gustibus non disputandem and all that–I can understand a critic's not liking it, but I cannot understand a critic's insistence in setting up such a blatant straw man of false prosody.

Moore then goes on to work on Eliot (I can just hear Robert Graves goading him: "These be thy Gods, O Israel").

Let us go then, you and I,
When the evening is spread out against the sky
Like a patient etherised upon a table;

(from "The Love Song of J. Alfred Prufrock")

Moore goes on about how this simile just does not appeal to him. Again this is a matter of taste, and there's not much material for argument. But he also claims that Eliot is being merely capricious and manipulative by (ab)using such an outlandish trope. Surely Moore has read the numerous critics, such as I.A. Richards who recognized Eliot's hearkening back to the metaphysical conceit. Surely he knows that Eliot himself wrote about his debt to the Metaphysicals. Throughout Eliot's work, his exploration of the conceit has always been his most personal application of the ideas he expounded in "Tradition and the Individual Talent". No news there. Surely Moore would not dare castigate John Donne for his extravagance in trope. Should we invoke the Dean of St. Pauls in Eliot's defence? Alas. It seems that Donne can only commiserate:

Who would not laugh at mee, if I should say
I saw a flaske of powder burn a day

(from "The Broken Heart") (Note: the italics are original (I think), not mine. I'm not sure why the Luminarium doesn't italicize that phrase. All my dead tree texts do.

Ah well. Moore's attack on "Prufrock" again reads to me as from a critic who probably knows better when he chooses to ignore the precedents on which the poet is building. The critic doesn't want to admit any mitigation of his attack on the poets supposed sullying of tradition.

Many of the free verse fundamentalist followers of Pound and Eliot seemed truly confused about the craft of those two. They thought that Pound and Eliot helped free them from the supposed tyranny of form. They clearly couldn't appreciate what great examples Pound and Eliot were of the fact that free verse ain't no free lunch. It takes even more craft to execute free verse well than it does to write in form, and that craft right now must be learned rigorously from the metrical tradition. As I've said, I agree with Expansive Poetry in its denunciation of the movement that marginalized form in the middle 20th century, but I find it unfortunate when a critic such as Moore makes the same mistake as the free verse fundamentalists, even in pursuit of the opposite argument.

[Uche Ogbuji]

via Copia

Principles of XML design: When the order of XML elements matters

Principles of XML design: When the order of XML elements matters

Subtitle: When to be strict and when to be lax as you decide how to order child elements

Editor's synopsis: When multiple XML elements occur within another element, does element order matter? Whether it's the order in which the parser reports elements to applications, or the question of whether or not to mandate specific order in schema patterns, things are not always as simple as they may seem. In this article, Uche Ogbuji covers design and processing considerations related to the order of XML elements.

This is the latest in my series on XML design. The other installments are:

Also along these lines are my discussion of ERH's excellent book Effective XML, and my article "Keep your XML clean".

[Uche Ogbuji]

via Copia


Wiktionary, via Sean Palmer on IRC

[...]Wiktionary, a collaborative project to produce a free multilingual dictionary in every language, with definitions, etymologies, pronunciations and quotations. Wiktionary is the lexical companion to the open-content encyclopedia Wikipedia ( In the English edition, started on December 12, 2002, we are now working on 68055 entries."

Around the time this reference came up, we were discussing the various senses of the word "shibboleth", and on a lark, I checked the Wiktionary. It nails it nicely:


  1. A word which was made the criterion by which to distinguish the Ephraimites from the Gileadites. The Ephraimites, not being able to pronounce sh, called the word sibboleth. See Judges xii.
  2. Also in an extended sense: the criterion, test, watchword, or password of a party used to distinguish membership.
  3. A slogan, jargon word, or catchphrase closely associated with a particular group and not used very much, or at all, outside of it. Can also apply to ideas, customs, and uses of language.
  4. A common belief or usage that is questionable or incorrect; truism, platitude.

It's really wonderful to discover gems from the amazing world of on-line collaboration. Wiktionary doesn't yet have as much mind share as Wikipedia, but I suspect it shall as time goes on, and this will make it better in some ways, and worse in others.

I do hope it evolves some means of exporting/querying though XML or RDF, similar to WordNet. See:

[Uche Ogbuji]

via Copia

XsltRenderer for PyBlosxom

The XSLT renderer is a renderer that takes any output from the default renderer (i.e. after processing using flavors), and applies an XSLT, using the result. If you have handy XSLTs that start with XML vocabularies such as Atom or XHTML, you can create such output just as you currently do in PyBlosxom, by appliying your flavor of choice. You can then use the XSLTs you have to produce additional types of output quite easily.

I used this to add an RSS 1.0 feed here on Copia. It starts with the Atom flavor, and uses Antonio Cavedoni's XSLT to translate the atom to RSS 1.0. Taking this approach in general made thinsg a lot easier for me. I went from nothing to RSS 1.0 feed in about two hours of hacking, which included a lot of learning about the plug-in API. Based on the hassles that other PyBlosxom feed projects seemed to be working through, I think the detour through XSLT was quite valuable. It made it easier to lean on the shoulders of others outside the PyBlosxom community.

Anyway some other sample uses:

  • A very simple "plain text" feed. Start with the Atom flavor and then use a tiny (5 lines or so) XSLT to strip all tags
  • An alternative, image-free view. Start with a flavor that generates XHTML, then apply a tiny (5 lines or so) XSLT to strip all images

There is one configuration option for this plug-in-- xslt_trigger_suffix. See the module header doc for more info.

[Uche Ogbuji]

via Copia

Copia gets RSS 1.0, courtesy XSLT

I added RSS 1.0 feeds to Copia yesterday. It was a fun Sunday evening hack project, and even though parts of PyBlosxom still make me scratch my head, I'm in even more awe of its hackability.

It seems RSS 1.0 has always been a sketchy area for PyBlosxom. Because RSS 1.0 essentially needs 2 modes, the item list and the item details, you can't emit it linearly, and so you can't use a PyBlosxom flavor, as with RSS 0.91 or atom. I found some discussion of an RSS 1.0 from time to time in the archives, including this Perl port, but nothing readily usable, so I had to roll my own.

But what does an XML head do when faced with such a task? He runs a simple equation: existing atom flavor for PyBlosxom + plenty of Atom to RSS 1.0 XSLT transforms out there = decision to implement an XsltRenderer for PyBlosxom. The XsltRenderer can take a flavor's output and run it through an XSLT to produce the final output.

More on that in a follow-up item, but for now, I've added the whole site feed to the feed discovery convention in the HTML headers, and also to the right hand listing. There are also topic-specific feeds for all keywords.

So, for example, here is the RSS 1.0 Python feed, and here is the XML Atom feed. Note: we use lowercase for keywords on Copia.

[Uche Ogbuji]

via Copia

Is Luton really so bad?

Luton voted Britain's worst town--BBC (via pointer from libby Miller)

I'm in Luton usually at least once a year. My closest family outside my two nuclear units are there: the Anas (mother's maiden name). Aunt Arit and my three cousins (Uncle Joe is in Nigeria serving as a state health commissioner). I love visiting them, and Lori and I both thought "hey, Luton isn't all that bad" when we read the article.

But then I had to pull my focus a bit back from the well-kept Ana household to remember what I could of the big picture. Seems I think as little as I can of the actual town of Luton. I'm either at chez Ana or in London (there's a very handy rail line straight from Luton to King's Cross or City or even Gatwick). If I press myself, it does occur to me that Luton gives the impression of drabness and accidie that never properly troubles me because I only spend a week or so at a time there, and it's usually a well-appointed and happy week.

Of course there are other towns listed as the ten worst of which I have fond memory, because I was visiting friends: Bath (Libby Miller, Damien Steer, Dan Brickley, etc.) and Nottingham (Jeni Tennison). I guess it takes a fair amount of residence before town ever grows into more than a shell around one's attention to particular people.

[Uche Ogbuji]

via Copia

TreeBind, and incidentally Nux

In my previous entry I said "When you compare the weary nature of, say Java XML data bindings, Amara is a nice advertisement for Python's dynamicism." Interestingly, Eric van der Vlist recently mentioned to me a project in which he attempts to address some of these deficiencies within Java. TreeBind, is "yet another XML <-> Java binding API." The TreeBind page says:

The difference between TreeBind and most of the other Java binding APIs is that we've tried to minimize the need for any type of schema or configuration file and to maximize the usage of introspection of Java classes in order to facilitate the integration with existing classes."

It's about time, but is Java's introspection really enough? It doesn't save you from welding to Java's type rigidity.

It makes me recall Wolfgang Hoschek's response to one of my Amara announcements on XML-DEV. The Amara example was:

The following is complete code for iterating through address labels in an XML document, while never loading more memory than needed to hold one label element:

from amara import binderytools
        for subtree in binderytools.pushbind('/labels/label',
            print, 'of',

And Wolfgang responded:

Very handy!

FYI, analog example Java code for the current Nux version reads as follows:

StreamingTransform myTransform = new StreamingTransform() {
             public Nodes transform(Element subtree) {
                 System.out.println(XQueryUtil.xquery(subtree, "name").get(0).getValue());
                 System.out.println(XQueryUtil.xquery(subtree, "address/city").get(0).getValue());
                 return new Nodes(); // mark current element as subject to garbage collection
        Builder builder = new Builder(new StreamingPathFilter("/labels/label", null).
            createNodeFactory(null, myTransform)); //[Line split by Uche for formatting reasons] File("labels.xml"));

It's not as compact as with Amara, but still quite handy...

This is certainly a great leap forward from Java/XML APIs I've seen, even from plain XOM. I'd expect a similar leap, albeit in a different direction, in TreeBind. But in my biased opinion, even such impressive leaps lose a lot of luster when compared to the gains in expressiveness provided by the Python example. Line count is just a bit of the picture. For overall idiom, and the amount of conceptual load buried in each construct, it's hard to even place the Python and Java examples on the same scale.

In here, I think, is the crux of where dynamic language advocates are unimpressed by the productivity gains claimed by XQuery advocates. Productivity gained through declarativity should complement rather than interfere with productivity gained through natural, expressive idiom. XQuery does not meet this test. By imposing a ponderous type framework over XML it provides productivity on one hand while stifling the power of dynamic languages. this is why in Amara I seek to harness the declarative power of unencumbered little languages such as XPath and XSLT patterns to the expressive power of Python. I think this gives us a huge head start over systems using XQuery and Java introspection to tame the chore of XML processing.

See also:

[Uche Ogbuji]

via Copia

Another on Amara

"XML Parsing with Python"--Derek Willis

Let’s face it, relational database types don’t like XML files. They’re structured, sure, but not in quite the way we’re used to. So pulling them apart is a chore for which there are many tools but few that seem to fit easily into the CAR Computer-Assisted Reporting] mindset. Enter [Python and the Amara toolkit. Amara builds on 4Suite, which processes XML and RDF, and it works in a very Pythonic way by essentially turning XML data into Python objects. If I have to parse XML into a relational database, Amara is my tool of choice.

One thing that I've especially appreciated about feedback on Amara is the way users cite it as an example of the essential power of Python, and why it is a draw from even outside of Python. This has always been my aim, more conventionally with 4Suite, and more subversively with Amara. When you compare the weary nature of, say Java XML data bindings, Amara is a nice advertisement for Python's dynamicism.

Later on Willis concludes:

CAR folks can think of [XML as processed through Amara] as calling field names, and instead of printing out elements you can insert them into a database. Nice and easy - the way everybody says XML should be.

And just the way I intended. Nice.

[Uche Ogbuji]

via Copia

Amara Appreciations

Last week I mentioned a kind message Sanjay Velamparambil sent to the 4Suite list. As I said, "it's always pleasing to me as a developer to hear a voice ring out from the noise clearly appreciating the value of the work we've done." This week, Amara gets some love.

In a message to the 4Suite list Wednesday Tom Lazar said:

i just wanted to chime in that just yesterday I had an urgent, real- world problem in where I needed to manipulate an XML Document
programmatically - grep/sed/awk on the textfile would have been too
difficult ("now you've got two problems"[tm]) and an XSLT alone
wouldn't have done it either.

using Amara i hacked a python script that did the whole job in
(literally) ten minutes. as I started the script I was a bit
apprehensive: afterall our script would pick out certain nodes and
assign new values to them (or delete them, depending) and then write
it back to the file - but it all worked without a hitch.

and looking at the script, you'd never think it was handling XML at
all ;-)

so thanks for making Amara and keep up the good work!

You're very welcome, Tom, and thanks for all the help with improving the bindery mutation API.

As if that wasn't enough, the same day I got a private message from another user. I haven't asked his permission so I won't identify him at the moment, but he actually put together a video clip of himself demonstrating Amara. In the clip he shows the eight or so custom Python modules for XML processing that were replaced with a one-liner using Amara. My only regret is that he and his team had to write all that other code in the first place, before finding Amara, but at least they don't have to maintain it any more.

Feedback like that makes all the long hours worthwhile.

[Uche Ogbuji]

via Copia