Napster Still Bad, But WordPress Good

After using it a bit further, it looks like WordPress will work out well. In particular I like:

1) Changes are reflected immediately. With MT I had to load the admin URL, select the template section, select the Main Index template, edit in the change, save it, hit the Rebuild button, and wait a while, just to update the numbers on the front page. With WordPress I can just edit the main index file in a plain old text editor.

2) Experimental changes are easier to do. Modifying the style sheet or templates in MT often caused temporary disruptions while I worked out problems, and required a lot of rebuilding. Now I just make a copy of the main index page or style sheet, (e.g., ‘index-test.php’), experiment with changes on it, and then copy it over the regular page when it’s complete, with no disruptions.

3) Posts can be given times and dates in the future, and will remain hidden until that time arrives and then automatically become visible. Writing posts a couple days in advance like this lets me sit on them a while and think of better ways to word things, more points to add, etc., without having to remember to go back and ‘activate’ them later on like a regular draft post.

It also lets posts be released on a more regular schedule, without me having to write them on that same schedule. If I’m feeling productive some night I could write out a half-dozen posts, and then automatically release one per day over the next week instead of overwhelming the site all at once, or trying to remember day-by-day what I was going to write about.

4) The handling of multiple and subdivided categories in WordPress is much better. Subcategories appear as expected in the category lists, and when multiple categories are specified they’re treated equally instead of being separated into ‘primary’ and tacked-on ‘secondary’ categories. (Though for some reason selecting a subcategory does not automatically select its parent category.)

5) Being PHP-based should allow for more flexibility. MT limited you to what you could do through their specific substitution tags, but if I wanted to I could use PHP and MySQL functions to extract whatever raw data I want from the WordPress database.

6) Posts can be split into multiple pages if they’re *really* long.

7) There’s a link management system built-in (i.e., the links in the upper-right corner). It’s not really necessary since you can always add links to the template yourself, but it works reasonably well enough.

There are a few downsides too though:

1) Since everything is dynamically generated, it doesn’t get cached. Just browsing around the site generates a lot more page hits than you’d normally expect, and frequent hits from spiders and aggregators keep getting full sets of new data instead of the ‘304 you’ve-already-got-that’ response. At least it’s all text.

2) The post preview is on the same page as the edit boxes for the post itself. This is kind of a mixed blessing as it doesn’t require you to go to a separate page just to preview, but it can also have unexpected side effects. I have one draft post that I can’t edit anymore because I accidentally put an HTML refresh directive in it and as soon as I go to edit the post it redirects to the new page.

3) The user registration system isn’t quite as complete as I’d have liked. Ideally registered users should be able to be marked for automatic access to protected posts, automatic clearance on comments while holding unregistered ones for approval, and such, but right now it doesn’t seem to do much besides let those users write their own posts. The groundwork is there though, so maybe in a future version…

4) Comments and trackbacks are mixed together, though they serve different purposes. There is a hack out there to fix that and put them in their own separate sections on the page though, and it’s not like I get a lot of trackbacks. :-)

Spamorama, Part 2

Subject: Your employer said they can't hire you because you don't have a degree

Um, if they’re my employer, then they’ve already hired me…

Subject: Bonanza! Please treat ASAP.

What kind of doctor should I see to get this bonanza treated?

Subject: We Can Help You 27lt

Thanks, but what I really need help with is 6pq8vring.

Subject: RE: Get a Date Quick

January 17th! Well, that was easy.

Subject: splatter your mother with semen! husband

Pointless Photos

Downtown Calgary, around 8:45am: (Click for full-sized image)
Quiet

I’ve started carrying my camera around in my jacket just in case I run across anything worth photographing. Althought I sometimes wish I had a newer model like the F828 or a DSLR like the D70, my current one at least fits in a jacket pocket; the bulkiness of the others would make them a pain to carry around casually.

Mapping The Past

