Google induced Myopia

I’ve been working on an application which provides a graphical interface for embedding Creative Commons licenses in audio files, specifically MP3 right now. The previous iteration, a command-line application, used the eyeD3 library for handling the ID3 metadata embedded in the files. Unfortunately, we wanted to add the ability to handle ID3v2.2 in addition to 2.3 and 2.4 to the application, and eyeD3 doesn’t support ID3v2.2.

After some work in everyone’s favorite index of everything, Google, I stumbled on a promising candidate: PyId3v2 (now named PyTagger). Long story short, while PyTagger did most of what I needed, it seemed to be tagging in a way that was inconsistent with eyeD3 (and, it seems, the “standards”, as they are). That’s when I remembered the Python Package Index, or PyPI. I had run into references to PyPI while packaging Canterbury’s improvments to LoginManager and PySamba using the standard Python packaging mechanism, distutils.

Distutils, for all of it’s warts and flaws, does a passable job at packaging Python extensions, modules and, er, packages. Starting in Python 2.3 (I think), it also allows you to define additional meta-data about your extension, and auto-magically register it with the Python Package Index. In a way, it’s supposed to help create a distributed CPAN . And it presents a browsable archive, organized by target audience, topic area and the other pieces of meta-data distutils collects. Which is where I found a forked version of PyId3, which not only has support for the types of tags I need to embed, but also has an interface which is, well, Python-ic (for lack of a better word).

Google had suggested PyId3, but the “original” version doesn’t support ID3v2.3 or 2.4. The whole incident has reminded me of one thing: the best tool overall is not always the best for a specific need. And while Google will remain one of my oft-used tools for Internet searching, I’ll remember PyPI now when I’m looking for a specific type of Python module.

date:2004-05-22 09:34:46


As I mentioned earlier, the proliferation of spam comments and the flap over Movable Type’s new licensing scheme motivated me to search out other blogging software. As I looked around, my two favorites were TextPattern and WordPress. Given the title of this post, you can probably guess which one I chose.

It took me a couple hours this morning, but I managed to wrangle my MT entries into WordPress, and even got my templates mostly working. I initially evaluated WP 1.02, the latest release, but decided to live on the edge and actually use the current release candidate of 1.2. Overall, it’s very impressive. What have I gained over Movable Type?

  • an improved, stream-lined editting interface that doesn’t require multiple windows for assigning more than one category
  • a template system that doesn’t rely on magic tags, but rather exploits the power of the underlying language (in this case PHP); this might not seem like a lot, but it’s allowed me to recreate parts of MT that WordPress doesn’t provide an interface for (like template “blocks”)
  • templates that live on the filesystem, which makes editting and back up a lot easier
  • oh yeah, and it’s really, really Free. Mark Pilgrim has an excellent post on this very subject, and when smart people agree with me, I feel better.

So why not TextPattern? I have to admit, I was initially drawn to the clean lines and good looks of it’s user interface. Yet somehow, even after reading the license and seeing that it allowed redistribution, I didn’t feel good about it. And then I read this page in the TextPattern forum, and realized that if I chose TP, it’d be MT all over again: free enough for now, not free enough forever.

date:2004-05-20 12:20:23

Writing Mozilla Extensions

Over the past 6 months, I’ve begun writing two different Mozilla-based extensions. One for Thunderbird, one for Mozilla Suite/Fire{bird|fox}. In my experience, Mozilla is an amazingly powerful and flexible platform: it provides a cross-platform foundation to build applications on, but more importantly it’s an application that has the right attitude. The attitude of “we’re building the best app we can, but lots of smart people don’t work for us, so we’ll give them the tools they need to make the app (and their lives) better.” That’s cool; that’s the right attitude to have. Of course, extending Mozilla through an extension is easier said than done in many ways. I have yet to find a site listing the “one, best way” to put together an extension. There’s lots of ways to do it, and as a result, lots of confusion when the two examples you’re drawing from use two different approaches.

With that and the coming Firefox 1.0 extension format change, I decided to put together something I’m calling DemoExt. The goal of DemoExt is to provide the simplest amount of functionality necessary to demonstrate how to make a localized, cross-platform extension that works with Firefox and Mozilla Suite. It currently does the following:

  • overlays the browser window, adding an item to the status bar (this seemed like the simplest example of modifying the browser UI)
  • provides a simple preferences/options dialog, both in Firefox and Mozilla Suite
  • uses localization files to store strings (this was always way too hard for me to figure out, so this was as much a learning exercise for me as anything else)

