Another pocket of slack stamped out

The end of free has come to Movable Type. If you want to upgrade and be honest, it’ll cost you. A lot. I am disappointed.

I am an enthusiastic user of MT2. It’s a good program. I’ve encouraged other people to use it, and via the MT support forum, tried to help the community a little. But based on my own current usage, I’d owe Six Apart $150 if I upgraded to MT3: their license is based on the number of authors and blogs you host, rather than a more direct metric, like the number of support requests you make. And my usage is entirely for vanity and community projects: it’s not like I make a dime off any of this. That’s a lot of money to spend on free expression.

Even that might not be too bad if I perceived much value in this upgrade. I don’t. As useful as MT2 is, it’s getting long in the tooth, and there are features that users have been clamoring for for years, few if any of which appear in the new version apart from comment management.

For the time being, I’ll sit pat. MT2 works, and it isn’t going to stop working. But there are features I was expecting in MT3 that aren’t there, and (as I understand it) will not be there unless developed by third parties. Switching to a different system–even an open-source one–would be expensive for me in terms of time: I’ve got a lot invested in tweaking MT and learning its ins and outs, and getting to a similar level of proficiency with a different system would take a long time. So in that sense, it would be reasonable for me to pay $150 to upgrade (if I had a reason to), but only because they have me over a barrel.

Later: After the barrage from the blogosphere, Six Apart has backed off a bit–giving you more for your money and allowing a more expansive definition of a “blog.” I congratulate them for being responsive. With a little creative counting, I could probably sneak in on the $100 license now. Still not exactly cheap.

Distributed comment authentication

With the introduction of Typekey, the discussion of blog-comment validation and moderation has kicked into high gear.

I applaud the nice Six Apart people for doing something to turn back the tide of comment spam and crapflooding. And while I wouldn’t necessarily discourage anyone from using Typekey, I think we might be able to do better.

I’d like to see a social-networked, peer-to-peer, graduated comment-moderation technology (is that enough buzzwords?). Here’s what I mean.

  1. I would be able to whitelist or blacklist commenters. I’d actually like something a little more fine-grained than just blacklisting: I’d like one class for trolls, another for spammers. Trolls might actually have something interesting to say once in a while, spammers (almost by definition) don’t, so I might want to put troll postings into a moderation queue and simply shitcan anything from a spammer.
  2. I would be able to publish my whitelist, troll-list, and spam-list as separate items.
  3. À la LOAF, I would be able to subscribe to someone else’s various lists. If I know “I can count on Alice’s whitelist”, then I’d automatically whitelist anyone she does. One might be able to take this a step farther and use “two degrees of whitelisting/blackisting.” If I really, really trust Alice, I might be willing to trust all the whitelists/blacklists that she subscribes to herself. Of course, we’d need some kind of RSD format for publishing our whitelists and blacklists to make this work. I suppose you could get into the question of whether you want to reveal to others whose whitelist you subscribe to, but frankly, that level of cliquishness strikes me as way too silly to worry about.


The front page hardly looks different, but I’ve completely reworked all my blog templates.

For one thing, I’m using individual entry archives. I’ve decided that makes the most sense. I’ve kept a calendar view (derived from Mark Pilgrim’s) for my monthly archives, along with the category view of the archives.

I’ve installed a couple of patches to thwart blogspam. And to deal with MT’s dodgy linebreak conversion, I’ve installed bloxpert, thanks to which the pages I’ve cursorily checked are now valid XHTML.

The downside to this is that all inbound links will break. Sorry. I may try some kind of mod-rewrite trick to divert inbound links to the correct calendar page.

MT Users: Install v2.66 now

The people bitch, Ben Trott listens. Movable Type has been updated to 2.66, mostly to add anti-blogspam controls.

  • URLs are passed through a redirector, so as to negate any googlejuice that spammers might hope to gain. This just made things more complicated for David Sifry’s Technorati.
  • You can add a ThrottleSeconds value to your mt.cfg file. Mine is ThrottleSeconds 60, for whatever it’s worth. I’d prefer for this to be progressive (ie, 30, then 60, then 120, etc) and to have an auto-ban feature, but this is a good start.

Disabling comments on old blog posts: questionable wisdom

There’s a lot of talk among hardcore bloggers on the subject of the best way to deal with spam in their blog comments. Some people advocate turning off comments entirely; others suggest turning them off after the post reaches a certain age. It seems that comment-spammers mostly focus on older entries–perhaps simply because statistically, most entries are old, but perhaps this is intentional, in the hopes that the blog owner won’t notice comments on posts that have scrolled off the front page.

There’s also been a lot of discussion of power laws and inequality.

