So, dig baby… I was at the—oh, I mean dA Poetry Lounge last night. To be fair to these young, MTV people here is their listing at poetryflash.org:

dA Poetry Lounge hosts an open mike spoken word on Tuesday nights, Greenway Court Theatre, 544 N. Fairfax near Melrose, LA, free parking next door at Fairfax High School, usually free, sometimes $2–$3, 9:00, sign up early by calling (213) 390-7072.

First of all, the gate is packed. It’s like a storming the Bastille thang. There is no order among the people—that’s why Nord America needs a strong military:

the sign at the gate

That sister lady with the cropped hair was very attractive (—but what’s really sad is that many of you colored folk reading this may actually think I am being sarcastic—no she is attractive):

classical antiquity

Once we got in, the animalistic process of getting the open mic’ begins:

oink, oink

A poet who recites verse worshipping peace and love would look very ironic trying to fight for the mic’ like a pig feeding at the trough. Fortunately, very few poets last night were really down with styles of grace and peace. So for them this behavior is acceptable. In fact, here’s what reads on that t-shirt:

fast and furious

I have been to dA Poetry Lounge four times in a row now and I still can’t get the open mic’. I am trying not to disappoint this young woman:

the drewsky

She was in grade school when I was really hitting the streets and reading furiously. I did not need to consider fighting at the pig’s trough because, in those days, Los Angeles was full of inner-city places to read that had more style and grace—and I got to pay respect to the now closed Midnight Special Bookstore in Santa Monica as well. Starbucks and Borders fucked it up. But back to last night. Here’s the post-pubescent host at the mic’:

an entertainer

He’s a charming guy (probably on the heels of Saul Williams juice) that brought his little daughter to last night’s show—and, for those concerned parents counting, this first show ended at 11pm. I’m not trying to player-hate. I’m just saying that some parents put their children to sleep earlier.

And I’m not trying to say that I was the oldest guy in ‘the club’—there were older poets who read last night. But I am sure these guys were smart enough to call these people first (with maybe a little sprinkle of payola? … cool with me… I’ll pay to avoid the trough). Overall, many of the Lounge poets are very talented and some of them do ‘deserve’ to be on Tee Vee—even MTV.

Feeling sorry for me? Good. Buy my chapbook at lulu.com or read a poem or two from the fogy with just a few years on to 40.

My .NET ‘disclaimer’: as long as the word Interop is relevant to Office System Word 2003 then the following discussion featuring VBA code is relevant.

The official overview of Find operation automation distinguishes between using Selection.Find() and Range.Find(). The former resembles what goes on when this operation is run manually in the user interface. Including the latter, WordForums.com summarizes from the Google cache:

Note for those already familiar with VBA: whereas if you use Selection.Find, you have to specify all of the Find and Replace parameters, such as .Forward = True, because the settings are otherwise taken from the Find and Replace dialog’s current settings, which are “sticky”, this is not necessary if using Range.Find—where the parameters use their default values if you don’t specify their values in your code…

The Execute() method of Selection.Find behaves just like what happens when the Find Again button is pressed in the Find/Change dialog. The same does not appear to the case for the Execute() method of Range.Find. So far when I set .Wrap = wdFindContinue I am getting an endless loop in this design:

Sub test()
    Dim objColl As VBA.Collection
    Dim objFind As Word.Find
    Dim objRange As Word.Range
    Set objFind = ActiveDocument.Content.Find
    With objFind
        .Forward = True
        .Wrap = wdFindContinue
        .Text = "avatar"
    End With
    Set objColl = New VBA.Collection
    Do While objFind.Execute = True
        Set objRange = objFind.Parent
        Call objColl.Add(objRange)
    Loop
End Sub

Not only will this loop endlessly but it will also not ‘move’ to the next Range when the Execute() method is called. This means only the Range of the first match is loaded—over and over again—into the Collection of Range objects. Barring any glaring lack of information in my mind, it appears that the Execute() method of Range.Find should only be involved in replace operations and should never be used in a loop. (Also: in the example above note the strange use of the Parent property—Set objRange = objFind.Parent—this remains a mystery to me.) Anyway, this not-fun, not-challenging, black-box, problem is sucking my life away wasting vast amounts of time (which explains I appear so angry around Microsoft people) so this appears to be the way to go:

Sub test()
    Dim objColl As VBA.Collection
    Dim objFind As Word.Find
    Dim objRange As Word.Range
    Set objFind = Application.Selection.Find
    With objFind
        .Forward = True
        .Wrap = wdFindContinue
        .Text = "avatar"
    End With
    Set objColl = New VBA.Collection
    Do While objFind.Execute = True
        Set objRange = Selection.Range
        Call objColl.Add(objRange)
    Loop