That’s it! In addition to these “features”, the DemoExt package has a few tricks up it’s sleeve as well:

  • a script which generates an XPI in the new 1.0 format
  • an install.js script which installs the DemoExt into the users’ profile, mimicking the 1.0 Firefox approach
  • an extension.rdf which provides the Firefox 1.0 format metadata
  •, a Python script which generates a new source tree from the demo tree, with the appropriate files/directories renamed; hopefully this will allow people to get started writing extension faster, without worrying about how to install them or how to lay out their directory structure

There are still a couple of things I’m working on. First, I need to make the preferences code load the defaults from the demoext_prefs.js file. I want to make a little smarter about how it generates the new tree. Finally, I’d like to create a similar package for Thunderbird, since the current code is very browser-oriented.

You can download DemoExt here, or browse the CVS tree . As always suggestions, feedback and corrections are welcome. Enjoy!

date:2004-05-20 08:43:54

Not a Diva, in a good way

Last night Garrett and I saw Shania Twain in concert at the Memorial Coliseum here in Fort Wayne. First, an explanation about why. I had a country music “phase” five or six years ago; it lasted about 9 months, and was brought on by a religious conviction that “rock” music was Satanically inspired, and country music, well, wasn’t (really, I can’t make this up). The phase ended when I began to question religion in general, and arbitrary rules in particular. So while I wouldn’t call myself a fan of country music, it’s not totally abhorent to me. Garrett, on the other hand, is a fan.

One of Garrett’s colleagues at IPFW works with the Community Harvest Foodbank, a local charity serving those who can’t put food on the table. We became involved in the concert because Shania supports America’s Second Harvest a national organization of food banks and service organizations, with which Community Harvest is affliated. It’s how she supports this worthy organization that so impressed me. At every show she contacts a local foodbank and invites them to sell raffle tickets for $1 each before the show and during the opening act. The winner gets to come onstage with Shania during the show, get their picture taken with her and the said picture is autographed. And all proceeds go directly to the foodbank. Garrett and I were asked to sell raffle tickets, in exchange for free admission to Shania’s portion of the show.

So let’s review: a national star (regardless of your musical taste) partners with her fans’ communities in order to serve her fans and their neighbors. Cost to Shania: twenty minutes of stage time. Benefit to the communities: thousands of dollars, publicity and exposure. I’ll admit I was sort of skeptical of selling raffle tickets; had Garrett not been involved, I never would have done it. But I’m glad I did. The show was good, and I felt good about helping the food bank.

You might say that Shania should just write a big check to each community (and maybe she does; I don’t know), but it seems to me that community food banks rely on donations from the community year round. Raising exposure and increasing knowledge about the need seems more valuable than the cash itself. Shania’s only here once, but the community needs to support these charities year round.

Lending her name to Community Harvest would be enough for me to respect Shania Twain as a person as well as an artist; too many “stars” these days seem self-centered and self-obsessed, and the remainder of her show proved she is not that. The show was performed “in the round” with an elliptical stage in the center of the Coliseum. Shania and her band members made their way around the perimeter throughout the show, so there were no “partially obstructed” seats, and even in a recently enlarged venue, she seemed to play to each individual.

The more impressive part, though, is how she interacted with her fans. As she circled the stage, people would rush to the edge, holding out programs, pictures and ticket stubs, and she would sign as many as she could. I think half her songs were performed crouched down or bent over, signing autographs. When a young girl was lifted onto the stage by her father and ran over to Shania, she stopped the show,said hello to her, and gave her a hug.

Contrast this to Cher, who was the previous show I saw at the Coliseum. Cher didn’t sign autographs, didn’t shake hands with fans, and didn’t invite people on stage with her. And she didn’t support the community. And I didn’t think anything was wrong with that until the Shania show. As I think about it, it comes down to a single distinction: Cher seemed to perform so that fans had the privilege of seeing her; Shania seemed to perform so that she had the privilege of seeing her fans. Regardless of what VH1 says, that makes her not a diva, but in a good way.

date:2004-05-15 11:46:58
category:my life

Comments, Spam and Dollars

So I’ve been busy with work and yard work lately, so not much time to blog. That said, there’s big news comin’…. just you wait. Until then, I’ve been battling annoying comment spammers who want to promote their “wonder pill” in the obscure entries of my blog. I’ve grown tired of banning IP addresses, so I went and looked at to see if they had anything new I might use to remedy the situation. Boy, was I in for a suprise.

