Browser breakdown and other stats for my blog

I’ve never paid much attention to browser usage on my blog, but I just looked and it breaks down like this according to Measure Map (from November 5 to the present):

  • Firefox: 48%
  • MSIE: 35%
  • Safari: 13%
  • Other: 4%

According to Measure Map, my readership is 71% U.S., 5% Australia, 5% Canada, 4% UK, 2% Germany, and 2% India. Overall, I had visitors from 59 countries.

I would like to thank the 2 visitors each from South Africa and Brazil. Also, thanks to the 1 visitor from Tunisia — please stop by and visit again sometime.

ecto for Windows (alternate title: Windows install dependencies suck)

About a year and a half ago (in what seems like another life now), I wrote about my first (good) impressions using ecto for OS X. It was a different job, a different blog platform (Movable Type), and a different OS. Now that I’m doing Windows again at work (still OS X at home), I decided to try ecto for Windows against a WordPress blog.

I downloaded ecto for Windows (zip file, ~3.9MB) and was slightly annoyed when the readme told me I needed to download something else, Microsoft .NET Framework 1.1 SP1, which is about 10.5MB. I downloaded it anyway, but got this error message when I tried to install it on my stock Yahoo-issued laptop (which has been rock-solid since I got it just over three months ago):

The upgrade patch cannot be installed by the Windows Installer service because the program to be upgraded may be missing, or the upgrade patch may update a different version of the program. Verify that the program to be upgraded exists on your computer and that you have the correct upgrade patch.

Oh well. I noticed on the .NET Framework 1.1 SP1 page that there was a link to .NET Framework 2.0, so I downloaded that (almost 23MB!) My first thought was, “if this thing installs, there is absolutely no way I’m going to get away without a reboot.” My second thought was “there should be backwards compatibility — maybe it will work.” It installed — with no reboot required. Wow.

Then I tried to install ecto again and got this message:

Microsoft .NET Framework v1.1 SP1 is not installed. Please visit Microsoft website to download and install the framework before installing ecto.

For the heck of it, I tried installing v1.1 again, and got this message again:

The upgrade patch cannot be installed by the Windows Installer service because the program to be upgraded may be missing, or the upgrade patch may update a different version of the program. Verify that the program to be upgraded exists on your computer and that you have the correct upgrade patch.

Deciding that the .NET Framework 2.0 was of no use to me, I went to Add/Remove Programs to remove it and got this message: “Uninstalling Microsoft .NET Framework 2.0 might cause other programs to stop working correctly. Are you sure you want to uninstall Microsoft .NET Framework 2.0?” Ugh. What “other programs” are we talking about? I didn’t really feel like blowing up my laptop, so I stopped right there. The ecto for Windows FAQ addresses this requirement: “Q2: Is the .Net Framework really necessary? ecto for Windows is developed entirely in Visual Studio .Net 2003 using C#. This allow rapid development of new features and debugging.”

My verdict on ecto for Windows is simple: making it easy to get past the install process relatively painlessly would be a nice start. I never got past the first dependency. I shouldn’t have veered off the script and upgraded to .NET Framework 2.0 for the heck of it, but should it really be this painful and require a secondary download that is 3x larger than the software itself to get going? I loved ecto for OS X. I guess I’ll have to wait to see how it works for Windows until ecto works with .NET Framework 2.0.

Update: for those of you who don’t read the comments, Alex writes in with the following excellent news (and barely ten minutes after I posted!):

Support for .Net 2.0 in the installer will be added soon. ecto is .Net 2.0 compatible, it is just that the installer needs to be updated to check for that. A maintainance update will be released this weekend to include .Net 2.0 compatibility.

As a matter of fact, the next major update will require .Net 2.0 framework.

I’ll write more about ecto itself when I get it installed. . . but I certainly admire the rapid response.

Update 11/28/05: Alex Hung e-mailed me on Thursday to let me know that ecto had been updated to include .Net 2.0 compatibility. I just installed the new version of ecto with no problems and am using to update this blog post. Thanks, Alex!

Want Akismet? Then download Flock. Huh?

(Note on 11/10/05: getting the API key was mildly painful, but Akismet is doing an EXCELLENT job of catching spam. I have zero problems now — it was well worth it!)

I ran across a mention of Akismet, the WordPress spam blocker, on the BusinessWeek blog and since I’ve been seeing a bit more spam these days, I decided to try it out. WordPress has been good to me, and this sounded like just the thing I needed to make my experience almost perfect.

I clicked over to the Akismet site, and see “Akismet is free for personal use.” Looked good. “All you need to start using it today is a WordPress.com API key. Sign up on WordPress.com to get an API key.” No big deal — I sign up for API keys all the time.

