Redirecting away from lost comments

I thought I had linked to Urban Giraffe’s great Redirection WordPress plug-in, but there was a glitch between Ubiquity and Delicious and the link didn’t get saved. Ah well. The point is that Redirection makes it dead simple to do two things: track 404s (dead links) that users hit on your site, and create redirects so that people coming to that link get served valid content.

I’ve been going through the process of reviewing the 404s for the first few days, and have found three general types of 404:

  1. Old Manila stories that were part of my old site structure but didn’t get published in the same way on WordPress. This is easy to fix, because WordPress lets you edit the “pretty URL” for these pages directly.
  2. Attack URLs. These tend to look like /inc​/cmses​/aedatingCMS.php?dir[inc]=http:​/​/rfi.at.ua​/test.txt?? and represent bots trying to exploit known software vulnerabilities. I generally am ignoring these right now.
  3. Permalinks to comments.

This third one is the sad part. Somewhere along the way, whether when I turned off comments on my Manila site or at some other point, all the old comments on my posts were lost. So there’s nowhere for me to redirect: the content’s gone. Comments ranging from the banal to the friendly, from Dave Sifry of Technorati pre-announcing link voting to the late Anita Rowland reminding me to follow up on a post on universal remotes.

I’m now going through the sad task of removing those links one at a time on this site. I guess entropy is alive and well.

But the point is that Redirection is a great WP plugin.

Decompressing

As one might gather from the week of linkblog posts, it’s been a little hard making the transition away from all-election, all the time blogging, though for different reasons than back in 2004. While then I couldn’t believe that half the country enjoyed George W. Bush’s regime enough to bring it back for four more years, now I don’t want to blink for fear it will go away.

And there have been some other things that have happened too–like getting rushed out of our office by a gas main that was broken open by construction staff last week. Or briefly thinking I had to do a four week travel stint to support a client, before cooler heads prevailed.

Plus, I’ve been fighting a cold. So it’s kind of been the perfect storm of blogkill.

While you’re patching: WordPress 2.6.3 is out

A quick heads up for the publication of WordPress 2.6.3, which I missed yesterday thanks to my site’s slowness. This is a straightforward patch release with an update for one PHP class, snoopy, which has a now-patched command injection vulnerability. Mercifully, the patch files are available directly from the blog post, making this the easiest WordPress upgrade yet.

The reports of this site’s death by entropy…

…are greatly exaggerated. However, I think I’ve fixed the inexplicable slowdowns that have plagued the site since sometime on Tuesday or Wednesday. It looks like the issue was related to a plugin, Google XML Sitemaps. Although there had been a few posts since Tuesday, it hadn’t functioned correctly since Tuesday and I think it had gotten hosed up. Disabling the plugin seemed to fix the slowdown, and I’ve since reenabled it without incident. Hopefully there won’t be any additional slowdowns.

Akismet update 2.1.8 fixes “delete all” problem

A quick note to those who live and die by Akismet’s comment spam filtering: recent versions of Akismet appeared to have broken the ability to delete your spam comments, but version 2.1.8, released late yesterday, fixes the bug. Not a showstopping bug by any stretch of the imagination, since the plugin automatically flushes spam comments after 15 days anyway, but I was impressed with the responsiveness of the team when I reported the issue yesterday morning and the fix was available today.

BTW, Akismet just caught my 500th piece of comment spam (in a four month period).

WordPress 2.6.1 is out

After the difficulty I had with the WordPress 2.6 upgrade, I was both hopeful that 2.6.1 would fix some of the bugs, and a little hesitant about the upgrade. Apparently both my anticipations were incorrect. WordPress 2.6.1 was released yesterday, and while there’s no explicit mention of the admin cookie bug that I hit on the 2.6 upgrade, my own upgrade to 2.6.1 was pretty easy.

The full fixed bug list is on the WordPress Trac, so you may want to see if there’s any fixes you need. As another commenter pointed out, there are few security fixes, but that doesn’t mean there aren’t any–the thing about a plugin without headers not appearing on the plugins page raises concerns about hidden malware that might be worth upgrading to avoid. Just remember to clear your cookies before you try to log back into the admin console after the upgrade.