How one runs one’s blog is one’s own business, of course, but it’s a shame to disable comments on old posts. Jason Kottke famously had a thousand-comment-long discussion following his review of Matrix Reloaded.

I’ve observed a vaguely similar phenomenon in a post I made after getting my wisdom teeth out. A google search on the phrase “wisdom teeth out” brings up the comments on that entry as the third result. People drop by to relate their own experiences getting their wisdom teeth out: it’s not a discussion, exactly, more a repository of anecdotes, mostly by people I don’t know and have no other contact with. Obviously this couldn’t happen with closed comments.

What’s also interesting is that this must be a self-reinforcing tendency. I have no way of tracking how the same comments page has been ranked in Google’s results over time, but I can’t imagine that it has always been #3. The more people that comment there, though, the more that page is likely to be ranked highly as a result for wisdom-tooth-related queries.


We’ve got a slew of social-network websites, and they all make you go through the same song-and-dance. Each has some pros and cons. They’re fun, I suppose, but what do they really do? They provide certain opportunities:

  1. for bragging about the size of your personal network. This is on par with who sits with who in the high-school cafeteria;
  2. for hitting on friends of friends, so that you feel like you’ve got an “in” with someone that is more personal than using typical online-dating sites (Friendster);
  3. for business match-making (Linkedin);
  4. for seeing what your friends are up to and organizing group events (Tribe and Friendster).
  5. for creating forums for affinity groups (Tribe and Ryze);

We’ve also got FOAF, which overlaps with what Friendster & Friends can do. There are a lot of drawbacks to FOAF, not the least of which is that it is damn complicated. Hand-coding a FOAF file is much more tedious than coding HTML, IMO. There are some rudimentary tools to help one generate the file, but these are barely a start.

Another problem with FOAF is that you need a place to store your FOAF file. I’d venture a guess that most Friendster users do not have their own websites, and do not have a burning desire to create one. But they obviously are interested in participating in social networking. Conversely, most people with their own websites–even people with a strong interest in social networks–don’t have FOAF files. So FOAF just hasn’t gotten much traction yet.

A third problem with FOAF is that FOAF files just sit there–they don’t do anything. You need specialized search engines to traverse these FOAF files and display interesting information about them.

A fourth problem is that, even with these search engines, you’re barely satisfying the first one point in the above list. But it wouldn’t take much extra to cover all those bases.

There is an opening here for a Friendster-like hosted service or user-installed tool (which I will refer to as FOAFster) to use FOAF and other standards to create an open system that helps people use FOAF more efficiently. As long as it is open, with a published API or plugin architecture, it doesn’t need to do all things for all people. This would be a specialized content-management tool that might be similar to a blogging tool in some ways (and might include rudimentary blogging tools). More important would be something like trackback for getting information from one FOAFster to another. This would be simplified by the existence of a central pingable resource like but for FOAF, so that when Alice posts her FOAF file, her FOAFster tool can check the centralized site to see whether Bob has a FOAF file too, and if so, where it is. She could then ping Bob directly to let him know “I am marking you as a friend in my FOAF file.”

To cover point 1 properly, FOAF explorers need to show whether one person’s assertion of friendship is reciprocated. Exploring one-way links would be useful too, and could replicate the two-way checking that all the social-network services require: a good FOAFing tool would keep track of people claiming you to be a friend, and let you add them as friends to your FOAF file.

To cover points 2 and 3, the FOAF vocabulary would need to be extended a bit to include what kind of people you’re interested in meeting, and for what reason, eg, activity partners, hot monkey love, or professional contacts, and specifically in what context. I can imagine a new domain in FOAF that would look something like this:

		<vendor>graphic design</vendor>
		<partner>road cycling</partner>

Obviously this gets into hairy problems of defined vocubularies, but these problems are not insurmountable.

Point 4 can be easily covered by tracking RSS feeds of friends. Looking at the nitty-gritty of implementing this, there are several possible paths to take, each of which have their merits:

  • Include a simple blog-like tool for publishing announcements in FOAFster.
  • Suck in the RSS feed from another blog for this purpose
  • Accept trackbacks from another blog for this purpose
  • Accept iCal files
  • Acept Outlook schedules

If the tool could also push content from friends into one’s own iCal/Outlook, that could be very powerful.

FOAF already has several constructs for defining group membership that cover point 5. Again, the existence of a central pinged site that can keep track of what groups exist would be very helpful. Alternately, or additionally, there might be “group host” sites that would have pointers to group members, records of discussions, etc.

