Ubuntu temptations

There were several comments to "Fedora and the repository politics" suggesting Ubuntu. Several of my friends and colleagues whom I respect a lot have suggested Ubuntu before that. This makes for temptation, but probably not one I'll succumb to just yet. It was also people I respect very much who suggested Debian, and there's no doubt that even though you may share a lot of technical tendencies with someone, you won't always share experiences with particular distributions. If Fedora Core ever becomes unbearable, Ubuntu will be my next stop, but as it is, I really like Fedora, and I'm very productive on it, largely because I know my way around it so well. I did complain about the repository split, but once I get over the switch to RPMForge setup, all usually goes well after that. There's not really enough pain to justify learning an entirely new distro right now.

I am very glad to hear that Ubuntu addresses a lot of the problems with Debian. It's good to have another viable choice.

[Uche Ogbuji]

via Copia

Hip-hop slanguistics

Mark Liberman responded to my earlier ribbing. He says:

His conclusion: "My personal theory is that hip-hop slang is far too rich and fast-moving for linguists to easily keep up".

Well, I'll defend my profession by claiming that a linguist who tried to keep up with it -- and there probably are some in that category -- could do as well as anyone else.

Mark is right, of course. I was mostly teasing. But as I responded in e-mail to him:

I do wonder where such linguists may be hiding. I mentioned some of the claimed Wolof origins of common urban slang, and I'm never entirely sure what to believe along those lines because often the chain of citation is not as rigorous as what I've come to expect from linguistics. Yes, I know that it's hard to figure out the record through the dark ages of slavery and all that, but I do wonder whether there is enough linguistic attention to what (hip-hop slang English) I think is the richest dialect of any language in common usage (and I know quite a few dialects, non-linguist though I may be).

I'm especially suspicious of the grandness of some of the claims, for example that the term "OK", notorious for its etymological coyness, derived from Wolof expressions. I don't believe this derivation is generally accepted in linguistics. I know I'm in danger of being called a House Negrah who is too keen on seeing authority in white professors, but the reality is that I can't imagine any possible motivation for linguists to deny such etymology, if it's plausible. Linguists already accept all sorts of derivations in English from cultures that are not fashionable to Eurocentrists.

I'm also a bit skeptical because I understand that Igbos made up a large proportion of slaves, which should allow me, as a decent Igbo speaker, to recognize some corruptions of Igbo into Black American slang, but I've tried and can't find any examples that make much sense. Maybe Wolof folks were more determined to clutch to their language than Igbos, but I do wonder.

One site I did find is this one, which attempts to classify the morphology of hip-hop slang. It's probably not rigorous linguistics, because I can comprehend the terminology, but I'd still love to find other such resources.

For my part I keep up with hip-hop slang by listening to the music and hanging out on hip-hop boards such as Okayplayer. I've never lived in the hood (another rear end slang), pumped a gauge, smoked dro nor boosted any lo, and I don't expect a linguist would need to either. They would, however, have to sort out the various slangs of New York, Atlanta, LA, The Bay Area, St. Louis, New Orleans, London, Kingston, and so on. It would be a big task.

One side note on Liberman's entry. He quotes Kanye West:

I drink a boost for breakfast, and ensure for dizzert
Somebody ordered pancakes I just sip the sizzurp
That right there could drive a sane man bizzerk
Not to worry y'll Mr. H 2 the Izzo's back to wizzerk

On line 2, Kanyeezee is making a joke. He doesn't mean codeine syrup (which "sizzurp" almost always means). He means plain old maple syrup. Liberman says:

Exercise for the reader: in the the last line, what did Kanye actually say, and what did he mean?

Solution: Hip Hop icon Jay Z is nicknamed "HOVA", and in one of his hit songs the chorus went: "Aitch to the izzo, vee to the izzay", basically spelling his nick name. Jay Z is the one who gave Kanye West his break, and Jay Z is also known for retiring, unretiring, retiring again, and then becoming president of Def Jam records. Kanye is just paying homage by mentioning the unretirement ("back to work").

[Uche Ogbuji]

via Copia

Wow! XML formats for outlining are complete rubbish

