Great mysteries of life: WPF edition

The Windows Presentation Foundation of Microsoft’s .NET Framework 3.0 gives you a lot of bang for the buck—for instance, it includes a free spell checker. Unfortunately, you sometimes get what you pay for. There is no ability to add a custom dictionary in the current version of the spellchecker. There also appears to be no documentation on which dictionary the information is being drawn from, where it is stored on disk—even where the ignore list for an individual user is stored.

So I tried some experiments: I created a Windows Search index over my AppData folder, opened a WPF application, and told it to ignore a misspelled word. I then searched for the misspelled word in my AppData folder and didn’t find it—meaning that the file containing the ignore list was not stored there. I even searched the registry and didn’t find the word. So where is it stored? It’s not in the base framework folders either…

Scripting data from SQL Server tables as DML

(Warning: technical post ahead.) Ever since leaving the PowerBuilder/Sybase/ERWin world behind, something I’ve missed is the ability to easily generate portable SQL scripts for populating a table with test data. There are plenty of solutions in SQL Server for migrating data—DTS/Integration Services, BCP, and others. But DTS and Integration Services have to be maintained in the increasingly clumsy SQL utilities and cannot be easily inspected to see if things have changed, and BCP is opaque—you can’t really examine a BCP result file in any easy way to see what the data looks like within. No, give me DML—even if it’s bulky, a long list of INSERT/UPDATE statements has the advantage of being easily readable and even modifiable.

Unfortunately, there isn’t an easy way using the Microsoft tools to produce DML from existing data in a table; all the scripting support in the old SQL Enterprise Manager and the new SQL Server Management Studio are aimed at producing DDL scripts that create or modify the tables. Management Studio in SQL Server 2005 will create template scripts for insert or update scripts, but won’t actually put data into them—a curious omission.

SQL Scripter to the rescue. This nifty app offers the ability to script the data from any or all tables from a database as insert, update, or insert when new/update when existing statements. There’s even features for export of the data to CSV, Excel, and PDF. Pretty cool for a free utility. I’m now changing my process for creating a new demo database to use SQL Scripter to move my demo data from one environment to another.

Lemur CATTA–commonsensical comment system

Mike Lee, toughest programmer alive, came up with an insanely competent idea for a comments system: Lemur CATTA, which uses reading comprehension to quiz you on the contents of a blog post before you are allowed to comment on it.

Yeah, I know. Seems like some gradeschool teacher—or Kaplan temp—would have come up with this idea before now, doesn’t it?

BTW, careful with Mike’s blog—his content is SFW, but the site title isn’t.

Followup: Paul Potts has One Chance

Well, Simon Cowell wasn’t kidding when he told Paul Potts that he was going to make an album. It was June 17th when the former mobile phone salesman won Britain’s Got Talent by singing opera, melting just about everyone who saw him on TV or YouTube in the process (including myself). His album came out July 31st; that’s about six weeks after he won the competition, or maybe one week in the studio plus five weeks’ marketing lead time. The US release of the album occurred last week, and I downloaded it on the strength of his YouTube appearances.

The album is ominously entitled One Chance, presumably referring to his once in a lifetime shot that he took to win the competition. But in a real sense this is the make or break for Paul Potts the career singer. So what did he and Sony bring to the table?

My first impression is: this recording positions Paul in the pop-classical world, not the operatic world. If he wants to get to the Met, this recording doesn’t show that path. On the other hand, if he wants to sell a boatload of records, fill arenas, and appear with orchestras like the Boston Pops, then he’s definitely on the right track.

I have to assume, given the short timeframes, that Sony had more say over the material than Paul did, which perhaps explains the Italian language covers of “Time to Say Goodbye” and “You Raise Me Up,” the Spanish version of “My Way,” and Andrew Lloyd Webber’s execrable “Music of the Night.” Of course, the desire to have him “cross over” to the pop audience explains it too. Some of these are a little limp; my one thought after hearing “My Way” is that it is a mercy they didn’t ask him to sing “Wind Beneath My Wings” too.