This doesn’t quite solve the problem of the group having a discussion forum, but this could also be managed similarly to the announcements in point 4, but with a little added complexity because the discussion thread would need to be maintained. This would probably be done by trackbacking to the previous post. The group host site would also need to be trackbacked or pinged on every group-related post to maintain a record. This gets a little hairy–I’m not aware of any discussion systems that are completely decentralized and distributed.

It’s not clear whether yet another social-network tool will solve the problem of proliferating social-network tools, but until existing ones are designed explicitly for interop, I don’t see any other way. I don’t have the programming chops to make this happen (not yet, anyhow), but I can picture it pretty clearly. I can imagine a tool that would sit alongside Movable Type or other blogging tools to help us manage our personal and professional lives.

LaterLooks like some blowhard has decided he invented this idea–see the bizarre “warning to copycats & clones”)

More comment spam

I thought I was safe. I had done most of the smart things to avoid comment-spam: renamed the link to comments, renamed the comment script, and installed the excellent MT-Blacklist

Then today, I was barraged with about 100 comments in a short period of time (I didn’t check how long it took). This was clearly being run by a script. The suppurating sore of a wretch who attacked my site (in violation of terms clearly posted in the comments pages) lives at IP number; this traces back to a machine behind the domain.

Baghdad Burning

Many of you are probably familiar with the Where is Raed? blog, by Salaam Pax, the “Baghdad Blogger.” He’s the best-known one, but not the only one. Another is Baghdad Burning. And, fascinatingly, there is a another site, also called Baghdad Burning (note the one-letter difference in the URL), with an identical layout but a distinctly pro-American slant and a distinctly different blogroll. It’s propaganda. If it isn’t being put out by the U.S. government, it is being done by someone keeping a close eye on the play-by-play, with plenty of time to spare and information on hand. Interestingly, the copycat blog appears to predate the authentic one (blog entries can be back-dated). The copycat appears to have unthinkingly copied irrelevant bits of the original’s template, including a link to “”, a comment-hosting service. Neither site currently uses the service; the legit site doesn’t have the link on the current page; the copycat does.

Update: There’s a blog tracking the copycat blog.


An article on online reviewers has prompted me to get off my ass and write up some thoughts that have been percolating in my head for a few days.

If you are an enthusiastic consumer, there is no shortage of opportunities for you to write up reviews of the products you love or hate. Epinions has built a business out of hosting reviews. For Amazon, reviews are one advantage that it has over bricks-and-mortar retail outlets. And there are lots of other venues for reviews.

In some ways, though, a blog would be a better tool for writing reviews: you own the review, not the site hosting it. You’ve got all your reviews together in one place. Once you wrote the review, though, you’d want people to be able to see it at Amazon (or wherever), so there would need to be a review-aggregation mechanism. Austin Bloggers already works this way, more or less. I have Movable Type set up so that whenever I write a post in the “Austin” category, my blog pings Austin Bloggers, and Austin Bloggers creates a link back to my blog. And with All Consuming (which is very cool), we’ve got the nucleus of something like this happening.

But this is an area where the blogosphere needs to move forward if blogs are going to become a vehicle for reviews. Let’s look at what needs to happen:

Review profiles
Currently, blogs are set up as general-purpose writing tools: they don’t have specific fields for specific bits of information. Movable Type is going to come out with a “Pro” version that will support custom fields. I think of a set of custom fields as a “profile,” and I think this is the next thing in blogging. Bloggers writing reviews will need a “review profile” in their blogs with fields for the item code and rating.
There needs to be some uniform way to refer to the product. This could be something like a uniform product code or an ASIN (though I don’t think this would work for movies). And there needs to be a standard way to enter this and publish this in a blog. As a practical matter, there might need to be multiple identification schemes; you would identify both the item and the scheme (eg, “this product code 12345, and I am using the Amazon standard identification number scheme”).
Ratings vocabulary
Not everyone uses the same scale for ratings. Some would give a simple thumbs-up/thumbs-down. Others would give several numeric ratings for different aspects of a single product. In order for what review aggregation to work, there needs to be a uniform ratings vocabulary. Again, there should be a standardized field for this.
Aggregation API
Amazon already has a public API. There should be a mechanism for pinging Amazon (or whoever) “hey, I’ve written a review” so that it can aggregate your review into it’s product listings. Although All Consuming is run by an Amazon employee, even reviews posted there do not get into the Amazon database.
Feedback mechanism
Amazon makes it possible to indicate whether a review-reader finds a review helpful; Epinions goes further, and lets the reader write a review of the review. There would need to be something like trackback to get this information back into your review.