There's no other way to put it other than the title. After having heard a lot about OPML (and having used it as a blind RSS feed exchange format), Ian Forrester's comment that he is using OPML for all his personal note-taking finally pushed me to look seriously at the format. It is just complete and utter garbage. OPML might possibly be the best example of the worst abuses of XML markup. It's really hard to fully express how horrible OPML is, and there is no way in the world that I'll ever be dealing with it directly. The language that I use as a hub for my personal information space needn't be perfect, but it can't make me gag at every other tag.

I looked a bit further and found OML. It's a reaction to the ugliness of OPML and so I expected it would be the ticket for me. It does partially fix perhaps the most immediate and visceral abomination of OPML: the abuse of attributes for prosaic textual content (although why it doesn't completely eliminate the text attribute in favor of a title child element is beyond me). But it leaves a lot of nastiness and introduces some of its own (the idea of item as generic extensibility element is hugely ill-begotten). OML isn't even widely-used enough to just compromise and deal with its flaws. I think I'll consider creating my own language. I can export to OPML via XSLT when I really have to. But I think I can use some of the fixes in OML as a starting point.

"Sharing, the web way", by Danny Ayers is a good outline [n/m] of the horrors of OPML. He does get into the politics as well, which I think are less important to me than the technical flaws. He does state what has always been my reaction to the OPML hype:

But more and more I'm thinking things like blogrolls or whatever are much better handled using something more specific - XBEL or simply (X)HTML (like Netscape bookmarks).

Of course I'd plump for XBEL, but this expresses my general viewpoint. I wanted to look at outlining formats because so many people go on about outline editors and formats as productivity tools. I want to be sure I'm not missing anything. Based on what I've found so far, I'm really confused at what people are gaining in this space.

Danny goes on to say:

If what you want is versatility and be able to combine material from different sources and of potentially different data types, then you really do need something like RDF - the glue of OPML isn't strong enough.

I think that O*ML is just one of those examples that illustrate the limits of RDF. RDF is not the best model for content with a significant prose quotient, and RDF/XML not the best syntax. I think that a format I came up with would have the following characteristics:

  • Lightweight overall framework using other formats such as XBEL and XHTML 2.0 to do the heavy lifting
  • Sound XML design overall
  • Metadata sections that can readily be mapped to RDF model without using RDF/XML directly

Where would that take me that no one else has already charted? Maybe nowhere. I certainly wouldn't plan to spend much time on it (and I might not even bother at all). It's just a bit of exploration suggested to me by what I've found poking around what's there already.

[Uche Ogbuji]

via Copia

Liberman's urban slang needs a bit of rust-proofing

I love those cats on Language Log. I love how unpatronizing their attitude towards English usually is. But I've noticed that they tend to get themselves into a bit of fog when dealing with hip-hop slanguage. My personal theory is that hip-hop slang is far too rich and fast-moving for linguists to easily keep up. In "The ships, it shuts everything up", there are two separate head-scratching comments.

first heard back-end abbreviations -- like "stache" for moustache and "rents" for parents -- about 30 years ago, and I thought this fad was more or less over, except maybe as a way of forming nicknames like "Zo" for Alonzo Mourning (who probably got his monicker 25 years ago, anyhow). For example, urbandictionary.com calls za "an old way of sayin pizza, its stupid noone says it so dont".

Well, "za" is bougie college speak. No edge whatsoever (thus the Urban Dictionary comment). But there are many such abbreviations in hip-hop slang. Some examples:

  • "dro", for a particularly potent form of hydroponically grown marijuana (shortened from the slang term "hydro")
  • "lo" for Ralph Lauren Polo clothing
  • "nana" or "nanny", for female genitals, shortened from "punanny"
  • "gauge", a shotgun, shortened from "twelve gauge"
  • "zurp", for a codeine cocktail, shortened from "sizzurp", a corruption of "syrup"
  • The old school "fro" for "afro"

Of course there's the Rap Group "Tha Liks", who were originally "Tha Alkaholiks" (and pretty dang good, too).

And on the sports theme, one should really count "Bama".

Another quote:

I thought that cats was also obsolete slang, but apparently it's back on the streets -- with a difference. For the likes of Louis Armstrong, cats were the musical in-group, but it looks like these days, it's Dogs Out against "you cats".

"cats" never really went away, but it did become generalized from just members of the hip, cool set to refer to any person. According to American African Studies profs it came from the Wolof "kai" signifying "person" in compound words (they claim similar origins for "hip" and "cool"), so I suppose it might have just been finding its roots. "Cats" has been common urban parlance all through the hip-hop era.