But other cuts on the album—his make-or-break “Nessun Dorma,” the surprisingly effective Italian version of “Everybody Hurts,” “Caruso,” and the US-only bonus track “O Holy Night”—show promise in the arrangement and in the passion of his delivery. He is clearly a lyric tenor with strength rather than a true dramatic tenor, but his voice carries across multiple dynamic levels and octaves with relatively little strain. He is a little shy on one or two high notes, but given the compressed recording schedule this is perhaps to be expected.

I hope to goodness for Paul’s sake that this album does great things. It is currently #10 in Amazon’s overall music sales and #1 in Opera and Vocal and in Classical, so one can project that this might actually get Paul the exposure he deserves—and another recording session where he can get into some meatier material.

Amazon MP3 launches: Apple has competition, finally

Coming on the heels of the shuttering of Michael Robertson’s CD Anywhere and the collapse of Richard Branson’s Virgin Digital, now would not seem an auspicious time to launch an online music download store. But that’s what Amazon is doing today. The big difference is that they aren’t trying a subscription play, and they aren’t using DRM; they’re selling MP3s.

This factor proves that Amazon has been paying attention. Customers don’t want to be shackled to DRM? We’ll sell music without DRM.

That doesn’t mean that Amazon’s service, named Amazon MP3, will be a hit right out of the park. A music store is more than just listing inventory and collecting money; it’s providing the ability to find the music. On that score, you need content, user interactivity (playlists, etc.), and inventory. Amazon has content on their physical-CD store, but bizarrely, none of it carries over to the digital download side—no reviews, nothing. Site navigation is lacking, too: you can bring up a list of all 194 songs in inventory by Radiohead (or on tribute albums), but there’s no ability to sort the resulting list by album or artist.

That leaves inventory, and here Amazon would seem to have some advantages over iTunes, such as participation by Universal and inclusion of some hard-to-get artists like Radiohead. However, this is no knock-out blow against iTunes. For one thing, Radiohead were in the iTunes store at launch until the band and their agents found out, and iTunes was forced to pull their music when their label realized that they didn’t have digital distribution rights. Will the same thing happen again?

And it’s rude to bring it up, but I wonder about capacity. In the past, Amazon had problems keeping up with traffic volumes around holidays, and that was just with HTML pages. I wonder what they’ve done to scale up to serving 100 MB worth of download for each album purchased?

At this point, I think the party with the most to lose here is eMusic. Amazon made a point in their press release of calling out indie labels (Righteous Babe, Rounder, and Trojan among them) who are selling DRM-free MP3s for the first time; normally these would be eMusic’s bread and butter. I don’t think satisfied customers of eMusic like myself will cancel their subscriptions, but this might impair their ability to grow.

But Amazon, finally, represents real competition to the iTunes store, which is actually kind of exciting. Maybe they’ll turn up the pressure to sign hold-out artists and labels.

Etext no more

The Electronic Text Center at the University of Virginia Library, better known to myself and other alumni of the center as Etext, has gone the way of all flesh, kind of. The center’s page announces that its online contents are being migrated to the Digital Collections center of the Library, and that its functions will continue to be performed by the Scholars’ Lab.

It is, I suppose, inevitable. Once cutting edge, now the phrase “electronic text” sounds quaint. And fifteen years on, its original mission—to digitize content, to assist faculty and students with the use of computers in literary scholarship—has become mainstream. But there is something sad about its disappearance. It was there that I learned how to use the Web—we used an SGML compliant doctype for our texts that as I joined the Center were just in the process of being translated to HTML, since Mosaic had just come out. I learned about NeXT there, and Windows, and digitized a few texts along the way. In fact, I was also exposed to Starbucks there for the first time, as one of the staffers brought home some coffee (hi, Peter and Kelly!) from them in the days before their ubiquity.

More than anything, I think I was exposed to a conviction there that ubiquity of searchable access to cultural artifacts could change the world. I think that if I had encountered this attitude sooner, I might not have gone into consulting and the whole arc of my career would be different.

