I recently had a client where everything was working fine - but they were unable to link to any secure (https) sites when creating entries in Movable Type. Unfortunately, there were no messages to be found, and everything worked just fine - as long as there were no https links in the entry.

To make matters worse, just changing the https link to http made it work just fine - which at first seemed to make no sense whatsoever. It's like that one character put the database over some sort of size limit or something. Alas, even that wasn't it - bunches of (other) characters would work fine, just not those particular characters, making it seem like that site itself was the issue, and that is what eventually led to the answer.

Nearly ten years ago - seriously! - I heard about this blogging thing and decided I would figure out what it was all about. So I installed Movable Type on a hosting account I had sitting around collecting dust. At the time, it was running on version 2.64. At least, I think it was 2.64 - it's been ten years, so cut me some slack here.

Then I upgraded the installation. A few times. I created a business. I added a few additional categories. Then they became so big - by volume, not necessarily traffic - I moved these categories to their own blogs. Using Movable Type, that was fairly easy. Eventually I even moved a couple of these blogs to WordPress, just because that's what all the cool kids were doing.

While the dynamic publishing model of Movable Type is not heavily used, it is actually a very useful feature. Probably not as a complete CMS - mostly because it is not full-featured - but certainly to provide some nice functionality on the side as it were.

Unfortunately the dynamic publishing functions are not documented much, if at all, so when you run into some issues, it can be difficult to troubleshoot. One of the more common problems you may find is an error message such as this one - when you cannot redeclare the 'MT' class, it will prevent the entire dynamic publishing subsystem from starting up, and you will be dead in the water!

Have you run into this error while trying to update your plugins from the legacy-style Perl format to a brand-spanking-new YAML layout, only to find that you can't seem to figure out just what the problem is? Spending hour after hour troubleshooting and still getting that annoying message and it just won't go away?

Look no further, because this one is easy. Well, sort of. You do have to look a little bit, but you actually are not missing a semicolon or a brace or anything along those lines. In fact, it might be a little hard for you to find, you just have to know where to look.

Generally you will see this as a longer error message, typically coming from the ContextHandlers.pm module, with a particular line number, something like this:

Can't call method "entry_based" on an undefined value at lib/MT/Template/ContextHandlers.pm line...

The message may seem obscure when you receive the message, but in actuality, it just means that you are using a template tag that the publishing process cannot handle. You just need to remove it (or replace it with a tag that will function properly).

The debate between dynamic and static pages is probably one that will go on for all time. If you are a fan of Douglas Adams, and believe that his work represents a possible outcome to the universe, perhaps it will even go on beyond time. If so, order me something if you happen to be dining at the end of the universe.

Nonetheless, it is quite possible that the best possible performance for Movable Type users is actually not dynamic or static, but a combination of the two. The reason being is, quite simply, because there are places that you can make use of both to maximize the benefits that both technologies offer.

Have you been publishing something in Movable Type and received an error that included this message or one like it? Maybe instead of "styles", your message was "feed_recent" or "javascript". What in the world does it mean? Luckily, the answer is really simple, it's just a matter of figuring out where to find the answer.

The details are all in your error message. It will tell you what was being published: Usually a particular tag within a specific template. That's the template you need to go to, and in that template, you need to check for the missing value, to determine what you need to do next.

Movable Type version 3.2, released in April of 2007, included a plugin known as SpamLookup. This plugin was able to submit comments to a lookup service (hence the name of the plugin) to one of a number of blacklist services, which in turn would determine if the IP address used for the comment submission is suspicious, allowing you to better judge if you had encountered a spam comment.

However, way back in May of 2007, Six Apart released a guide on updating your spam filters for the plugin. Without the change, your comment-posting process will be horribly slow, because the process has to timeout before it will continue. Also, the default for the other service probably isn't the best (though that isn't mentioned). Want to know more? Read on!

From time to time, I am asked how to display related entries on a Movable Type-powered site (and I frequently have to look it up myself), so I figured that I'd document it here.

While there are plugins that do the work, they typically depend on another value (usually categories, keywords or tags - sometimes a combination of those), and the problem with those is that they depend on humans to first enter that value. If you forget to do so, then it means the related entries won't work until you go back and enter it. If you enter the wrong value, you get the wrong results. There has to be a better way. Luckily, there is.

If you've been reading the blog for the last little while, you know that I've been hanging out on Plurk recently. Naturally, that means that I have been playing with Plurk as well, and trying to integrate it into my daily routine. When I used Twitter, it meant that I used Twitterfeed to create Tweets from the entries that I posted here. The problem is that Plurk has no such interface, as it doesn't have an API, so no such solution exists.

Luckily, Plurk power-user Ryan Lim came to the rescue. Not long ago, he released RLPlurkAPI, a PHP-based API into Plurk. It's not an official API, but it's good enough to allow outside services to access Plurk from the outside. It isn't Twitterfeed either, but what it did was allow people such as myself to see that it's possible to access the system from the outside. Unfortunately, I still couldn't do it, and I needed some more help.

If you read the post where Andy talks about releasing the Automattic stats plugin for self-hosted WordPress, he mentions a few things that make it interesting - notably that the system "only supports WordPress". Then he also mentions that anyone with a thorough understanding of WordPress and XMLRPC could clone the plugin to make it work with other platforms.

I don't claim to have such knowledge (of either WordPress or XMLRPC), but I think I've managed to do just that. Make it work with another platform, I mean. Some time ago, I managed to get the blog registration piece working, which really wasn't that hard - you simply pass some data to the system along with your API key and in return you get your blog registered. Not too bad. Then I ran into a speed bump of rather monumental proportions. Actually it wasn't that the bump was particularly large, it's that I hit it and then had about a million other things to do. So I put everything on the back burner.