[Uche Ogbuji]

via Copia


The big elephant in the room is African governments. Africa has been totally mismanaged and misruled in the past decade, but nobody wants to talk about that because of political correctness. Africa's begging bowl leaks horribly. As a matter of fact, the African Union itself estimated that every year corruption alone costs Africa $148 billion. If African leaders could cut that in half, they'll find more money than what Tony Blair is trying to raise for them. —George Ayittey on Jim Lehrer's NewsHour

Good stuff as usual from Emeka Okafor recently. In a few recent entries he has been talking about books with a variety of perspectives on African development.

In "Ayittey vs Sachs" he links to a debate between the two authors on PBS. Interesting stuff, but I'm left wondering whether Jeffrey Sachs is deluded, or in someone's pocket. He seems to be very optimistic about the probity of African governments in using Western aid. He wants Western governments to throw more money at Africa's problems.

It's not chauvinism to simply admit that most of Africa's problems can't be solved by throwing money at them. African has amply proved that it can be a bottomless pit of inefficiency and corruption, and I find it a bit patronizing for Sachs to go on as if only the hand of Western largesse will save Africa from itself. My attitude is a lot more along the lines of Ayittey, as I suppose is that of a lot of the professional class.

Sure, our problems of governance originate in actual colonialism and the essentially colonial manipulations of the cold war, but we're not going to do anything about it pointing fingers for the next 50 years. We have plenty of resources, including, most importantly, a huge and largely untapped pool of human resource. Our governments are a bit less arbitrary and kleptocratic than they used to be (though we have a long way to go), and I see a decent hope of Africa's bootstrapping itself successful region by successful region, and largely independently of foreign aid. As Ayittey says it will have to be the private sector leading the way.

Well, I mean, we have to find the origin of the problem. The origin of the problem in many African countries is that you've got state bureaucracies which are too bloated. I mean, if you take Ghana, for example, Ghana has 88 ministers and deputy ministers. Take Uganda; Uganda has 70 -- for a country of 25 million people, Uganda has 70 ministers. Uganda's budget is 40 percent aid-dependent. Ghana's budget is 50 percent aid-dependent.

Even if you cancel the debt, you don't eliminate that aid dependency. This is what I mean by getting to the fundamental root causes of the problem. Government, the state sectors in many African countries need to be slashed so that, you know, you put a greater deal of reliance on the private sector. The private sector is the engine of growth. Africa's economy needs to grow but they're not growing.

Right. Nigeria went from 4 governmental regions to 19 states and then eventually to (I think) 33 states. We've built a ludicrous bantustan of petty bureaucratic divisions. Private enterprise doesn't even know where to begin navigating the unpredictable waters of the numerous layers of government. Local knowledge isn't enough for enterprise in much of Africa. You need multiple levels of local influence.

Ayittey is also right when he talks about basic civil securities as a huge obstacle to development. Nothing underscores the danger of misplaced priorities better than the AU's attitude towards Mugabe's colossal stupidity while they try to turn the topic back towards further handouts from the West.

I'll have to get a copy of Africa Unchained, Ayittey's book. Ditto Preparing Africa for the Twenty-First Century, a book Okafor brought to my attention in a later entry.

[Uche Ogbuji]

via Copia