End Sub

The drawback to this design is that the user will ‘see’ this code running when selections start flying all over the place. Also, note we set objRange with Selection.Range. Using the same line of code from the previous sample throws a ‘type mismatch’ error. I will assume that only a select few people a Microsoft and some serious Word nerds know why this shit happens.

I don’t like the colors of his Web site (cyan and yellow?) but I like his healthy respect for word processing and XHTML. A Peter Sefton Blog entry:

However, for your average office document, Microsoft Word is in my opinion closer to Tim Bray’s vision than the sun-sponsored OpenOffice.org. Why? In a rare stroke of (near) genius, Microsoft Word 2000 and upwards (is that version 8?) offers a ‘save as html’ option which is nearly but not quite XML but is also a complete Word document. It’s a few simple transforms, described in this PDF to turn the office html format into XML. It would be less than a hundred lines of script in Perl or Python. Once you have it in XML, you can take it to XHTML, and use the web ready image renditions that Word has also generated for you. Or, you can change your original document or generate a new one and round-trip the XML back to that weird Microsoft format. As far as I’m concerned this is more useful than WordML, and more practical that custom XML schemas. I can get good web pages out of it, and make changes to, or create, documents. If my Word template maps to XHTML then I have everything I need for most publishing systems.

And let’s emphasize that last sentence: “If my Word template maps to XHTML then I have everything I need for most publishing systems.” This is why I have spent years struggling with this issue and cannot begin to realize the potential power introduced to me in my article “XHTML Schemas in Word 2003 Documents.” Since I was laying out hip-hop magazines in PageMaker on a 286, Microsoft Word served as the heart of my publishing system. For me, it has always been the first stop in that workflow diagram mapping out a publishing house (no love or envy for the Quark Publishing System here). I was not going to let something called the Internet stop this living tradition. And now with Office System 2003 and The .NET Framework, it is possible to author one Word document to be imported into a tool like InDesign for print and to route its content as automatic data-entry to a database for the Web.

I wonder what Peter would think when he discovers that people like me are writing tools designed to export XHTML not just on the document level but also on the Paragraph level. Would he welcome the ability to automatically markup Word documents with XHTML using the robust automation features of Office System 2003 and/or Visual Studio .NET? Would he find routing nodes of XHTML through a Web service from Word useful? What about saving bits of a Word document as XHTML by selecting text and sending it marked up to the Clipboard?

Peter Sefton details his post-processing of Word HTML in “Word to XML and Back Again” at XML.com.

Meanwhile, not far from Redmond (and XAML) there is an exploration of the possibility of making an XHTMLCSS word processor.

DreamHost is the best of all hosting providers that drafted against my credit accounts. They seem to have a genuine sense of humor that is matched by the honor it takes to announce mistakes quickly:

Due to a database mixup causing some incorrect firewall rules to be put in place, some of you may have noticed some problems connecting to your web sites, ftp, or shell services. Total downtime varied depending on which machine you’re on, but shouldn’t have exceeded 30 minutes and wouldn’t have affected all parts of the internet.

We’re very sorry about this, but hopefully the firewall changes we put in place should make our DreamHost experience more pleasant in the future.

Happy DreamHost Fiery-Walled Team!

The last time DreamHost pissed me off was way, way back in 2003 (?) when they had an outage so big kintespace.com lost over 3000 hits minimum (based on the hits of previous months). It took months more to recover. I sense that when ‘ethnic’ Web sites go down there is a very merciless tendency of members of the same ethnic group never, ever to visit that site again… Such indignation! But the DreamHost boys and girls promised never, ever to do that again and, so far, they are keeping their word.

It’s only natural to have a complete thought. In “Basic Black: the Funky Sutra” I take the time, for my health, to clearly define what a complete thought is. It serves me well to see this new article at Wired, “Revenge of the Right Brain” by Daniel H. Pink taking my subject to places the authority figures don’t want to go:

The future no longer belongs to people who can reason with computer-like logic, speed and precision. It belongs to a different kind of person with a different kind of mind.

And remember who is writing this post to you: I am a highly trained computer programmer. (You can test me constructively or you can ignore me—cut me off with your little sword.) Yet somehow, I celebrate comments like these. I do this because my education did not include assimilation… When I listen to an old blues song from my grandfather’s hometown, I can understand and feel the singer’s broken English—and respect it like the most diction-filled, articulate speech of a college professor. That is why I celebrate this praise of the right brain. However, the author seems so innocent, he does not take into account that the left-brain dominators, who carry swords in their right hand, will not go away without a fight. These people do not fight ‘fair.’ Because being fair means having complete thoughts. Think about it.