I’ve used MovableType for about 8 months now, with good results. I’ve played with PyBlosxom, and been impressed with it’s customizability and general Python-ness. But the web interface of MT has kept me in place, despite my documented allergy to Perl. I’ve been meaning to write a plugin for PyBlosxom which provides support for the Atom API, but haven’t had the time or motivation. I did manage to convert my photo album to PyBlosxom, and while it’s still not perfect, the entire posting process is going to be much better (from my perspective). So, long story short (too late, I know), I was suprised to see that MT has launched a new 3.0 “Developer’s Edition”. I was even more suprised to see the strong reactions to their newly announced pricing plan.

I don’t begrudge Six Apart’s desire to make money on Movable Type. They’ve obviously put quite a lot of effort into making it one of the easiest to use platforms around. While I love it when my software is free, I also don’t mind putting out for software that does what I want, how I want it (and even better if I can further hack it to my needs). I’m a programmer, and I need to eat, too.

That said, I also understand some of the reactions. Even though they’ve never attempted to disguise their licensing, Movable Type has long been easy to confuse with Open Source. And Open Source is even easier to confuse with “free” (as in Dollars). Evidence: MT is written in Perl, which is Open Source, and as such the code is by nature available. Ben and Menna were invited to present at OSCON 2002. So when you suddenly reassert (in a much more real way) your commercial nature and interests, people are naturally confused and possibly upset. I’m not sure there’s anything Six Apart could have done to prevent this; it’s sort of the nature of the beast, I think (can anyone else think of similar examples?).

Will I be shelling out for MT3? Um, no. First, my usage is so light that I still qualify for the “developer’s” edition, which is free and unsupported. But more than that, I think I want my “free” software to be truly free, if possible. So maybe I’ll write that Atom plugin for PyBlosxom so I can use any Atom-enabled client. Or maybe I’ll try WordPress. And maybe I’ll actually pay the developers of whatever Free tool I use, since that’s what I’d appreciate for my own work.

Whatever I do, it has to be soon: I can’t stand much more of the comment spam.

date:2004-05-14 14:05:06

Brain Dump

Since the semester ended (straight A’s, thanks for asking), I’ve been busy at work trying to get caught up on various projects. As such, little time for blogging, but here’s a dump of what I’m looking at and thinking of right now:

  • Kahle v. Ashcroft , the new front in the copyright battle
  • Oyez : who knew that interactively browsing biographies of former Supreme Court justices could be so enthralling, or that I’d end up listening to the oral arguments of Eldred v. Ashcroft on my way to work for a week?
  • LoginManager, a seemingly abandoned product for Zope 2.x that we’ve adopted at work in an effort to bring it forward to Zope 2.7 compatibility
  • Gentoo Linux, still my favorite way to build servers that do a particular task and do it well

Hmmm… there seem like there’ve been more “I should blog this” thoughts than this list in the past week; I guess I really do need to “just do it.”

date:2004-05-11 13:46:52

I’m not alone

In the “funny you should mention it” category, I just came across proof that I’m not the only one who has a problem with bookmarks or who wants to do something about it. Actually Micah wants something a little more generic, but I think the impetus is the same: sticky notes, notes in the margin and paper napkins with scrawls on them just shouldn’t be our primary means of keeping track of things. Well that’s gratifying.

date:2004-05-05 11:26:04

Conecting the Dots; or, how Lessig is like Chuck D

I just finished reading Lessig’s Free Culture and am in the middle of Vaidhyanathan’s Copyrights and Copywrongs. I was reading this morning on the stair master, when a thought struck me.

In “Copyrights and Copywrongs” Vaidhyanathan writes about the evolution of rap music in the 1980’s and 1990’s and how rap music interacted with judicial rulings (or the lack thereof) and the interpretation of copyright law. In particular, the act of sampling is what Vaidhyanathan focuses on, discussing the question “[W]hy do rap artists sample in the first place? What meansings are they imparting?” He goes on to answer this in the following paragraph. “Sometimes…it can be a political act – a way of crossing the system, challenging expectations, or confronting the status quo.” “Sampling is a way an artist declares ‘Hey, I dug this, too.’ It helps form a direct connection with listeners.” The genre of rap music and the act of sampling can be traced to African American and Carribean musical influences. “[O]ften when a reggae record is released, hundreds of dif-ferent versions of the same rythym and melody will be released in the subsequent weeks. Every new version will slightly modify the original tune.”

