Technobabbles I try to sound like I know what I'm talking about. Don't be fooled.

30Jan/100

"Houdini" plugin for WordPress is no magician

WordPress The F***?! satirical composite
Logo source and trivial modification with GIMP

I've seen some pretty absurd WordPress plugins show up in the Plugins dashboard widget on this site, but the recently-released "Houdini" takes the cake so far. It claims to prevent spammers from copying the contents of any post or page upon which the shortcode is placed.

The fact is the internet is open can lead to theft especially to content stealing and plagiarism.

Until now, there was very little to discourage and deter this serious crime. Yes content theft and plagarism is a crime in some jurisdictions.

You cannot rely on others or the authorities to continue to police the internet as they do not have enough resources. You need to protect your content and deter this theft.

The basic form of content theft is to copy and paste your content to another medium.

Well Houdini, prevents this using a little known special algorithm that prevents copying by making the selected text that is targeted by the perps to be copied, to disappear! Yes disappear!!! The only way to recover is to reload the page in the web browser. If they try again, the content disappears again. As long as they keep trying to select and copy your content, the content will disappear before they can get a chance to execute the copy command!

After a few unsuccessful attempts, the theives will move on to a easier target.

Your safe!

WordPress › Houdini « WordPress Plugins

So what can we glean from this PHK Corporation plugin's description, other than the fact that the author has poor English skills? We can most definitely conclude that phkcorp2005 has no understanding of how most copying of Internet content is carried out. As I and others have pointed out many times over in blog and forum posts, copying is usually not done by a person using a mouse to cut and paste, but rather by automated computer programs called scrapers. (For the uninitiated: See these two Wikipedia articles.)

What is left out of that messy, error-riddled description is the word "JavaScript". It is by no means the only word or phrase that should be inserted, but it is the most important. That fifth "paragraph" (the formatting is also very poor) should say "special JavaScript algorithm", which is synonymous in this case with "useless JavaScript algorithm". All it does is wait for the user to try to select text in the browser and clear the selection if any is made. Besides, any copy-protection scheme based upon JavaScript is inherently useless by virtue of the fact that it doesn't do anything to prevent copying. There are tons of ways to get around it. Disabling JavaScript, for example (as mentioned below).

For example, take hatkirby's rant. I quote from that post the list of circumvention techniques below:

  1. Go old fashioned and turn off JavaScript. Yep, the script is rendered useless.
  2. More advanced content thieves likely don't just go around to random blogs and copy/paste off of them. They write screen scrapers, small programs that visit sites and download specific parts of the site. As these do not render pages and simply download from them, the script isn't even seen by the scraper.
  3. Due to the nature of the Internet, anyone, and I mean anyone, can see the source code of a website. It's done differently in different web browsers, but it's always pathetically easy and, as it simply shows HTML code instead of parsing anything, no scripts are run.
  4. RSS. Syndication feeds are normally viewed in feed readers with little to no JavaScript interpreter. Script bypassed.
  5. There's this cool little button on most keyboards that says "Print Screen". Even on the keyboards that don't have it, there's usually a key combination that achieves the same effect. It takes a picture of whatever's on the screen. No selection occurs and yet the thief has a copy of your article. They do, however, have to retype it, so this keeps the lazy thieves out.

That's just a smattering of ways to get around the JavaScript inserted by Houdini.

In the face of all the arguments presented, the plugin's author has insisted that the purpose of Houdini is not to "prevent" copying, but to "deter" copying. I don't think that statement holds any weight whatsoever. It still depends upon the copying being performed in a JavaScript-enabled browser by a human.

There's also the matter of just how absurd copy-protection of any kind is on the Internet. Every single document or file anywhere on the Internet must be copied in order for the user-agent (usually a browser in the case of human interaction) to retrieve and display or otherwise make use of the content. This is why it's quite simple for any user to just view the source code of a page. It has to be copied in order to display the content.