Though I’ve converted the site over to WordPress, the old Movable Type archives are still there and accessible. This presents a bit of a problem, because how do I get rid of them? Search engines are going to continue referring to them for a while, so it would make sense to leave them in place so the searcher doesn’t get a 404, but leaving them there will just keep them in the search engines even longer. Redirecting all requests that point at the old archives to the new main page would be unfriendly, since it wouldn’t be what they were looking for.

What would be preferable is to have requests to the old pages automatically redirect to the same article under the new site. The major problem there though, is that the article numbers under the two systems are not the same; what was article #77 under MT is now #74 under WordPress, for example. It’s not a simple single offset for all the articles either, since MT exported them in the order they were posted, not by numerical order.

So, clearly what’s needed is some kind of script that will map the old numbers to the new numbers. Figuring that PHP might be worth a look, since WordPress itself is implemented in it, I brought up the PHP Manual, opened some of the WordPress code in an editor as a sample, and hacked out the following: redirect-mt.php

Instead of mapping each and every article number, it takes advantage of the fact that large ranges of numbers have the same offsets, so all it has to keep track of is the boundaries of those ranges. It took longer than I thought it would to extract those ranges from the MT articles, but the generation of that list could be automated, too. I was just lazy.

This script will remap the article numbers, but I still have to capture the requests and feed them to this script. Fortunately that’s a fairly simple addition to the .htaccess:

# Redirect Movable Type archive requests to the WordPress articles,
# through a remapper script
RewriteRule ^archives/([0-9]{6}).html$ /heide/redirect-mt.php?index=$1 [QSA]

It seems to work well enough, though I’m sure there’s probably some better way. I don’t think I’ll put PHP down on the resume quite yet… :-)

Meta-Spoilers

I was thinking about movies recently, and in particular this idea popped up: simply knowing that there are spoilers is itself a spoiler. Well duh, every movie with a plot more complicated than “See Spot run” is going to be spoilable, of course. Where this really matters though, is with movies that have some sort of surprise or twist to them.

Normally when I watch a movie I’m not really thinking about how it’ll end ahead of time. I don’t go into it thinking “Ooh, I wonder what all of the potential endings could be,” I just enjoy it moment-by-moment and let it unfold at its own pace. Whenever I read that a movie has some BIG SURPRISE or ironic twist to it though, natural curiousity sets in and I start to wonder. Sometimes the mind will get lucky and stumble across the right answer before I stop wondering about it and presto, the movie is now spoiled for me, even though nobody really told me anything about it.

For example, The Sixth Sense was obvious. As soon as I heard that there was a surprise twist to it, and knowing a famous line from it, I had an immediate guess as to what it was. Checking online verified it, and I haven’t even bothered to actually watch the movie since. If I hadn’t known, I wouldn’t have even made that guess and might very well have enjoyed the movie, but what’s the point now? In the case of The Usual Suspects it *should* have been obvious in hindsight, but I went into it not knowing anything other than that it was highly recommended, and was pleasantly surprised. If I had been warned ahead of time, would I have enjoyed it as much?

I’m not really much of a movie-goer so I don’t really care *too* much, but it’s an interesting phenomenon, at least.

Welcome, Again

Yes, the paint is new, but the place is still the same. I spent a chunk of the afternoon converting the site over from MovableType to WordPress and things *seem* to work, though I’m sure there are a few broken links here and there.

Why switch? JUST ‘CAUSE.

Oh okay, there are a couple reasons. MT used statically generated pages, which are nice for keeping the server load low but not so nice for incorporating dynamic data. WordPress has a few additional nifty features like password-protected entries and comment moderation. MT does have some similar features on the way, but the new version is also in a bit of a licensing kerfuffle. And finally, I just like tinkering with things.

Breaking News

(Update: The error 87 is solved over here.)

Attention everyone. I would just like to take this opportunity to announce that InstallShield still sucks. That’s all, thank you.