So, a virtual moment of silence for Etext. It served well. And here’s hoping that the appallingly slow performance on the Digital Collections site this morning is just a hiccup.

Songs of the University of Virginia: Liner Notes and Discography

Finally I have a few moments to sit down and transcribe the liner notes from the 1947 edition of the Virginia Glee Club’s album Songs of the University of Virginia.

From Rugby Road to Vinegar Hill, from Cabell Hall to Scott Stadium or Lambeth Field, and back again to the Gymnasium (Fayerweather or Memorial, depending on your vintage!), music and song have always played a lively part in the social life of men of the University of Virginia. Practiced or impromptu, spirited or merely spiritous (or both), music is a part of every Virginia man’s memories of the University. It has always been so.

“Music is the favorite passion of my soul,” wrote Thomas Jefferson, who founded the University in 1819, designed its unique buildings, and drew up its original curriculum—a curriculum which included a plan for a professor of music and reserved a room in the Rotunda for teaching it. Mr. Jefferson was himself a proficient violinist and the collector of an outstanding musical library, and from his University’s opening in 1825 instrumental music and singing were favorite student pastimes. That they were sometimes rowdy and off-key is attested by a faculty ruling of 1831 which prohibited the playing of musical instruments after two in the morning and on Sundays! As early as 1832 there was an informal band composed entirely of students, and by 1835 faculty resolutions were deploring occasional “disorderly singing” amont the young gentlemen.

But there has been all through the years much serious music, too. The Claribel Club, a serenading socety, was started in 1874 and seems to be the first formal musical organization. The Glee, Banjo, and Mandoline Club, organized in 1893, was another of the forerunners of today’s large and well-trained Glee Club and Band. The range of the Glee Club’s repertoire is wide and ambitious and the University Band does far more than furnish colorful backgrounds for athletic events, for its concert programs offer music of a high order.

These two competent and highly-trained University organizations have joined their talents in this album to offer students, alumni, and friends of the University a selection of representative Virginia songs of the present and the recent past. These versions, however, make no claim to be definitive, either in words or melodies. Students and alumni alike may prefer, from sentiment or long familiarity, other versions of some of them.

In this album the Band and the Glee Club have tried to reflect in song the essential spirit of the University in its lighter moods, to evoke again the happy memory of University days (and nights) which, despite the tide of years, still “cheers our hearts and warms our blood.”

The University of Virginia Band is directed by M. Donald MacInnis, the University Glee Club by Stephen D. Tuttle. The music has been arranged by M. D. MacInnis, J. E. Berdahl and S. D. Tuttle with the assistance of members of both organizations.

Rob Crawford for President of Red Sox Nation

Regular Guy Rob Crawford is running for President of Red Sox Nation. Once you get past some of the aggressive populism of his candidacy, he reveals himself as a candidate with some seriously good ideas for making the Red Sox accessible to all:

Have you ever had a conversation with someone that revealed to you that the other person’s life would be deeply touched by tickets to a Red Sox game? And you knew that if you owned season tickets, you would give that four tickets right there on the spot? Perhaps their spouse, who is a huge Red Sox, is in the final stages of terminal cancer, and tickets would enable him to say “goodbye” to Fenway. Or perhaps she’s a single mother with three kids who’s struggling to make ends meet and could never conceive of taking her family to a game. The Red Sox Angels program would put season tickets into the hands of Red Sox Angels across New England who would go through their daily lives looking and listening for people to give their tickets away to…

My second idea to improve ticket access is called, Sox Tix for Kids.

Almost no season ticket holder actually attends every Red Sox home game, and almost every season ticket holder would love to donate at least one game’s tickets to a group of children who have never attended a game at Fenway, have no access to tickets to Fenway, but really want to go to a game at Fenway.
I envision a program that asks season ticket holders, on their season ticket renewal form, to donate one or more games’ tickets to the Sox Tix for Kids program…