In theory, all this data structuring could be avoided if the aggregating entities used million-dollar search instead of million-dollar markup. It might be possible to just include a reference to an ASIN in a blog entry, ping Amazon, and have it figure out “hey, that’s a review of such-and-such” and to further use natural-language processing to figure out whether I liked it or not.

Comment spam

Nabokov never had this in mind.

Over the past week or so, many people with Movable Type blogs got hit by comment spam ostensibly posted by “Lolita,” linking to some nasty porno website. This has created a tizzy in the blogosphere, and happily, Jay Allen is doing something about it. Once he gets his plugin up and running, I plan on installing it. If only we could deal with e-mail spam as effectively.

Until he finishes, however, there’s something you can do right now. This comment spam is posted by an automated bot that looks for Movable Type’s comment cgi. You can change the name of this and cut the bot off at the knees. So here’s what you should do:

First, find the file “mt-comments.cgi” in your MT install and rename it something obscure (though I’d keep the .cgi ending).

The next steps you take are dependent on what version of MT you are running, and what version you were running when you created your blog templates, as MT has added some new tags for dealing with comments. If you have old blog templates, they will not use these tags; if you are running an old version of MT, you won’t have access to them anyhow. I’m not sure when these were instituted–I’ll leave it as an exercise to the reader to figure this out.

1. If your initial install of MT was relatively recent

This is the simplest situation: Open your mt.cfg file. Find the line that reads “# CommentScript mt-comments.cgi”. Remove the # and change “mt-comments.cgi” to whatever new name you have picked. Then rebuild all files in your blog or blogs.

2. If you are running a new install of MT with old templates

Your templates probably aren’t using MT’s special placeholder for the comments CGI. You can either change the hard-coded reference to mt-comments.cgi in each template to a hard-coded reference to the new file, or change it to “<MTCommentScript>”. In either case, once you’ve done this, go through and follow the instructions for 1 above.

3. If you are running an old version of MT

You will not be able to take advantage of the <MTCommentScript> tag at all. You will need to change the hard-coded reference to mt-comments.cgi in each template to a hard-coded reference to the new file, and then rebuild.

This sounds more complicated than it really is. It took me about 10 minutes to fix all my blogs.

A tidbit for Movable Type users

If you’ve ever installed Movable Type, you may have wondered “Who is Melody Nelson, and why am I logging in as her?”. Either that, or you’re hipper than me and caught the reference immediately.

Now I know where it comes from:

Even so, Histoire De Melody Nelson sounds like no other record: when it was released, in 1971, it must have been right off the map. It’s a short album – 28 minutes – originally designed as a soundtrack to a teleplay: a dark story about a man’s obsession for a young girl, who becomes his lover, then dies. On the record, Melody Nelson is Gainsbourg’s muse – in real life, he named his publishing company after her. Birkin – gamine, with a shock of curly hair, in a wary-eyed fashion-shoot pose – stands in for her on the stunning sleeve.

and more or less why it’s there

If you want to judge me by my musical tastes, I’ll mention that I love French pop and standards, especially the music of Serge Gainsbourg, France Gall, Jacques Brel and the Little Sparrow herself.


Saw Pirates of the Carribean yesterday. Especially considering this is a movie based on a Disney ride, it is much, much better than it needs to be. Johnny Depp steals the show, boozily sashaying through every scene. Very camp. Lots of laughs. Good action. Some good CGI show-offery, especially where people constantly switch back and forth between normal and skeletal appearances. I recommend it.

PS: This is my 500th blog entry. Woohoo!


I really like Movable Type, and have been a fairly active proponent of it. It certainly has its drawbacks, though, not the least of which is that it is very intimidating to set up. But hey, you can’t beat the price–it’s free.

Enter TypePad. This is a hosted Movable Type service, sort of (technically the back-end is a little different from MT). It looks very nice, and it seems clear that the Six Apart people have done a lot of polishing and tweaking to make the user interface and the default blog templates just that much better than what comes with the current version of MT (which are already good). So that solves the difficult set-up problem, but the trade-off is that you pay for it. They’re offering three tiers of service, and it is interesting that they are tying price to user sophistication. That is, the more control you want, the more you must pay.

This strikes me as a misstep, though a minor one. I don’t understand how the ability to manually edit a template (for instance) would actually raise costs, except perhaps for support (and I have no idea how that’ll work)–what should really matter would be storage space, bandwidth usage, things that really impose costs at the back end. I can imagine a non-technical user who wants to use TypePad as a photo album–which would require one of the more expensive accounts–but who would have no desire for the more extensive tweakability that came with it. By the same token, a more sophisticated user with modest server needs would pay for resources that would go unused.