Update: Images and WordPress 2.6

I may have been too hasty to condemn the WordPress for iPhone app. One of my criticisms was that it couldn’t upload a photo to my site. Well, I just discovered that I couldn’t either, even using the browser. This appears to be another issue with WordPress 2.6.

Fortunately the fix is simple: fill in the otherwise optional Full URL path to files (optional) field on the Settings » Miscellaneous section of your control panel with the actual path to your images–usually http://yourdomain.com/yourwordpressdirectory/wp-content/–and save the settings. The forum doesn’t have a consensus on what caused this optional field to become mandatory, but that appears to fix it for most users.

WordPress 2.6 upgrade–fixing a login problem

This blog is now running WordPress 2.6. This was the first WordPress update I had done since moving to the platform, and I thought I’d share a few pointers:

  1. Follow the extended directions, particularly the ones about backing up your installation and deactivating plugins.
  2. You may see references to a plugin for automatic updates. No offense to the developer, but it really is beta. It didn’t work for my upgrade to 2.6.
  3. After doing the upgrade, clear your cookies or you may not be able to log into your control panel.

I thought I had done step #3 but I hadn’t. When I couldn’t log in, I had a moment of panic, and ended up rolling back my whole site to last night’s backup with help from Erin at Weblogger. Repeating the process with a cooler head resolved the issue.

Blogaversary 7: by the numbers

Sometimes I think I should title this after the first real post on the blog: Quarterly Update (XXVIII). I was so optimistic back then, June 11, 2001, that I never promised anything more than occasional updates. Fortunately, I kept writing, and somehow the habit stuck, through seven years.

Right now the seven years of this blog represent the second longest time interval I’ve spent doing one thing in my adult life (the first would be, of course, being married to my wonderful wife). The blog has been through three different hosts and two different platforms, starting with Manila on UserLand’s EditThisPage.com, moving to my own Manila site and domain name at Weblogger, and then just a month or so ago migrating to WordPress. Along the way, there have been four major redesigns: a Bryan Bell theme, two scratch-built CSS themes, and the current tweaked theme from Excel.

Posts by Month to Jarrett House North
According to WordPress’s stats, the result has been around 4,100 posts, give or take, along with a handful of longer pieces and a bunch of images. The quantity per month, and per year, has fallen off since 2002, but hopefully the quality is increasing (see the chart below for details).

A few fine points on the chart:

  • As always, my blogaversary date is fungible. I began regular posting in June 2001, but there were a small handful of posts in 2000 as well. If I wanted to, I could say that the blog is older than the Tin Man, who began in January 2001, but that wouldn’t be fair.
  • The main sea change in my posting rate happened at the end of 2005, when I took on the Boycott Sony blog in addition to my posting here. There’s not likely to be an event like that to make me slow down here again.
  • My posting frequency was falling off a little this year, until I migrated to WordPress. Now there’s an uptick that I think will continue to go.
  • There’s an inverse relationship between periods in which I was happy with my work and posting frequency. I’m really glad to say that, since 2005, I haven’t been going crazy with the posting.

Of course, the post counts are easy to skew. I used to post two and three sentence posts, now I save that for the linkblog.

So why do I keep posting, anyway? I’ve always liked sharing things I found with people, and apparently people like to read it. Plus there’s my other, time-delayed audience: Google. It’s really rewarding to see what people have found useful in the blog, a long time after I wrote it. Now that the blog has comments again, I’m looking forward to having a more interactive relationship with you, my readers.

My hope is that I will keep doing this for the next seven years, and beyond, and that you’ll stay with me for the ride.

CSS fixin’: toward a vertical grid

It should be theoretically possible with CSS to design a page where the type falls on a vertical grid. In reality, you rarely see this happen because multi-column sites make matching the grid values across the columns difficult, and browsers, particularly IE, have awkward ways of inserting inconsistent space around some block elements.