Ever since I started on the InstallShield portion of this project I’ve been fighting to get it to cooperate with our source control system, Perforce, which is supposed to integrate nicely with it. No go. Anytime I’d try to add the project to source control it would appear to work, but then after loading the .isv file tables would be missing and the project would be corrupted.

It wasn’t just a problem with Perforce, though. If I directly tried to export the project to text, it would fail partway through with an ‘Error 87: Error in Exporting Table(s)’. Merely going into the Direct Editor and just selecting the ISProductConfigurationInstanceProperty table would also produce an ‘Error 87: Error retrieving primary keys for table…’ Tech support was no help at all; apparently a couple other people have seen the same problem, but there was no solution posted.

Yesterday though, I finally got fed up and moved the whole development environment over to my other system, running XP. I don’t like to use it for development since it’s already bogged down by a bunch of other apps, but I had to try something. And now it apparently works fine on this system.

Curse you InstallShield! *shakes fist*

(Maybe it’s a problem with Windows Server 2003; I’ve also had difficulty with cygwin on there.)

Parcel Problems

You’d think getting something shipped to you would be easy, but noooo, I just have to be super-picky…

I don’t really like using the commercial shipping companies like FedEx, UPS, etc., especially for packages coming from the States. Their airmail rates are fairly high, and I don’t usually care too much about it arriving quickly. The ground rates are better, but then there’s extra paperwork involved; customs charges wind up being handled through a separate broker for some reason. In any case, the customs charges themselves are annoying, and there’s often an additional customs brokerage charge on top of the actual duty itself. UPS is particularly bad — the last time I received something from them, there was a flat $25 brokerage fee in addition to the duty percentage *and* the initial shipping charge paid to the company that sent it.

Delivering it to the right place can also be tricky. If I get it sent to my home, they’ll almost certainly never actually catch me at home, so they wind up holding it and making vehicle-less me go down to their way-out-of-the-way holding centres to pick it up. Maybe if I’m lucky that day they’ll let it be redirected to the office, or I could have it delivered there in the first place, but then there’s office paperwork added in. And sometimes they won’t allow it, insisting that it can only be sent to the credit card’s billing address.

I would actually prefer that they just send it through regular post office mail, since then I can pick it up at the nearby neighbourhood branch, the customs brokerage fee is only $5 (and often waived completely), and the speed isn’t *that* bad. Unfortunately a lot of places don’t give you that option. The major one that does is Amazon, but now there are whole categories of things that they won’t even ship to Canada (e.g., electronics).

Ah well, time to just deal with the paperwork, I guess…

Trapped

Gotta love it when you’re trapped in line behind someone making horribly complex lottery purchases. You can see the next line over moving rapidly, but you stay where you are because hey, this guy’s got to be finished any moment now, right?

And then I get stuck in the elevator for a few minutes on the way up to the office after it refuses to move after reaching the 8th floor.

Oh yeah, this is going to be a really nice day…

$ALE!!!!

It’s well known that companies play tricks with their numbers to make it seem like you’re getting a better deal than you really are, but the Net can reveal just how blatant it is…

Amazon.com’s price for the iGP-100: $211.95
Amazon’s original list price: $249.99
Your alleged BIG SAVINGS: $38.04
iRiver’s own MSRP for the device: $199.99
What you’re actually paying: $11.96 more

Sadly enough, I’d probably still wind up going with Amazon for the better reliability and free shipping…

Oooo, Round…

Maybe I shouldn’t be so quick to abandon the MP3 player change. I’m not sure how I overlooked this one the last time around, but statwise it looks extremely nice: the iRiver iGP-100

It supports Ogg Vorbis, the 1.5G capacity is almost exactly what all of my favourite tracks total to in Ogg format, it acts as a USB Mass Storage device, has an FM tuner, and is even cheaper than most of the other players iRiver has. About the only major downsides are that it can’t record (not too important), and may have potential battery replacement problems down the road.

The reviews don’t seem too bad either. It’s tempting, at least…