That in and of itself gets my vote. And by the way—the Red Sox Angels idea is a pretty nifty example of grace in action. Not a bad follow-up for the son of the head pastor emeritus of Old South Church… a man who, himself, used to write poems to each of the principals of his kids’ schools at the beginning of each school year, apologizing in advance for the hooky that they would be playing to catch home games. And Rob’s regular blog is pretty darned good reading too. (Subscribed.)

Check out Rob’s blog and comment on it—by doing so, you vote for good sense, good grace, and a good fan for president of the Nation.

NBC are assclowns.

In their haste to try to break Apple’s well-earned stronghold on the content download market, NBC is starting its own download service. Rather than charge for the downloads, the downloads will contain unskippable commercials, and according to the Times the downloads will “degrade after the seven-day period and be unwatchable.” Jeff Gaspin, president of NBC Universal Television Group, calls this “kind of like Mission Impossible.”

I agree, but not with the equating of destruction of downloaded content with MI. The real “mission impossible” will be to get customers to accept a download that doesn’t allow skipping commercials and won’t play on a Mac or an iPod. Oh yes: the article says that “the programs will initially be downloadable only to PCs with the Windows operating system, but NBC said it planned to make the service available to Mac computers and iPods later.” Like: as soon as they convince their erstwhile business partners in Redmond to add Mac and iPod compatibility to the appropriate version of Windows Media, I would guess.

I think NBC will also have an impossible mission convincing advertisers that they ought to pay for their ad exposure in this way. The informed advertiser should ask who the target audience for the show is, ask how many of the users who download the file will be able to take it on a mobile device, nod at the answer, then discount NBC’s estimate of the audience size by about 90%.

Put a fork in NBC, folks. They are failing to understand even the basic advertising model on which they thrive, which is: go where the eyeballs are. The fifteen people around the country who enjoy downloading crippled content onto their PCs and not being able to skip commercials and watch on their iPods are not a sufficient audience to build a successful download service on (and if you don’t believe me, ask Amazon). And by putting all their eggs in this basket, they are opening back up the enormous gray market of Bittorrent, which would lose much of its attractiveness for normal users if the content were available for purchase on their own terms.

Don’t trust these guys. They speak out of both sides of their mouths, claiming that music piracy is “facilitated by iTunes”—an iTunes that includes significant DRM features for purchased music. And they claim to understand that “the customer is going to be in control” without understanding that the customer will take control here as well.

Update: See Fake Steve Jobs’s take on the service.

Flavia: about misuse of coffee and the English language

I keep meaning to write this post about the vile branding job that the Mars Company did with Flavia, their single serving coffee offering, and deciding that the names of the product suite really kind of tell the whole terrible story. First of all, there’s “Flavia, the Café of Choice,” which is the oddest tagline ever. I know it’s supposed to make me think that I have options, but I think it just makes it sound like a third tier Roman household god. Is a Café the household god that watches over coffee related items? Flavia, Café of Choice! Lavia, Café of Coffee-Related Metabolic Disorders! Starbuck, Café of Ubiquity! Tremora, Café of Caffeine Withdrawal!

Then there are the product packets, of which the worst offenders are:

  • Creamy Topping: OK, not supposed to be a flavor by itself. But just picking up something that says “Creamy Topping” feels wrong. I don’t care how many “recipes” you can make with it.
  • Milky Way Swirl: it’s caramel and … something, OK? I don’t need to envision a candy bar in my coffee. I’ve made that perfectly clear before.
  • Exotic Chai: After you make the flavor packet, you can go and watch Exotic Chai do a little dance for you! (Oh, wait, not that kind of exotic.)
  • Green Tea with Jasmine: nothing wrong with this one. Oh, except that brewed into your average paper cup, it tastes like drinking the water that I soak cedar chips in for the grill. Woody, astringent, nasty. Much like Flavia’s Ethiopia Sidamo… or most of the product, actually.
  • Choco (grand prize winner): Based on the name of this drink, I always assumed that Flavia was from a Middle European country where people didn’t speak English as their first language. Choco sounds weird because the word it comes from doesn’t actually get pronounced that way. It’s pronounced chock-lit, not choc-o-late. Choco sounds like a character in The Sopranos, not like a drink. Finding out that Flavia is a British company makes me even more ashamed to be in marketing. Someone who is conversant in the language of Shakespeare shouldn’t come up with a name like this.