But the basic theory is simple enough. Decide the base unit of height of the page, and go through your stylesheet, making sure that everything there is a multiple of the base unit of height. Your tools are line-height, padding-top and padding-bottom. For example, if your base measurement is 20 pixels between lines of type, and you want space between your paragraphs, you might define a style like p { line-height: 20px; padding-bottom: 20px;} or even p { line-height: 20px; padding: 10px 0;} (where the latter splits the padding above and below the paragraph).

Getting it to work right can be a real bitch, though. What if you have a heading that you want to set larger than 20 points? The naïve approach (which I just implemented) might be to implement a rule like this: h3 { font-size: 24px; line-height: 28px; padding: 8px 0 4px;} where the 28 pixels of line height are padded with a total of 12 pixels to make up 40, or two lines. But this only works if all your h3s are less than one line in height; a heading spanning two lines will take up 66 pixels, or a little more than three lines, messing up the grid. The recipe for success is to avoid setting multi-line headings too closely–or perhaps to use smaller font-sizes for headings.

Here, as in all things related to web typography, a valuable resource is The Elements of Typographic Style Applied to the Web, the brilliant adaptation of Robert Bringhurst’s essential typography rulebook to CSS+HTML+ (occasionally) JavaScript. In this case, the sections on vertical motion (Choose a basic leading that suits the typeface, text and measure and Add and delete vertical space in measured intervals) are invaluable, and I’m going through this theme’s stylesheet and working on applying the principles now. So if things look odd, don’t worry, it’s not just you.

I should also point to 8 fonts you probably don’t use in CSS, but should as the inspiration to change my sidebar headers to Gill Sans (though I might pick a different sans in a day or two), and 10 Examples of Beautiful CSS Typography and How They Did It for the specific inspiration to use small, capitalized, letterspaced sans serif for the headings. Both are quite well written posts from the blog at 3.7 Designs.

Ongoing minor site maintenance

I’m putting enough energy into this particular theme that I think I might keep it around a while. Today I addressed a problem with my daily link posts, which come from del.icio.us with some embedded markup. The formatting of that markup was causing some bogus line breaks (on Firefox, the list bullet displayed on a line by itself), which I eliminated with some simple CSS rules. I’m probably not done playing with the formatting of the link posts, but I’ve fixed the immediate problem for now.

I’ve also created some linkage to parts of the site that used to be exposed in my main navigation, and added a few more top navigation links. Enjoy…

Greatest hits, revisited: Whither SOAP?

I’ve been doing a bit of clean up on some of the early days of my site. Back then, I used Manila’s “story” feature (akin to WordPress pages), and a bit of code that allowed you to edit the front page of the site every day, flipping the old version back into the archives automatically when the new version was published. Over time I transitioned to using the “news items” feature of Manila extensively (what WordPress and just about every other blogging platform calls “posts”). When we did the WordPress conversion, some of my stories were translated into posts and others into pages. So I’ve been going through and changing a few over to posts and backdating them so that you can navigate the site with the calendar. The work isn’t done, but you can go back and read Esta’s protoblog now, and the Mothman’s trail report (or you will be able to as soon as I fix a bug with the path names).

Along the way I turned up some of my early “greatest hits,” those things I wrote that got a lot of people reading the blog and pointing to me, and that encouraged me to keep going. The earliest greatest hit was a piece unfortunately titled Apple: How to bury an important announcement, in which I critiqued Steve Jobs’ July 2001 MacWorld keynote address for talking about new iMacs rather than talking about the upcoming Mac OS X 10.1’s support for the low level protocols (SOAP and XML-RPC) that enable web services.

At the time I said that the unheralded announcement was significant because web services represented a significant evolution of the Internet, as significant as HTML; I said “XML-RPC describes how to allow different computer programs to talk to each other across the Internet.” I said that Microsoft with .NET (and Hailstorm! Remember Hailstorm?) was making a bet that web services were where applications were going, and that Steve was coming on board with that shared vision.