Nevertheless, for people who are sick of (or don’t want to get started there) but don’t want to get their hands dirty with MT, TypePad looks very nice indeed. Some of the handsomest blogs (with the best markup) on the web right now were built using default TypePad templates.

Print media vs blogging, part 847

Jeff Jarvis writes about the frustration of having a print article on blogging edited badly. Go ahead and read it–it’s interesting. I’ll wait.

I’ve never worked in journalism, so I can only wonder if there’s any truth behind my point here. Big-media journalism caters to several different audiences: the legal department, the advertisers, and a diverse readership/viewership that can vote with its wallets/eyeballs.

All of these create pressure to avoid saying anything that might offend anyone. So where a blogger, who mostly writes to please himself, will write “The president lied,” traditional media will wind up saying “there are some doubts as to the reliability of the president’s statement.” I can easily imagine an editor who has worked in that environment internalizing these rules an applying them widely.

Journalists also try to create the initial impression of objectivity, which manifests sometimes as an aversion to the categorical. The result is the same: what otherwise would be a strong statement is watered down to “some people say this.”

There’s also the obvious problem here of the traditional media’s relationship with blogging, which is wary at best and hostile at worst–so it only makes sense that someone with both feet planted in the former camp would edit with an eye towards softening the strongest pro-blog points.

via Anil Dash


Blizg is another one of these blog-affinity finders. It looks for “ICBM” location data (as popularized by GeoURL) and Keywords in your headers, and finds proximate and topically-related blogs for you. Nice. Although it would be more powerful if it could extract keywords from the stuff you actually post about, rather than the stuff you mention in your meta-data.


I’ve written before about why I blog, but you probably knew that was a load of hooey. The real reason I keep a blog is because I hope to achieve wealth and fame through it.

So far, my success on the fame part has been limited, and the wealth part hasn’t been working out at all. Until now: I’ve received an offer for a “complimentary review copy” of what I am promised is an “entrancing novel.”

I’ve got a few reviews on epinions, and All Consuming but my guess is that I got this because of my blog–the book has a Japanese angle, and it would be too difficult to find reviewers on those sites with an interest in Japan (my profiles mention nothing about Japan). But contacting would-be reviewers on the basis of their blogs wouldn’t be a first.

Will I take them up on it? I haven’t decided, but I’m not inclined to. I prefer to choose my own reading.

Updated RSS feed

For those who are interested, I’ve updated my full-text RSS 2.0 feed to include comments. To use this in Movable Type, open your template-editing screen. Click on “RSS 0.91 index”. Rename that to “RSS 2.0 index”. Replace the contents with this file. The output filename should still be “index.xml” unless you have a good reason to change it to something else. You may want to change lastn="10" to some other number–this shows the last 10 posts. The comments section is set off by blank lines, and can be tweaked.

This is based on the template provided by Mark Pilgrim at, but removes your e-mail address (which spambots might find) and adds the comments. It still validates.

[Later] Made a slight change to make the RSS feed friendly to foreign scripts: my template now uses the tag, which I believe is new to MT 2.6. For this to make a difference, you need to be using MT 2.6, and edit your mt.cfg file: de-comment the line containing PublishCharset and
set the appropriate charset (I’ve set mine to “utf-8”–unicode); also I think you need to de-comment the line NoHTMLEntities 1. This only matters if you use non-Roman script (Japanese, Cyrillic, etc).

[Later still] Fixed a few more minor things, including a link to extended entries (tip o’ the cap to David Nunez).


Still more news about GeoURL.

Joshua Shachter, who is responsible for GeoURL, has created a simple interface between it and Movable Type. This allows individual archive entries in MT to automatically generate the appropriate tags, and to ping GeoURL.

I’ve already begun putting this to work in a local blog-thing, so that local real-world places of interest can get in on the GeoURL action. Things are still very tentative and rough, but check it out: AustinURL.

Local metablogging

We’re on the cusp of something interesting with blogging in Austin, I can feel it.

I attended the first local blog meetup some months ago, and have gone somewhat erratically since. A result of that meeting was the Austin group blog, which hasn’t seen a great deal of action. There’s also a quirky index of local bloggers (some quirk has omitted me from it, anyhow).

More recently, GeoURL has blown things open, as local bloggers everywhere have been able to semi-automatically discover each other merely by registering themselves. This has created a rush of enthusiastic energy here in Austin (and quite likely elsewhere). It prompted Adina to put together a self-aggregating local blog that uses trackback technology to harvest entries from independent blogs. And I’m working on something that is not yet ready for prime time, but will use GeoURL as a way to create pins on a virtual map for local attractions. Next step will be to merge that with Adina’s project, somehow.