Saying Choco makes my flesh crawl. And that’s even before you taste it. It’s reminiscent of the Peanuts cartoon in which Lucy tells Linus that the hot chocolate he has made her is terrible; “it’s too weak! It tastes like someone dipped a brown crayon into hot water!”

Linus replies, “You’re right… I’ll go and add another crayon!”

So here we are with our little single serving machine, adding another crayon to hot water and washing it down with … shudder… creamy topping. Er, ™.

The inexplicable thing is that people get attached to these machines. Take this guy. Please. At least he provides a useful service for those that are incapable of reading directions that tell you how to use the coffeemaker… the directions that appear right on the screen as you make the coffee. And people really do make their own beverages, like the unspeakable Creamy Topping®/Choco/Espresso combination that this guy dubs “Flavia Mother of All Beverages.” I think the mother of all beverages is actually some kind of vodka.

No mention of Flavia would be complete without a reference to the Urban Dictionary article, which is pretty much complete actually.

Eating in Charlotte: a non-representative sample

I had the opportunity to try exactly one non-convention-center meal while I was in Charlotte this week. A few of us went to Ratcliffe on the Green, which is a very cool restaurant in a former Beaux Arts florist building (the Ratcliffe Florist neon sign is still out front).

The wine list was OK—I’ve been trained to look for certain Italian wines and am always a little miffed when Tuscany is the only part of the boot that makes an appearance—but the food was great. There were raves about the duck, the filet, and the rabbit (I had the latter and it had quite a lot to recommend it).

But for my money the best and most imaginative options were the starters. Foie gras brulée? Fabulous. The spare ribs were tasty too. But the absolute treat was the Eight-Piece Quail Bucket, which took the classic southern fried chicken and biscuits trope and miniaturized it. Little tiny pieces of quail piping hot and breaded with a crackling spicy not too greasy coating, with two biscuits the size of a silver dollar alongside. Um, fabulous. What a fun little restaurant; if more of Charlotte is like that, I’ll have to check it out again.

XSLT resources, take 2

Following up on my earlier post about XSLT: I am drawing near the end of the first stage of my project and wanted to update my notes.

One thing I learned is that XSLT is far from dead. There was a 2.0 version of the standard released a while back that fleshed out some of the capabilities of the language, and much of the contents of XSLT have sunk seamlessly into other frameworks. The nice thing about XSLT is that it is a very compact yet flexible technology that is easy to learn the fundamentals; the reason that so many of the resources about it are older is that there simply aren’t that many lingering questions in working with XSLT that are generating ongoing discussions. It just works.

The two best resources for this project were a pair of O’Reilly books, Learning XSLT and the XSLT 1.0 Pocket Reference. I read the former over a couple of plane trips on Friday, and by Saturday night I was happily hacking away at the task that I was trying to do.

I had a couple of learning experiences with XSLT along the way, and learned two techniques that I think are worth sharing and were not documented in the O’Reilly books (though they may be elsewhere).

The first was in reordering nodes in the XML document. I had a few nested (level two) elements in my document for which I needed to take their contents (level three elements) and move them up a level in the document. But I couldn’t figure out how to do it without breaking the DTD. I finally realized that I could process any node and place it anywhere in the target set by being specific in my call to <xsl:apply-templates> and always using a select, rather than simply letting the stylesheet process the nodes in the order that they occur in the parent document. I will try to hack up a sample transform to illustrate what I’m talking about.