Compare this to Lessig’s discussion of the (ongoing) evolution of blogging in America. When discussing the role of the blog in America, Lessig states, “[T]here are many who use [blogs] to engage in public discourse. Discussing matters of public import, criticizing others who are mistaken in their views, criticizing politicians about the decisions they make, offering solutions to problems we all see.” How do blogs effectively criticize, comment and improve the general discourse? “The best of the blog entries are relatively short; they point directly to words used by others, cirticizing with or adding to them.” Sort of like rap, huh? Same rythym, same melody, different tune.

Lessig goes on to briefly discuss the interaction of copyright with this burgeoning form of commentary and journalism. He quotes Dave Winer saying, “we will be the last thing that gets shut down [due to infringement].” While that is encouraging, we should not forget what happened to the evolution of rap music as an art form. “What sampling did occur in the late 1990s was non-transgressive, nonthreatening, and too often clumsy and obvious. The signifying rapper had lost his voice.” (Vaidhyanathan). We as bloggers are “sampling” the culture and world around us, adding our “samples” to the greater discourse and body of knowledge. And the quality and growth of culture around us will be harmed if our commentary and discourse goes the way of the rapper.

date:2004-05-03 17:42:47

It’s A Good News, Bad News sorta thing

I’ve struggled off and on for the past couple weeks with localizing my two Mozilla extensions, mozCC and QuickFile. The problems I’ve encountered have mostly been due to my own lack of experience and planning in this area. I guess I shouldn’t have ignored the information on localization when I started writing mozCC.

The biggest problem, however, has been getting Thunderbird and Firefox to correctly register the new locale information and make it available. I can’t say definitively, but my testing shows that when the extension is installed without the locale first, it doesn’t work very well to attempt to upgrade to an locale-enabled version. Sigh. Of course, this will all be irrelevant soon (hopefully), as Ben Goodger has posted the new guidelines for packaging extensions, starting in Thunderbird 0,7 and Firefox 0.9.

So why is this good news? Because the install.js method currently in use sucks. It’s poorly documented, poorly structured, and prone to breaking in really spectacular ways. The use of a uniform extension.rdf file which describes the extension has to be an improvement.

But it’s also bad news. Developers will have to decide which versions they’re going to support, and users will actually need to pay attention to version numbers when installing extensions. I suppose this isn’t as bad as it could be, given that Firefox and Thunderbird are still both “pre-releases”, but I wish this change had happened sooner rather than later. Both applications are gaining mindshare and I think Extensions are a real selling point for organizations that want to implement some unique piece of functionality.

So what’s the net effect for my projects? I’ll keep working on them, but don’t look for any releases until Thunderbird 0.7 and Firefox 0.9 are released. Unless I fix install.js. Which isn’t likely.

date:2004-05-03 11:16:39

Finals Week

So I’ve made it through to finals week, once again taking 9 hours of classes on top of working full time. I think I said I’d never do that again, but it really wasn’t so bad this semester. I e-mailed in my take home final in Computer Organization and Architecture last night, and I take my Politics of the European Union final on Wednesday evening, so I have plenty of opportunity to prepare.

My third class, Visual Communication, has been one of the most enjoyable I’ve taken. I signed up not knowing what it would entail, simply needing to fill an elective requirement. It turns out that Visual Communication is really Photojournalism, and since I’d never actually used a 35mm camera, it was all new to me. We spent the first half of the semester shooting black and white Kodak Tri-X and learning to process and print our own images. The second half was spent shooting color film and manipulating the images in Photoshop. After the first class I went to Sunny Schick’s, a local camera shop, to find a used camera. The old man wasn’t lying when he said, “you just wait; there’s nothing quite like seeing an image appear on paper and knowing that you captured it.” I bought a used Pentax Spotmatic that’s probably older than I am. Fully manual, without even a hot-shoe, it evokes a visceral pleasure every time I press the shutter release. I’ve since purchased a Minolta Maxxum 70, but I still shoot with the Spotmatic because it seems more immediate and precise.

So what started out as a requirement filler has turned into something I’ve really enjoyed and want to continue working with. I’ve gone from an unfulfilled desire to capture images to learning to look through the camera and see what I’ll get. And I’ve gone from complete ignorance to an addiction to and talk of F-stops and aperture. This is what an education should do: it should inspire us to think about things differently and notice what’s going on in our lives. Needless to say, I’m glad I took this class. Now where am I gonna put my darkroom?

date:2004-05-03 10:52:44
category:my life