Well, it's been a little while but I'm due for a movie review. So, I decided to cover a movie I just finished watching and thoroughly enjoyed: Sideways. The first thing I must say is that I was honestly suprised I enjoyed the movie given the underlying theme is on a topic I have no interest in: wine connoisseurship. If it was up to me (queue gasps) I'd rather have a glass of Boone's Farm (strawberry) than a Chardonay or Merlot (this is supposed to be a low quality wine - but I wouldn't know, which is my point). My pallet for alcoholic beverages is little to none and (being a sweet tooth) my preference is for sweet wines. So, needless to say I avoided seeing this movie, with the notion that I wouldn't have any sympathy with the characters and their experiences.

That being said, I absolutely loved this movie for every other reason than the main theme. Primarily, this movie is an excellent example of how subtle, mature comedy can often hit harder than slapstick if done well. The scenes of hilarity by themselves could easily be misconstrued as being in bad taste. They ride right up to the line of what is appropriate but do it in a way you can't help but appreciate (if you have a minimal sense of humour).

Sideways is also an example of how you develop characters with almost unforgivable traits in a way that is both believable and sympathetic. It's hard to explain how this is so with this movie without spoiling the experience.

The main character, Miles, is reminiscent of Jack Nicholson's character (Melvin) from As Good as it Gets - one of my favorite characters of all time (for the same reasons I liked Miles). They are both characters with serious social issues (arguably for good reasons) that still are able to reconcile their harsh outlooks on life by meeting women with the insight and courage to appreciate that underneath all the layers of social armor are men with genuine characters.

Jack and Miles are probably the oddest of couples you will ever find in such a movie, but the care that is taken in developing their experience makes it almost impossible not to believe that they are indeed best of friends. So, for me Sidways was more a celebration of the art of character development and mature humour than of wine sniffing and tasting.

[Chimezie Ogbuji]

via Copia

Lifting XSLT into application domain with extension functions?

The conversation continues about the boundary between traditional presentation languages such as XSLT and XML toolkits in traditional application languages such as Python. See earlier installments "Sane template-like output for Amara" and "Why allow template-like output for Amara?". M. David Peterson, the mind behind XSLT blog responded to the latter post, and his response deserves a post of its own:

This is an excellent post that brings out some important points. I do wonder however if the solution can be solved utilizing a base of underlying functions that can then be implemented via 2 mechanisms:

  • The XSLT (potentially 2.0 given 1.0 support already exists) engine which will properly invoke the necessary sequence of functions to process and transform the input XML.
  • Amara, which will invoke a similar combination of functions, however in a way more in line with the Python architecture and programmers mentality.

Being a novice Python programmer, at best!, makes it difficult to suggest this solution with a whole lot of confidence... as such, I won't and simply leave it as something that, if possible, might be worth consideration as it will give leave the door open for the reverse situation, e.g. someone like myself who sees the value Amara and Python offer but given my background would prefer to work with XML via XSLT (2.0 preferably of course :D) except in cases where its obvious the platform offers a much simpler and elegant solution. In cases like this (which is sounds as if this particular situation qualifies) I am definitely more interested in the fastest way in and out of a process than I am in firing up the transformation object to perform something that is rediculously easy using the platform API.

This is an interesting good point, especially because it is something that we already tried to do in 4Suite. When we first started writing the 4Suite repository, we built XSLT scripting into its very DNA. You can do just about anything to the repository through a set of specialized XSLT extensions. You can write entire Web sites (including CRUD function) in XSLT, and indeed, there are quite a few examples of such sites, including:

These are all 100% XSLT sites, implemented using 4Suite's repository as the HTTP server, request processing engine (via XSLT script), database back end, etc. You don't even need to know any Python to write such sites (Wendell Piez proved this when he created The Sonneteer). You just need to know XSLT and the 4Suite repository API as XSLT functions. These APIs mirror the Python APIs (and to some extent the command line and HTTP based API). Mike Olson insisted that this be a core architectural goal, and we got most of the way there. It served the originally narrow needs quite well.

We all saw the limitations of this approach early, but to some extent succumbed to the it-all-looks-like-a-nail fallacy. It was so easy for me, in particular, to churn out 4Suite repo based sites that I used the approach even where it wasn't really the best one. I'm definitely through with all that, though. I've been looking to do a better job of picking the best tool for each little task. This is why I've been so interested in CherryPy lately. I'd rather use a specialized tool for HTTP protocol handling than the just-good-enough version in 4Suite that is specialized for handing off requests to XSLT scripts. Lately, I've found myself advising people against building end-to-end sites in 4Suite. This is not to strand those who currently take advantage of this approach, but to minimize the legacy load as I try to steer the project towards a framework with better separation of concerns.

When I look at how such a framework would feel, I think of my own emerging choices in putting together such sites:

  • 4Suite repository for storing and metadata processing of XML documents
  • Amara for general purpose XML processing in Python code
  • XSLT for presentation logic
  • CherryPy for protocol serving

My own thoughts for a 4Suite 2.0 are pretty much grounded in this thinking. I want to separate the core libraries (basically XML and RDF) from the repository, so that people can use these separately. I also want to de-emphasize the protocol server of the repository, except as a low-level REST API. That having been said, I'm far from the only 4Suite developer and all I can do is throw in my own vote on the matter.

But back to the point raised, the idea of parallel functions in XSLT and another language, say Python, is reasonable, as long as you don't fall into the trap of trying to wrench XSLT too far off its moorings. I think that XSLT is a presentation language, and that it should always be a presentation language. With all the big additions in XSLT 2.0, the new version is still really just a presentation language. Based on my own experience I'd warn people against trying to strain too hard against this basic fact.

And remember that if you make XSLT a full model logic language, that you have not solved the problem of portability. After all, if you depend on extensions, you're pretty much by definition undermining portability. And if XSLT becomes just another competitor to Java, ECMAscript, Python, etc., then you haven't gained any portability benefit, since some people will prefer to use different languages from XSLT in their model logic, and XSLT code is obviously not portable to these other languages. Sure you have platform portability, but you already have this with these other languages as well.

[Uche Ogbuji]

via Copia

"Untangle URIs, URLs, and URNs"

"Untangle URIs, URLs, and URNs"—Dan Connolly

In information management, persistence and availability are in constant tension. This tension has led to separate technologies for Uniform Resource Names (URNs) and Uniform Resource Locators (URLs). Meanwhile, Uniform Resource Identifiers (URIs) are designed to serve as both persistent names and available locations. This article explains how to use the current URI standards with XML technologies, gives a history of URNs and URLs, and provides a perspective on the tension between persistence and availability.

I suggested this article idea to John Swanson, IBM developerWorks XML zone editor, but I thought that Connolly would be a much better person to write on the topic than I would. Nice to see it all published, and I'm glad to have a good resource to share with people when I'm asked the perennial question "what's the difference between a URL and a URI?"

Chimezie Ogbuji

via Copia

Lektora is nice, but not nice enough

Lektora, a browser-based feed reader, is nice, and for a moment I considered buying the commercial upgrade, not because I have a problem with the ads (I don't notice them), but to support good software. And then I started noticing missing feeds. I imported my entire OPML from straw, and it turns out that Lektora never presents me with items from a lot of those blogs. Some of the missing ones I've noticed:

Nothing I can tell in common with these feeds. One is Atom, two are RSS 1.0, and the third is RSS 2.0. But Lektora apparently can't handle them, and I have to use straw to keep up with them.

Also, Lektora developers seem to do a good job keeping the Windows and Linux versions up to date, but don't bother much with the Linux version. I'm not willing to pay for half-hearted Linux support.

[Uche Ogbuji]

via Copia

XSLT + CSS tutorial pubbed

"Use Cascading Stylesheets to display XML, Part 3"

CSS isn't just for HTML anymore! Learn to combine the strengths of CSS with those of XSLT and fine-tune your XML presentation in a browser.

In parts 1 and 2 of this tutorial series, Uche Ogbuji has shown how to use Cascading Stylesheets (CSS) to display XML in browsers, presenting basic and advanced techniques. Although some people see XSLT and CSS as opposing technologies, they are actually very complementary. CSS cannot, and is not designed to, handle many XML rendering tasks. You can use XSLT for many such tasks, and even manage the CSS that is still used to fine-tune the presentation. This tutorial covers techniques for using XSLT to process XML in association with CSS.

Anyone who works with XML should take this tutorial. Even if CSS and XSLT don't cover your needs for production Web publishing, they are great tools for general processing, debugging, and experimentation. They offer rich interaction with other XML technologies and you'll be likely to run into CSS and XSLT even when you least expect them.

This tutorial, third in a series, discusses XSLT techniques for working with CSS for HTML or XML output. The approach very step-by-step, and includes many examples (including expected display in Firefox).

If you're wanting to get more of a background learning how to use CSS with XML, see the previous tutorials in the series:

The response has been very positive to the first two. Here is what has been posted through the feedback form according to my editor:

"Use CSS to display XML, Part 1"
Average rating: 4.03 (out of 5.00)
Responses received: 33
"Excellent concise overview. Thanks."
"very nice presentation of the fundamentals with excellent examples"
"Good introduction. Needs a more dramatic example."
"Nicely done thanks .."
"Only had a quick read this time but I'm sure a full going over will improve my XML/CSS skills no end!"
"Hi:After several weeks of reading several books and posting to several list, you very simply provided me with an answer to my very simple question, which was "How can I present xml data using css?"Thanks."
"I already use CSS but this tutorial taught me some new tricks on generating content with CSS."

"Use CSS to display XML, Part 2"
Average rating: 4.00 (out of 5.00)
Responses received: 9
Comments: none

[Uche Ogbuji]

via Copia