Was I right? From almost seven years later, I’d say it’s a mixed bag. The vision for web services was kind of originally the “cloud computing” vision–you’d have a rich client on your desktop that hooked up to complex software on the Internet using web services. What’s interesting is that while that has certainly happened — look at MarsEdit or other desktop blog editors, or the rich client that I helped ship while at iET Solutions — the real value proposition for web services has been in two areas: integration and mashups. Kind of two sides of the same coin but with very different audiences.

Integration is the business face of getting two computer systems to talk to each other. Think hooking SalesForce into your financial system, or into your ticketing system. Then imagine doing it if you had to consume a SalesForce COM object. Not gonna happen, right? The use of web service APIs to allow hooking systems like SalesForce together with other corporate systems has weakened the case that you used to hear, that your software must be sufficient unto itself because the cost of building and maintaining integrations was so high. It’s also, in an interesting way, increased the adoption of SOA and applications that live off premise. I don’t think you’d see such a high adoption of SalesForce if it couldn’t integrate quickly and easily.

Mashups is the name you use when you’re trying to be cute about doing integration with “consumer” data, or the stuff that you and I use every day. The interesting thing about mashups is that they enable easy connections between web applications–cloud-to-cloud connections, in the earlier analogies. So del.icio.us can automatically post things to my blog; everyone and his brother can get images from Flickr; and your latest Ajaxy website can go from start to finish without requiring you to do a single HTTP refresh.

Of course, mashups vs integrations is an artificial distinction. There’s no technical difference (aside from a bunch of WS* crap in the headers) between the SOAP spoken by WordPress and by SalesForce. It’s just angle brackets. People spend a lot of time positioning mashups as “situational applications” to be done by the unwashed masses, but I think the biggest difference between mashups and “integrations” is intended audience and permanence, nothing more.

With that in mind, we should be at the beginning of what can be done with web services. And that SOAP and XML-RPC layer in the Mac OS should be getting a real workout.

Excel theme fix list

I’m writing this working list so that I can keep a record of what I did to the Excel theme to get it the way I like it, as well as for anyone else who’s interested in learning how to hack up WordPress themes.

Issues:

  • The amount of vertical space consumed by the header region (seems to be a common trend among the themes I’ve tried so far)
  • Need to tweak styles — tags and recent comments run into each other, headings in the sidebar are too prominent, need some custom style work for the Delicious widget
  • The dark borders around images and the big blocky links make the top of the page feel too heavy
  • Category and single post pages missing blog title

Fixes to date:

Tags: I replaced the function call for tags that was in the theme to specify the following: the_tags('<ul class="pmeta-tags"><li>Tags: ',',</li> <li>','</li></ul>');. This basically made the tag a true unordered list with a new class, pmeta-tags, and inserted a comma and a space after each item in the list except the last one. Then I edited the stylesheet to define ul.pmeta-tags as display:inline. So the tags now displays as a comma separated list. I tried a different, very handy, css-only approach (example) first, but the browser didn’t pick up the specified commas or spaces as cues to break the line, and so the content disappeared off the right hand side of the box.

Recent comments: I used the CSS-only example cited above to style the comments and provide a semicolon as a separator between comments. Alas, IE doesn’t understand this approach so I’ll have to do something else here.

Blog title on other pages: I edited the header.php file to include the blog title in parens after the title of the object (post, category, etc.)

Today’s theme: Excel

Snapshot of JHN with the Excel theme.I switched on Monday to a new theme, Excel, that addresses a few of the issues I had with Cutline. The color balance is much better than with the version of Cutline I was using (which I must say, in all fairness, was a much older version of the theme). I also like the layout, which is a two column layout but which floats the post “trivia” (publish date, tags, categories, etc.) in a separate mini column, leaving just post title and text in the main column.

Things I don’t like:

  • The amount of vertical space consumed by the header region (seems to be a common trend among the themes I’ve tried so far)
  • Need to tweak styles — tags and recent comments run into each other, headings in the sidebar are too prominent, need some custom style work for the Delicious widget
  • The dark borders around images and the big blocky links make the top of the page feel too heavy

But it feels closer than Cutline did.