The second dealt with batch processing at the command line. Microsoft’s msxsl.exe is a nice, lightweight, fast transformation engine that can be called from a DOS prompt. Unfortunately, it does not accept wild cards for input, so you have to call it explicitly with each file to be transformed. A useful sample solution I found for XSLT batch processing using msxsl uses a VBScript in the Windows Scripting Host to enumerate the files in a source directory and calls msxsl in a loop to process them. The only problem is that the method used opens and closes a command window for each file being transformed, which is distracting and may hurt performance. I will continue to look for better methods, but for my project today this VBscript did the trick.

itSMF show notes: don’t fear ITIL v.3

I have been at the itSMF Fusion conference in Charlotte, NC for the past two days; today is the last day for the vendor exhibits, so I’ll be packing up tomorrow morning to head back to Boston.

It’s been fairly eventful. We announced a new version of our flagship ITSM product yesterday; completed a rigorous verification process of our new functionality against the ITIL standards; and are chugging ahead on a number of other fronts.

One question that I had coming to the show was about the adoption of ITIL v.3. The new version of the IT Infrastructure Library best practices has changed a lot of the way the information is structured and caused a little market confusion, with some companies asking whether they need to restart all their ITIL efforts to recenter around ITIL v.3. Adding to the confusion is the growth in the document set, which has gone from two core books to five, and added a large number of satellite books—a real wall of documentation that can daunt even the most determined prospective adopter.

The answers I have been hearing at the show have been heartening, both from consultants and companies. The basic take on v.3 that seems to be emerging is that there are places where it definitely adds value, but that the core value proposition of v.2 around systemizing IT Service Management is really intact. A number of customers have said to me that they value the additional clarity in v.3 around areas like service request, but they aren’t planning to rethink their entire implementation of incident through change.

The big danger with new versions of standards is that they create barriers to adoption for companies that have already started the process; in this case, those barriers seem to be easily surmountable.

Travel daze

I jolted out of bed at 4:20 am today, not because of something I heard but because of something I realized I hadn’t: my alarm. I had a 6 am flight to get to. So I quietly stumbled downstairs, shaved and showered about as sloppily as I know how, stepped into my suit, and hightailed it to Logan. Thank goodness for the empty roads at 4:45 am. I had enough time to purchase and eat a bagel sandwich at the airport before my seating group was called.

On to Pittsburgh, for a two hour meeting with a customer followed by lunch. I was booked on a connecting flight to Charlotte at 8 pm tonight, but after lunch I called our travel agent to see if I could do something sooner. She said, “Well, there’s a flight that leaves at 3:35. Can you make that?”

I looked at the time on my phone. It was 2:05 pm and we were 40 minutes from the airport. “Sure,” I said.

Fifty minutes later, I was standing in line behind two young women who were pulling flat-panel LCD screens out of their laptop bags to run them through security. I inquired, and found out they were auditors, taking their office with them. I could tell they didn’t travel much: one of them left her boarding pass in her briefcase, then after it was fetched back for her grabbed the wrong boarding pass and we had to wait for it to go through the belt again.

After all that, I got to the gate just as my section was finishing its boarding. I squeezed into my middle seat and collapsed for a bit…

Until I got to Charlotte, where I rented a car and drove through heavy hurricane-remnant rain up to Asheville. Now I’m here, spending a day and two nights with my family before going back to Charlotte Sunday morning for the itSMF conference. But at least I don’t have to go anywhere tomorrow. Maybe I’ll nap.

The best and worst of random surfing

Today’s quick random surf turned up some really horrifying things and some really funny ones, so here’s the best of each:

Horrifying: The Top 20 Most Bizarre Experiments of All Time at the Museum of Hoaxes (via). While it starts out whimsically enough with elephants on acid, the whimsy is cut short when you find out that the elephant DIED. About a third to two-thirds of the subsequent experiments are pretty sick, though the one about gender attitudes toward casual sex is pretty good.

Funny: Fight For Kisses, the new ad campaign from shaving equipment maker Wilkinson. The ad is subtitled in English and French, but the actual promotional site is all French. Nevertheless, the concept of babies going all Neo when they find out that their daddies are going to take Mommy’s precious attention away is kind of … disturbing. But funny. (via)