I followed the “Sign up on WordPress.com to get an API key” link over to WordPress.com and saw this message: “Want WordPress.com? Then download Flock. . . .”

want wordpress? download flock

Huh? I just want an API key so I can try out Akismet and I followed a link that promised me just that. What does Flock have to do with this? Why should I have to download Flock?

Frustrated, I downloaded Flock, but it was guesswork from there on how to get an API key. I clicked around on the “Five ways to. . .get started” on the Flock startup page (with the Flock app) and chose #2, “. . . get yourself a blog.”

five ways

I was presented with three choices: WordPress, TypePad, and Blogger. I chose the WordPress link and filled in the requisite information (note that “chad” was taken, so I used “chaddickerson,” but didn’t do another screen shot).

wordpress signup

At that point, I got an e-mail with my username and password to login to my WordPress.com blog. Yay. So I logged in to my WordPress.com blog, still not sure where this elusive API key existed. Randomly, I clicked around until I clicked on “Profile” in the main admin menu. And there it was! My API key!

WP API key

This process makes almost zero sense. I expected a lot more from WordPress, and getting siphoned through Flock to get an API key smacks of some backroom arm-twisting marketing deal. Getting an API key has never been so convoluted.

Fortunately, installing the Akismet plugin was as easy as any other WP plugin and I got it installed in a couple of minutes. I entered the API key with no problem. Whew. Now I’ll see how Akismet works.

Oddly enough, it wasn’t until the plugin was installed that I came across a reasonable link about the API key, found on the plugin manager page (yes, it’s a little hard to see below):

plugin manager

For those who don’t want to go through the aggravation I just did, here’s the text:

Akismet checks your comments against the Akismet web serivce to see if they look like spam or not. You need a WordPress.com API key to use this service. You can review the spam it catches under “Manage” and it automatically deletes old spam after 15 days. Hat tip: Michael Hampton and Chris J. Davis for help with the plugin.

What a strange process. I sure would like to know the thought process that went into it, because I certainly can’t make any sense of the actual process.

Update: Michael Hampton responds in the comments, and this post makes things clearer:

Last week I told you all about Automattic Spam Stopper, the new anti-spam solution for WordPress from Matt Mullenweg. There’s been some new news, and you’re going to hear it here first.

First off, the plugin has been renamed to Automattic Kismet, or Akismet for short.

Second, it now requires a WordPress.com API key, which you can find on your WordPress.com Profile page. (Click My Dashboard, then Profile.) If you don’t have a WordPress.com account, you won’t be able to use Akismet at this time, until you somehow finagle yourself an account. The fastest way is probably to use Flock. You don’t actually have to blog at WordPress.com to use Akismet, you just need the account to get the API key. You can use the API key at more than one blog, too.

After the ping: how long it takes for blog search engines to find you

I’m launching a new blog with a specific focus very soon (more on that in a day or two). Since you only launch a new blog once, I decided to check my logs to see how long it took for various blog-specific search engines to find me after a ping to Ping-o-matic (and there’s no reason why I pinged ping-o-matic instead of another ping server other than it was set up as a default in WordPress).

Here’s the chronology, for what it’s worth:

