UBL 1.0 International Data Dictionary, First Edition

UBL home page

The First Edition of the UBL 1.0 International Data Dictionary (IDD) has been approved as an OASIS Committee Draft by the OASIS Universal Business Language Technical Committee and is now available for general use.

See my articles on UBL, such as:

Thinking XML: Universal Business Language (UBL Thinking XML: UBL 1.0 (plus ebXML Core Components and more)

UBL builds full document schemata from discrete data elements called business information entities (BIEs) in a process I describe in those articles. This translation makes BIEs more useful to Chinese (Traditional and Simplified), Japanese, Korean, and Spanish speakers, as well as English.

[Uche Ogbuji]

via Copia

4Suite 1.0b1

The announcement

Yaaaaay! This is nominally the feature freeze for the way, way overdue 4Suite 1.0. Let's hope this freeze accelerates progress towards full 1.0. Thanks to all our patient users. The focus of this release is probably performance. Jeremy Kloth, one of the best programming minds I've encountered, threw himself into the challenge of squeezing waste out of Domlette, without losing its great functional benefits. Some of the resulting gains are amazing. There are a lot of other fixes and enhancements, and I think it's a very solid release.

My next step is to release Amara 1.0b2 and kick off a branch to take better use of some of Jeremy's enhancements, including a super-efficient mini-SAX for Domlette.

4Suite home page

[Uche Ogbuji]

via Copia

ReleaseForge

ReleaseForge

We just put out a 4Suite release and one of my tasks was to update SourceForge. If you've ever maintained a project on SF, you'll know that making a release through the Web forms is a very tedious experience. ReleaseForge is a Python/QT GUI that makes the process easier. Much easier. Normally SF release for 4Suite takes me a half hour or so. With ReleaseForge it was a matter of five minutes.

In installed the ReleaseForge RPM, but it didn't seem to have useful dependency info (a common problem with Python RPMs). I'm on Fedora Core 3, and got it working fine by doing:

apt-get install PyQt sip

After launching ReleaseForge and giving it your SF login info, you start with some basic info for the release.

ReleaseForge Screenshot 1

Then you select all the files to release and use simple controls to set the file types. This is the part that used to really get my goat. Now it's a snap.

ReleaseForge Screenshot 2

At this point ReleaseForge takes over and does all the talking with SF.

ReleaseForge Screenshot 3

ReleaseForge offers an option to post project news as well.

ReleaseForge Screenshot 4

But this seems to use different rules from the SourceForge Web forms. When I posted simple text with line breaks, ReleaseForge humped it all onto one line, as you can see. Posting the same text into the SF Web form had the expected result. But posting news on SF was already easy, so no real complaints about this little quirk.

[Uche Ogbuji]

via Copia

Quotidie

If a lynx, that plush fellow,
climbed down a
tree and left behind
his face, his thick neck,

and, most of all, the lamps of his eyes,
there you would have it--
the owl,...

-- Mary Oliver -- "Owl in the Black Oaks", White Pine

Very sharp. Even though Oliver is so economical in her description, I get a strong picture from the passage, a picture of the transformation from lithe, angled lynx to staid, round owl. I think it's the discord in "lamps of his eyes" that nails it: a phrase that clearly looks forward to the owl even though it hasn't yet been announced. If I were writing such lines, I think I would have had a few words about the contrasting characters of the two animals. That would probably be a mistake, but it takes Oliver's tautness to make this clear to me. Always nice to receive a poetic lesson in the morning.

My friend Susan lent me Mary Oliver's White Pine, a collection of poems in traditional and prose format, on the theme of nature in New England (well trodden topic, that). It has been a pleasant read. Oliver is certainly a poet. She manages the necessary combination of aptness and efficiency with language. In developing both qualities, she clearly has learned from Emily Dickinson. It's great to find a contemporary in the American landscape with some poetical aptitude. I've found a few others of some merit by accident, such as Dana Gioia, X.J. Kennedy and Alice Fulton. But in general, reading through contemporary American verse is nothing short of torture. No wonder the public has shrugged off the art. I'm grateful for having been led to Oliver.

[Uche Ogbuji]

via Copia

Buster ass Comcast

Comcast is my cable broadband provider. Looks as if they're having a major outage in my area. My network connectivity has been flaky all week, and for the past three days the situation has been enarly intolerable. I've called a couple of times and get recorded messages acknowledging the problems, and basically telling me the queue is so long there's no point hanging around on the phone.

I suppose these things happen, but when the Internet is your main supply line, it really bites, especially when they take an age to fix things.

[Uche Ogbuji]

via Copia

PyBlosxom permissions headaches: hand edit versus XML-RPC

Generally I use BloGTK via XML-RPC to post here. Sometimes I want to ssh in and hand edit files as well. Occasionally I want to hand create entries and maybe even edit via BloGTK. Either way, permissions become a pain in the ass. Apache runs as user $APACHEU and group $APACHEV (I'm using shell variables rather than revealing the actual names out of bootless paranoia). When I log in, I'm user $UCHE in group $OGBUJIS. Here is the rather brute way I solved part of the problem.

I set the SGID bit on all the directories to which I expect files written through pyblosxom.cgi:

chmod g+s $DATADIR chmod g+s $DATADIR/metadata chmod g+s $DATADIR/comments

I made sure the group of each was $OGBUJIS, of course. So now whenever a new file is created through XML-RPC or some other plug-in, it's created with group $OGBUJIS, and I can happily ssh in to edit as $UCHE.

This doesn't solve the converse problem of using CGI to edit files I created by hand, but this is rare enough that i just log in as root and use chown to sort things out.

Does anyone else have a better way? I thought of Apache suexec, but my past experiences with it have been nightmares of impenetrable detail.

[Uche Ogbuji]

via Copia

4Suite for RDF

RDF hacking for fun and profit -- Bill de hÓra

"I find 4Suite to be stable software (tho' I'm not sure the RDF stuff is active anymore"

The main limitation with RDF in 4Suite is that it has not not been tracking the latest specs. This sucks, but it reflects the reality of "it works, and grand updates don't scratch anyone's itch". 4Suite's RDF library is actually very stable, and has been accumulating bug fixes, performance fixes and new drivers.

I'd say that 4RDF is fine if you don't need all the nuances of the new specs (which are modest enough). It is heavily used, which is one nice test of its suitability. We do have grand post-1.0 plans, but they are not yet set in stone. My guess is the following:

  • We'll abandon our own parser for rdflib. That parser is SAX-based, has been tracking the latest specs, and is very well tested. This is actually something we and the rdflib folks have been discussing near forever. We just haven't got around to the actual work (itch scratching need and all that).
  • We'll make the low-level API more Pythonesque. Developments such as iterators and generators have come since the original 4RDF effort, and we want to put them to good use.
  • We'll work in a Versa 2.0 (RDF query language). SPARQL is not doing it for me, and for a lot of my colleagues and corresponents. OK. I'll be blunt. I think SPARQL sucks, and I'm likely to support W3C XML Schema before I support it (hint: earthworms will fly of their own locomotion before either event).

"Uche et al have been working on anobind most recently)..."

Well, that's just me, no et alii so far. And Anobind is no more. It has been absorbed into Amara XML Toolkit. I'm developing Amara in order to complement 4Suite, not to supplant it in any way. It's an add-on to 4Suite that gives Pythoneers the super-friendly idioms they like. I still put into 4Suite about as much effort as I do Amara.

One shouldn't make any assumptions on 4Suite development based on Amara.

[Uche Ogbuji]

via Copia

King Sunny Ade invades Boulder

E je ka jooooo! Ka anyi gbaa egwu! (That's "let's dance!" in Yoruba and Igbo, respectively).

Last night Lori and I went to see King Sunny Ade at The Boulder Theatre.

The concert started with a very lukewarm opening set by Obi Obadebe (whom my friend Ejovi AKA Joe thought was related to the great musician Chief Stephen Osita Osadebe). Always wonder when you see a West African band with three players. We don't do very much part-way, and our bands typically start with eight musicians. It was cool to hear highlife played in public in the U.S. outside my parent's circle, but somehow I'm doubtful about the Obadebe/Osadebe connection. Apparently Boulder is a bit of a hot spot for highlife musician visitors, mostly Ghanaian, and there is a big highlife concert coming up this Friday. I'll have to pay attention.

Anyway, Sunny Ade himself took the stage with a band of 12, and completely commanded it. I love watching the subtleties of great band leaders (Buckwheat Zydeco is a good example). Ade worked flawless timing and very clean playing out of his big group with deft looks, nods, and gestures. I've always marveled at how highlife, soukous and juju bands have such sharp and clear instrumentation, and I caught a glimpse of the process on stage.

Most importantly, the music was wonderful. Playful, energetic, thick, punctuated by the insistent talking drum (Ade probably makes better use of the talking drum than any other popular musician). Ade hopped around the stage like a man 30 years his junior. The audience followed his lead (as usual for Boulder there were a lot of hippies, old and new). They even crowded the stage to "spray" the musicians. Fun to see some of our traditions embraced by others. Ade occasionally gave a charge the revels by bringing out the heavy duty dancing girls. I found myself doing all the old high school / college dances from O wa mbe to Foot Patrol.

Lori jammed a good bit, for one almost 6 months pregnant (not that preganacy has ever done much to dampen her energy). She went to the sitting area for the occasional spell, but she had a lot of fun. We ran into my friend Joe and his girlfriend Carmella. Joe and I chatted about our own memories of Nigerian music in Nigeria, (we're 20 and 15 years removed, respectively, from the actual country). Carmella is from Galicia and before Ade came on we chatted about the parallels between Spain's politics of regional nationalism and Nigeria's. One point I made was that political differences in Nigeria tended to fail in two areas: food and music. To be sure, music like Ade's is pretty universal, especially live, as it should be, and last night's experience underscored that point.

[Uche Ogbuji]

via Copia

Copia goes down, thanks to logstats plug-in (?)

So this morning I noticed Copia was down. Requests would hang until they timed out. Apache seemed up, and running pyblosxom.cgi directly worked fine. I enabled the CGI debug line:

import cgitb; cgitb.enable()

But this didn't help. It felt like an infinite loop somewhere in the guts of processing. After fitful debugging efforts (got work piling up), I traced the problem to the logstats.py module. My approach in the end was to use py['load_plugins'] in config.py, comment out all plug-ins, and uncomment them until I found the culprit. It was really cool to uncover comments one by one and see different aspects of the site start working step by step. It really reinforces the power of PyBlosxom's "microkernel" approach. My resulting config was:

py['load_plugins'] = [
  "comments",
  "firstdaydiv",
  "keywords",
  "logrequest",
  #"logstats",
  "meta",
  "metatime",
  "pyarchives",
  "pycalendar",
  "pymarkdown",
  "trackback",
  "xmlrpc_blogger",
  "xmlrpc_metaweblog",
  "xmlrpc",
]
#The above list is only for debug purposes.  If *not* debugging,
#Uncomment the following line
#del py['load_plugins']

I'll have to check later into what;s causing logstats.py to kill the server, but other PyBlosxom users might want to take note.

[Uche Ogbuji]

via Copia