Also mentioned in the first (started, chronologically) forum thread is the ability of JavaScript to disable the browser's context menu and thus the "View source" option. That's just as useless as the selection-clearing code, and actually more so because many modern browsers allow specific JavaScript capabilities to be disabled — capabilities like removing or replacing the context menu — as an alternative to disabling all JavaScript. The "View source" option is also present in other places — places such as the browser toolbar's "View" or "Tools" menu — which JavaScript code cannot modify even in the most permissive environment.

Legitimate quoting must also be considered. There are a million and one reasons why someone might legitimately want to copy a few sentences of a blog post. Maybe they like it enough to post a quote to Twitter or Facebook, or perhaps they want to comment on it in a blog post of their own. Content theft is a big problem, but the old methods of periodically searching for and reporting content stolen from one's site are infinitely preferable to this plugin's ineffective method.

Finally, why require the use of a shortcode? Why not just add the script globally to all content pages and forget that stupid "This page is copy protected" header?

At most, Houdini has the ability to add a superfluous <h5> tag to the page and annoy legitimate users with an obnoxious script while doing absolutely nothing to thwart real content thieves. I wonder if WordPress Extend would consider removing this laughable plugin from the directory… Of course, we bloggers would then be denied this ripe opportunity to satirize this particular piece of code. :D

28Jan/100

iPad? Of course I want one, but…

iPad
Image by toykyo via Flickr

Technological progress can suck sometimes. I have wanted an iPod Touch for about a year and a half, to have the ability to play music and games while on the go as well as gain access to email, tasks, calendar, contacts, etc. while away from a computer (but near an open Wi-Fi network). I almost bought one last year, then I got wind of the upcoming third-generation models: more storage, etc. etc. So I waited. Then the Apple Tablet rumors really started in force, and I really don't have that much spare change anyway, so I continued to wait.

And on Wednesday last — yesterday, that is — the bombshell dropped. Apple announced the iPad.

I got the news late in the day, so there wasn't any point in trying to get out a quick post. There's not even any point in posting about its technical specifications or features, since that information is well covered by Apple as well as others and is a mere search away. But I do want to say this: The iPad has very nearly stolen my desires away from the iPod Touch.

Why would I want an iPad anyway? The form factor appeals to me. I like its thin, light construction, and the fact that it's completely mouseless; multi-touch interaction is definitely a win. The keyboard add-on would work to supplement the on-screen keyboard for more serious writing. Of course, there's also the Wi-Fi.