23:54:56: pinged Ping-o-matic
23:55:26: A2B Location-Based Search Engine (+http://www.a2b.cc/search-url.a2b?url=http%3A%2F%2Fwww.my-new-blog.com")
23:55:28: BlogSearch/1.0 +IceRocket
23:56:42: Technoratibot/0.7 (from Technorati, of course)

. . . and bringing up the rear after I called it a night:
00:10:27: Feedster Crawler/1.0; Feedster, Inc.

Bonus link: Jon Udell takes a deeper look at future of ping notification infrastructure. Jon starts out by quoting a post on the subject from Cameron Marlow, who recently joined us at at Yahoo! much to everyone’s delight.

Update: (for those of you who don’t read the comments) Scott Johnson of Feedster posted in the comments to note that they were working through a large backlog when I was checking. To be honest, a roughly 15-minute delay after midnight is within the realm of acceptability to me anyway, regardless of the cause. In any case, Feedster wins the award for having the most responsive humans in this case.

Warning Bloglines subscribers: some feed changes

Now that I’ve written about the wrong way to work with your feeds if you use FeedBurner and have Bloglines subscribers, I decided to make another go at doing it right today.

First, this only affects about 25 subscribers — those who are subscribed to my “orphan” (i.e. non-FeedBurner) feeds in Bloglines. The majority of my Bloglines subscribers are subscribed to the “right” feed (the FeedBurner one). Later on tonight, after I’ve confirmed that Bloglines has pulled this post into those orphan feeds, I’m going to do a permanent 301 redirect over to FeedBurner. According to Mark Fletcher’s post in the comments at Russell Beattie’s blog, “301 redirects should automatically redirect/remove feeds in the system.” Here’s hoping none of you get hit by the “remove” side of the equation.

Looking at my logs, these are the URLs that are being requested that will soon have permanent 301 redirects to my FeedBurner feed (for the novices out there, here’s a document with the http status codes for your reading enjoyment):

Or, you can just ignore all that needlessly technical stuff and subscribe to the proper feed in Bloglines by clicking on the button below. If everything works as it should, you won’t even have to do that.

I’ll report back in a few days on how well the 301 redirects handled things.

Update, 7:48pm PT: The Bloglines bot visited one last time, and now the 301 redirects have been put in place.

Hard lessons learned with Feedburner and Bloglines

For about a week, updates to the blog using my Feedburner feed were not available for reasons I feel compelled to explain in full, if only so similarly afflicted users don’t make the same dumb mistakes I did. In a nutshell, I unwittingly blew away my Bloglines readership for about a week through sloppy feed management. Hopefully this will keep someone from learning the same lessons I just did.

First, despite the basically self-inflicted problems I’m about to describe, I really like both Feedburner and Bloglines. I tested out Feedburner at InfoWorld and was impressed. I’ve been using Bloglines for a long time and despite occasional inopportune appearances by the plumber, I’m satisfied. I’ve met key folks at both companies and they’re nice people.

With that said, it’s time to describe how I screwed up my feed.

Mistake #1: I did a vanilla install of WordPress, set up my Feedburner feed, then installed the WordPress Feedburner plug-in to handle redirection of my feeds to Feedburner. I forgot one thing, though — I didn’t change the autodiscovery links in the header of my blog, so some RSS clients picked up the local feed not served by Feedburner. I went on vacation and by the time I returned and looked at my traffic more closely, I had a chunk of people subscribed to my Feedburner feed, and chunks of people subscribed to the local feeds. Feedburner tells you all the right things to do here. I changed my autodiscovery links to point to Feedburner. I just didn’t do it early enough, and my feed serving fragmented.
Lesson: make sure you have your autodiscovery links correct on Day 1 of your blog.

Mistake #2: I decided to try to force those subscribed to my local feeds over to the Feedburner feed, so I put in a couple of 301 (i.e. permanent!) redirects last Saturday afternoon to do just that — realizing, of course, that this was drastic and I was really putting my eggs in the Feedburner basket. (This particular impulse was probably of the same type that saw me under the house one Saturday swinging a sledgehammer somewhat randomly to remove an old cabinet in my crawlspace, knocking out the electrical service to the back of my house in the process.) I created a fancy mod_rewrite rule to do this (take that R for redirect, and tack a =301 on it, like so: R=301), ran a quick but hardly exhaustive test, and all looked good. I didn’t know that I had created an infinite redirect, forcing my Feedburner feed to return a 500 error (see Mistake #4 on how I should have known about this).
Lesson: test, test, test, and be careful with the 301 redirect sledgehammer, and mod_rewrite in general. I am reminded of Brian Behlendorf’s famous quote in the mod_rewrite documentation: The great thing about mod_rewrite is it gives you all the configurability and flexibility of Sendmail. The downside to mod_rewrite is that it gives you all the configurability and flexibility of Sendmail.

Mistake #3: I didn’t post anything about this. A post would have served two purposes: 1) to let people know I was fooling with the guts of my feeds, thereby alerting a bunch of kind people that they should let me know if they see anything weird, and 2) I would have noticed that my post never showed up in Bloglines, where I subscribe to my own feed. Instead, I posted about something entirely unrelated on Wednesday, which is when I noticed I had screwed up. By then, Bloglines was reporting that it couldn’t retrieve my feed (which I checked a few times on my feed preview page). I rolled back to my earlier working state and explained my plight using the help form at Bloglines and posted over at the Feedburner Forums for good measure.
Lesson: Post when you’re changing things. (Duh.)

Mistake #4: For every feed, Feedburner offers FeedBulletin, which includes FeedMedic, a service that lets you know when you’ve blown up your feed (via RSS, of course). This is a great service, though it doesn’t seem well-promoted in the least (as Charlie Wood noted in his post about FeedMedic a while back). My suggestion to anyone using Feedburner: Go to My Account right now and subscribe to it.
Lesson: When you’re using a third-party service of any kind, make sure you investigate automated means of error reporting. (Aside to Dreamhost users: you can get Dreamhost problems reported to you automatically via the RSS feed on their status page.)

The folks at Bloglines got back to me this weekend, letting me know that they had reset my feed, so all is well again and my posts are once again flowing to Bloglines. While the Feedburner part was easy to fix (I just fixed my source feed and resynced), I do wish that there was some kind of ping service at Bloglines so you could let them know when your feed has been corrected after you’ve screwed something up. As I’ve proven, those things can happen. . . .