Unfortunately, the iPad isn't at all perfect, at least for what I would want to do with it. Like the iPod Touch and (save for the camera) the iPhone, it has no camera, no multi-tasking, no media card slots (so my 16GB SD card would stay in my camera), no USB, etc. So far as I know, it's subject to all the limitations of the iPhone OS. But for some reason I still want one. Probably the same reason that I want(ed) an iPhone or iPod Touch. And Apple's solution to the lack of ports? Adapters. Yeah. Not the best solution, in my opinion, and it'll definitely keep me from seriously considering acting on this want. (Unlike so many others, I don't really care about the name. I just think iPad is awfully similar to iPod.)

The lack of a camera is really strange to me. With such a sophisticated device, based on high-speed data communication over Wi-Fi and/or 3G, a user-facing camera (at least) would seem to be a natural feature especially since Apple's laptops have included a built-in webcam for a while now. Videoconferencing on a device like the iPad could be really enjoyable, what with the accessories that would probably come out to make it even better. (I would like to see a stand that allows it to be used like one of those communication screens on Star Trek. Geek that I am. ;-))

As usual, Apple has created an incredible piece of hardware, but has omitted what I would consider to be key parts of a truly productive and useful platform. Just about every consumer electronic Apple produces seems to be focused on consuming media, whether music, video, images, or text. Their more conventional computers have productivity components, and can multitask like any Windows or Linux system out there, but they still excel at media consumption and production. This latest consumer electronic device is, to me, basically a Nokia N900 Internet Tablet with an App Store, no hardware keyboard, and Apple's design flair.

Given the limitations, there's no way I'm going to buy an iPad. It's really a bummer. I'll just have to contain that want, as I have been for the iPod Touch. Both devices are beautiful, amazing pieces of engineering (and it's interesting to note Chris Messina's hypothetical iPad Touch post from 2007, found on Twitter via @damon's timely tweet), but both are too limited and neither would really satisfy my want for a true portable computer. Too bad knowing the limitations of these Apple devices doesn't in any way alleviate my geek lust for them. :P

Enhanced by Zemanta
27Jan/102

Why I'm Always Promoting Dropbox

Image representing Dropbox as depicted in Crun...
Image via CrunchBase

If you've had much interaction with me regarding computers, no matter what the medium — Twitter, Facebook, email, dinner conversation, small talk during a gathering — I've probably mentioned a service called Dropbox. A few of you have already succumbed to my uncharacteristic marketing tone and signed up, but I thought I'd blog about it and perhaps get more people on board.

I'll start with the reasons I like the service, and then explain why, exactly, I'm doing this a little later.

The site bills itself as an online synchronization and backup solution. I use it mostly for the backup, but that will probably change in the future. After all, it was created by a couple guys who were tired of forgetting their flash drives. It's ironic to note that my current use of Dropbox is to back up my 8GB (soon to be 32GB) SanDisk Cruzer Micro, using a modification contributed by another user.

Dropbox is just plain fun to use, and it has a lot of cross-platform compatibility. It synchronizes files between computers running Windows, Mac OS, or Linux; keeps backup copies online (using Amazon's S³ service — not that I should get too technical); stores revisions when files are changed; and keeps deleted files in case of the inevitable "damn, I shouldn't have deleted that" moment.

The backups, revisions, and deleted files are accessible from any computer with an Internet connection. Files can be added, updated, deleted, and otherwise managed via the website, too, which is great for travel or forgotten files (presentations, school projects, whatever). There is also a mobile website for PDAs and a higher-end version optimized for Android– and iPhone OS – based devices, as well as an iPhone App (there's an app for that™) which of course also works on the iPod Touch.

When naughty Vista workstations have tried to corrupt irreplaceable recordings and other files, Dropbox has restored them (with a little direction from me). Last summer, I bent the connector on my flash drive pretty severely while working on a design project at a poorly arranged Emerson computer desk. It still works, and retracts; but after asking around a bit and hearing that the drive was now likely unreliable, I was motivated to upgrade from the old Dropbox U3 mod — which had trouble on all sorts of non-personal computers — to DropboxPortable — which has worked everywhere so far. (It still won't work at the local public libraries, though. But neither will anything else; they blanket – block EXEs.) If and when my drive decides to give up the ghost, I know Dropbox will be there to give me my drive back just as I had it, as soon as I replace the failed hardware.

I also back up my music collection in Dropbox, which is a great, perfectly legal way to make sure I don't lose any downloaded or ripped MP3s. As it turns out, it's also useful because the device I use as my MP3 player — a Roland Edirol R-09HR — happens to be very picky about file structure. If there's one bit out of place, I get an "Improper Song!" error and can't listen to that file. When this happens to a song that used to play, I've often been able to go back into the previous file versions for that MP3 and load a playable version onto my R-09HR. It's much easier than using a so-called "repair tool" on the file.

There's also the matter of deleted file recovery. I've used the deleted file recovery to reinstate everything from seldom-played music (deleted to free up space) and design research (I just messed up) to irreplaceable recordings from my R-09HR (corrupted by Vista).

The list of times Dropbox has come in handy and/or saved my bacon is endless. If it's saved me so many times in the space of one year, it can surely do you some good.

So do yourself and the great people at Dropbox ("the Dropboxers") a favor and give it a try. I'll bet you won't be disappointed.

Note: Signing up through the links in this post will net you an extra 250MB* of storage in addition to Dropbox's free 2GB plan. That extra storage will stay with you if you decide to upgrade your account. (Disclaimer: You'll also earn me an extra 250MB.*) I tried to work out something special with the Dropbox team via their now-defunct affiliate program, but they stopped the program just before I inquired, so I'm unfortunately rather limited in the benefits I can pass on. Too bad, really; I had in mind something rather spectacular. ;-)

* – Please note that you must install the Dropbox application on at least one computer before you or I will receive any additional storage.

Enhanced by Zemanta
22Jan/104

My First WordPress Plugin Patch: Wibiya Toolbar

The beauty of using WordPress instead of Blogger is, in a nutshell, the freedom that comes with using an open system instead of a closed one. Under Blogger, I had very little freedom to extend the platform. Everything I could do had to be added by someone from Google, with the exception of a few JavaScript– and Flash-based sidebar widgets. Under WordPress, I have access to literally thousands of open-source plugins to modify, extend, and replace the functionality of the site.

The beauty of using this open system is that if something doesn't work the way I want it to, I am free to simply change it; every plugin is editable from within WordPress' administrative back-end, and the core code is also hackable (though I don't like messing with it because upgrades will break changes). When I discovered that the Wibiya Toolbar (or Wibar) was showing on the mobile version of the website (which is generated by MobilePress, another good plugin), I simply looked in the source of Wibiya's plugin to see how the JavaScript for the toolbar was being inserted.

I found that instead of using the wp_enqueue_script() function as WordPress plugin developers are supposed to do, the Wibiya developers simply used echo to output a <script> tag. That explained why only the JavaScript for the Wibar was loading on the mobile site. Rewriting the plugin to use the official WordPress script-injection method solved the problem.

The original relevant code was:

add_action('get_footer', 'filter_footer');
add_action('admin_menu', 'wibiya_config_page');

function filter_footer() {
    $wibiya_toolbarid = get_option('WibiyaToolbarID');
    $wibiya_enabled = get_option('WibiyaToolbarEN');

    if ($wibiya_toolbarid != '' and $wibiya_enabled) {
        echo '<script
        src="http://cdn.wibiya.com/Loaders/Loader_'.$wibiya_toolbarid.'.js"
        type="text/javascript"></script>';
    }
}

I rewrote it just a little bit. My changes were pretty trivial, really. I changed the function name to be namespaced (including the plugin name) just so it'd be less likely to conflict with another plugin. I also switched actions to enable wp_enqueue_script() to work (get_footer is called too late) and added a check—if( !is_admin() )—to keep the toolbar off of admin pages, preserving the original behavior of the function (and the sanity of anyone using the modifications).

In short, wp_enqueue_script() takes five parameters, three of which are optional. The first two are the $handle and the $src, which specify a name for the script and its source address. Then come $deps (dependencies; Wibiya has none, so set to false), $ver (version; also false because it's irrelevant), and $in_footer (set to true because the toolbar should be inserted above the </body> tag).

So with my changes, the code block above becomes:

if( !is_admin() ) {
    add_action('wp_print_scripts', 'wibiya_filter_footer');
}
add_action('admin_menu', 'wibiya_config_page');

function wibiya_filter_footer() {
    $wibiya_toolbarid = get_option('WibiyaToolbarID');
    $wibiya_enabled = get_option('WibiyaToolbarEN');

    if ($wibiya_toolbarid != '' and $wibiya_enabled) {
        wp_enqueue_script( 'wibiyabar',
        'http://cdn.wibiya.com/Loaders/Loader_'.$wibiya_toolbarid.'.js',
        false, false, true );
    }
}

Following some light testing, I submitted an idea to the Wibiya feedback forum, where my update is currently being reviewed by the company. Hopefully, the change will be included in a future version of the Wibiya WordPress plugin. After all, it changes nothing for Wibiya but works wonders for compatibility with other plugins.

I'll just bet that this won't be the last time I'll send a patch to a plugin developer. I enjoy reporting bugs and coming up with fixes too much to not do it. ;)

22Jan/100

Bringing Back Skribit

A while back, I tried out a service called Skribit on my Blogger site. Skribit's purpose is to help bloggers overcome writer's block. It places a suggestion form on the site where visitors can leave ideas for the blogger to use when he or she is out of his or her own ideas.

It never got much use by readers of the old site, so I initially didn't bother transferring it here; but now that Skribit has launched and (I see) done a lot of work on the experience users leaving suggestions have, I figured I might as well install the WordPress plugin and give it another go. It doesn't take up any space in my sidebar, either, now; since I stopped paying attention to it, a new floating tab option has popped up. For now, it's over on the right-hand side of the page.

Go ahead, shoot me some ideas! I may have something of a backlog from the last few months, but I certainly don't have an endless list.

17Jan/103

How I Beat Blogger and Redirected to WordPress

Yes, I really and truly have migrated to WordPress from Blogger. I know there are a lot of guides out there, but I think the method I used was different enough to warrant a new post. (I won't duplicate the steps of setting up the new WordPress site and importing the content from Blogger; that's pretty obvious, and it's well covered elsewhere. Redirecting is the art form that's been changing every few months.)

Obligatory Rant

Getting away from Blogger is really much harder than it should be. There should be a process to verify with Google that one is not a spammer trying to get free link juice etc. and have the 301 redirects with the Custom Domain feature specifically enabled for the blog one wishes to move. Hackery like what I came across, and what I used, shouldn't be necessary. Blogger should natively support moving away from its platform, even if it might require a little human intervention on Google's end.

It's really too bad that Google is so horrible with customer support. Their products are, generally, really great, but if you run into a problem it had better be something common that others have run into. Your only option, in most cases, is to post in a public support forum and cross your fingers. Fortunately the problems I've encountered have been few, though I am getting increasingly irritated with every issue.

The Premise

Way back in the day, Blogger used to offer 301 Moved Permanently redirects via its Custom Domain feature, even for domains not set to CNAME to ghs.google.com, but I guess spammers were abusing the feature because that ability went away. For a while now, it's been showing an interstitial page to visitors instead of redirecting, warning visitors and crawlers that the site is now redirecting to an untrusted domain. This passes no link juice, and is incredibly inconvenient and unsightly for everyone.

I did a lot of research beginning when I returned from my long summer. In between college applications, family trips, and so on, I performed search after search for methods of migrating away from Blogger to a self-hosted WordPress site. I found a plugin to restore the old Blogger post slugs (to make redirection easier), but every redirect method I came across was in some way outdated and/or broken — until I happened to find Digital Inspiration's method: A Classic Blogger template specially configured to issue canonical links tags, JavaScript redirects, and a big <h1> anchor link to the new site.

Digital Inspiration redirected all traffic to the old site to a special page on the new server, built to handle redirections. A PHP script was offered, but I didn't take that bit. I found a nifty WordPress plugin instead: Redirection by urbangiraffe.com. With two plugins (Redirection and Maintain Blogger Permalinks, mentioned below) and the Digital Inspiration template generator, I was ready to develop my method.

Introduction

Before you do this kind of thing, make sure you run a plugin like the one mentioned here to convert the slugs for posts imported from Blogger to the Blogger format, so they'll match up with the redirects. If you don't, any posts with "small words" ("and", "the", etc.) in the title and posts with lengthy titles will have issues once you switch to the new site.

Also note that you may need to set the number of posts to display on the home page to 1 on Blogger's end. I had a last-minute bug when I implemented this for real that I didn't catch on the test site because I only created one nonsense post. Imagine how frustrating it was to suddenly have seven copies of each <Blogger> section on the page. (Now that I think about it, that's probably why the DI generator kept the homepage stuff out of those sections. But you should change the setting anyway just to be safe.)

Finally, note that, contrary to what a lot of migration guides say, you don't have to set your permalink structure in WordPress to match Blogger's. If you don't want your post URLs to end in .html, they don't have to. Apache .htaccess rewrites and/or the Redirection plugin will be your friend(s). I chose to simply convert the .html into a / but you can pretty much do whatever you want. I've also found that WordPress is capable of redirecting links of the format http://domain.tld/post-slug-here/ to the fully-qualified permalink all by itself, so use that as the target if you want to use a permalink format that doesn't match up with Blogger's. Note: I haven't personally tested this, but given what I know of how WordPress handles things, it should work fine. Use at your own risk, etc. etc., don't blame me if it won't work, etc. etc. But you're welcome to ask for help, of course. ;)

Development

I started with a redirect template generated using Digital Inspiration's generator and set up a Blogger handler in Redirection on the new WordPress site, modifying the newly generated Blogger template accordingly. (DI's generator defaults to /blogger/ which I didn't want; it might eventually conflict with something. I used a more action-oriented /handle-blogger, removing the trailing slash.) The redirect I used was: /handle-blogger\?q\=http\:\/\/voyagerfan5761\.blogspot\.com(\/.+) -> $1

I began developing this solution well before discovering the magic bullet at Digital Inspiration. One of my first steps after installing WordPress was to add mod_rewrite redirects in my .htaccess file so I'd be prepared for redirections from Blogger. Once the handler was in place, I transferred my Apache redirection rules to the Redirection plugin in WordPress:

  • Posts: /([0-9]{4})/([0-9]{1,2})/([^/]+)\.html(\?.+)?$ -> /$1/$2/$3/$4
  • Categories (labels): /search/label/(.+)(\?.+)?$ -> /category/$1/$2+
  • Monthly archives: /(\d{4})_(\d{2})_\d{2}_archive\.html(\?.+)?$ -> /$1/$2/$3

+ – Still need to figure out how to transform this to lowercase and change %20s to hyphens.

Update (02/14): I discovered that query strings killed the redirects and led to 404s. I changed $ to (\?.+)?$ at the end of each regex as well as added extra corresponding backreferences ($4 for posts, $2 for categories/labels, and $3 for monthly archives) to fix it. All query strings are kept, even if they're meaningless on the new site, but otherwise it would be a pain to whitelist only the useful ones. I'll update again with blacklisted query parameters if I discover a Blogger query parameter that breaks something in WordPress.

Once I had all the handling pieces in place on the new site, I tested the Blogger template on a test blog. During my testing, I found room for improvement. For instance, I read in my research that a meta refresh tag, used with a delay of 0, is often treated as a 301 redirect by search engines. I added refresh tags to the template.

I also found that Blogger tries to thwart JavaScript calls to window.location.href by placing script tags on the line following the call and invalidating the entire block. I defeated that by placing a multi-line comment starter after the semicolon, wrapping the block in <!>, and creatively faking out Blogger. It still inserts the extra tags, but they don't harm anything because I used trickery to force Blogger to place them inside a comment block (where they're just ignored).

In case future changes to Blogger break the template — and I'm sure that Google will do something to break my setup eventually — I added a link to my new contact page for users to tell me if it's not redirecting.

The template does everything I need it to do. With the Redirection plugin, I didn't need to use the PHP script provided in the Digital Inspiration post. I should also get better results from the migration because of the extra work I put into my template; feel free to get a copy for yourself. If you use it, please leave the existing comment block at the top intact. Both the original authors at Digital Inspiration and myself will appreciate it. I also plan to share my improvements back to DI.

Conclusion

Satisfied with my testing and confident of the results, I implemented the template on my real old Blogger site a couple days ago, where it seems to have been chugging along nicely ever since. If it breaks, and I don't notice, I'm sure someone will take the time to use the contact link I added and let me know. The link might cause a few issues with search crawlers, but I think I'm OK with it. Misdirected link juice is better than broken functionality.

Of course, this is the technique that worked for me. Like all the others I found, I'm sure this one too will become oudated and/or broken with time. But for now, it seems to be the best method for escaping the clutches of Blogger.

Update (01/23): A reader pointed out in the comments that IE6 might not follow the redirect. If your site has a significant fraction of readers using IE6, keep that in mind. I won't worry about it for my site just because most of you use something more recent.

17Jan/100

Migrated to WordPress!

I did it. I finally did it. I ditched Blogger!

You know, there's a certain satisfaction to this. I've been wanting to ditch Blogger for years, ever since I discovered WordPress. And I finally did. I'll consider the completion of this migration to be the fulfillment of my unstated New Year's resolution. :)

Thanks to the generosity of one of my Twitter contacts, @Navarr, I now have a self-hosted (er, friend-hosted) WordPress blog. He offered to host my blog after seeing me complain a lot about things I couldn't do under Blogger. Eventually I bit the bullet and bought a domain name near the end of October. The full story is available (once I finish revising it — oh, hell, that'll never happen, so just read it now and keep checking back :P) on the about page. Now there's something I couldn't do with Blogger: A static page! :D (Update (01/20): Blogger just launched Pages on Blogger In Draft. Little late, guys.)

As an advance warning to my feed subscribers who've become used to visiting this site at voyagerfan5761.blogspot.com, I'm announcing that all pages on that domain will begin redirecting to a new WordPress site I set up at technobabbl.es soon. In fact, I'll probably have that set up by the time this post is published. Feed and email subscriptions, which are run through FeedBurner, should be unaffected by all this reconfiguration; the most you might experience are some issues with duplicate items being fed or mailed to you when the switch is made. Since I switched the feed a few weeks ago, all of those humps should be done with.

The search for a redirection solution was pretty tedious. Because I want to leave Blogger's hosting behind, the Custom Domain feature wasn't an option. Since I need the DNS records for technobabbl.es to point to DreamHost instead of Google, Blogger wouldn't issue 301 Moved Permanently headers; instead, it would show interstitial "untrusted domain" warning pages (returning 200 OK, creating a horrible search engine situation) that don't redirect users and don't pass link juice on to the new site.

I'd just 301-redirect the whole site if I had any way of doing so. Since Blogger doesn't let me do that, I either have to start from scratch search engine– and backlink – wise or find a more creative solution. Thanks to Digital Inspiration for a great post on migrating and Blogger redirection template generator, and thanks to John Godley of UrbanGiraffe.com for the Redirection WordPress plugin.

It took me a while to find this combination, but my pre-implementation testing indicates that it should be pretty perfect. I've also extended the Digital Inspiration template to issue meta refresh redirects in addition to JavaScript, anchor link, and canonical link tags, which should make it even more search-engine friendly. I could have just used redirects in my Apache .htaccess file, but Redirection will log the redirects for me, so I can keep track of the traffic coming in from the old site. For a more complete explanation of what tools I used for the migration, watch for a new how-to post.

Even with the redirection, I would like to ask all of you to update your bookmarks, and anyone who's linked to me should please edit those links. Redirects are fine, but it's better to not make crawlers (and users) jump through those kinds of hoops. I'd like to try and keep the experience as clean as possible.

Speaking of cleanliness, there were other side-effects of importing everything from Blogger. First, my feed footer was included in every post. So that's something for which I should keep an eye out. I'll get rid of all those pesky footers eventually. I only have to get them out of 500 posts. Second, Blogger uses stupid formatting tags (lots of <span style="font-weight: bold;">...</span> and <span style="font-style: italic;">...</span>) instead of the semantically correct, shorter <strong> and <em>, and it uses more <span> tags to size the text up for headers instead of creating <h_> tags. More slow cleanup work for me to do. Just have to fix a few posts at a time. I also need to do something with my Picasa-hosted images; rumor has it that they'll disappear if I stay away from Blogger too long.

Now I'm going to stop rambling about all the work I have to do on the site. :P Thanks for reading, everyone. I hope you'll weather any transition turbulence and follow me to my new site, where I've been working on a few hefty new posts to make up for the distinct lack of blogging in the last year. ;-)