Mastodon Test 2

My first test I configured literally nothing, so that was out of the box ActivityPub plugin formatting. There is the ability to adjust it some so I am trying that with this post. Eventually the bulk of these posts will be my podcast episodes so I am trying to find something that will work with that.

My first inclination was to set it up with hashtags, link to the blog post and an excerpt. I realize that I was still thinking in autopost/push type mindset. As I (barely) understand the protocol, the character limits in toots is defined by the instance. I’ve seen people posting about how to raise it per instance. Since WordPress is the “server” it probably isn’t limiting my characters so let’s just show the whole damn thing. I’m now excited to publish the next episode so I can see what the formatting looks like on Mastodon. I tried to push the last episode but updating doesn’t seem to do it, only new posts.

One thing that seems to be missing from this templating language is the ability to put in the “Show More” break. I can add it from the Tusky Android app but not here. If that existed, my template would probably become:
Hash tags
Show More
Full text of the post

Questions for Podcasters

Hey fellow podcasters,

I am setting up two new podcast sites right now. I get to start over clean without all the cruft of my EGC site. If you had to do it all over again, what WordPress podcasting plugin would you use? I have tried a number of them over time and am not sure which one to start over with. Powerpress? Podcasting TSG? Podlove? I am using Podpress on EGC and it is fine but I many not know what I am missing.

Thanks friends.

Positive WordPress Plugin News

Last January, I tried an experiment over at Grand Strand Bloggers with the Digest Post plugin. I have a Yahoo Pipe that gathers together all of the RSS feeds for all of the blogs in the GSB blogroll. This plugin is supposed to take a feed and in automated fashion make a summary post of all the items in that feed. I set it up last January and it sorta kinda worked. It did actually collect the links and correctly create the post in fine fashion, it just didn’t fire off the way it was supposed to. I took the guts of it and rewrote it as an ecto plugin that I’ve been using (when I think about it) to do a semi-manual version of the same thing.

On Monday, I upgraded all my blogs to WordPress 2.8. I was shocked and pleasantly surprised when the Digest Post plugin actually fired Tuesday morning, making a big ass post. I was even more pleasantly surprised when it did it again today, and started up from the point the previous one had left off. At this point, I’m expecting a nice concise round up post every day with the previous 24 hours Grand Strand blog activity. That is just so nice that it might make me weep. Whatever in WordPress was making it fire between sporadically and never seems to have been fixed and now this is back on track. After the problems of the last few days, it’s nice to have a plugin I had written off spring to life and work better than ever.

Popularity Contest: WordPress Plugin Hall of Shame

Yesterday I had my first ever bad experience with a WordPress plugin auto-upgrade and it was really really bad. I did the auto-upgrade of the Popularity Contest plugin, first upgrade in a very long time. These upgrades have become so routine that I don’t much think twice about executing them any more. I clicked the link and BANG my blog stopped working. Completely. Totally. All pages, including the wp-admin pages, said:

Error: Popularity contest cannot be installed.

I had to move the plugin out of the directory in order to get anything to work again, then I had to clear my SuperCache as the non-functioning pages had been cached for some of them, like the all important front page.

This morning before work I took a few seconds to look at it, and I found some egregious code. The plugin has a get_settings() method which has this code (forgive the white space munging):

// If the DB tables are not in place, lets check to see if we can install
if (!count($settings)) {
// This checks to see if we need to install, then checks if we can install
// For the can install to work in MU the AKPC_MU_AUTOINSTALL variable must be set to 1
if (!$this->check_install() && $this->can_autoinstall()) {
$settings = $this->query_settings();

if (!count($settings)) {

// trigger_error('Popularity Contest Cannot Install', E_USER_WARNING);
wp_die('<b>Error:</b> Popularity contest cannot be installed.');

Now, this appears to have a couple of really bad problems. One, it is doing wp_die for a configuration problem! Seriously, WTF? I think that violates the contract between a plugin and the main WordPress process. If you have some sort of problem, die gracefully rather than just shutting down the whole blog. Second, it seems like my case will always trigger that die. The $settings array comes from:

select * from wp_ak_popularity_options;

I had the plugin previously installed so that it didn’t need to install but I was running all default options so that my wp_ak_popularity_options table was zero rows. At this point, the plugin decided that was such a bad problem that it needed to shut down all of WordPress including the wp-admin pages you would use to create those option records. Oh boy.

What I did to get back running was to comment out the wp_die line. At that point, the plugin actually installed and I was able to get to the settings page for it. I did a “Save” even though I had all default values just to get rows into that table. Now my table has 4 rows in it and presumably even if I do another automatic upgrade this one should keep working. This plugin is now on my watchlist, though. It’s burned me hard once.

I think for people having this problem just commenting out the wp_die line will get most or all of them back up and running. I’m not sure what the thinking was that went into this logic but it was a really terrible bit of thinking with really severe consequences. Not to the WordPress plugin author community: calling wp_die is really fricking serious. Don’t do it unless continuing to run will delete the blog. Otherwise handle your problems yourself.

Update: For bonus points in the version I have installed, the setup page gives you code to cut and paste into your template that doesn’t actually work. It tells you to use:

show_top_ranked_in_last_days($limit, $before, $after, $days = 45)

when in fact the actual function is:


The former is an internal one not available outside the plugin. The latter is the external API call that is available to your template.

Update 2: I’ve opted to remove the plugin as well as the WordPress Mobile Edition by the same guy. The author takes shutting down my blog too lightly, and defends this whole thing with “hey, it’s a beta so what do you expect?” I was installing via the Plugin GUI on my WP Admin page. If it was risky, I had no way of knowing that unless seeing a “b” in the version number was supposed to communicate that. Over on his plugin page, Alex King defends the use of the wp_die call as being reasonable. I don’t see that rendering the blog unusable is a reasonable way to deal with it, even if the configuration tables were missing. His code wasn’t even checking that, as it treated an empty table as the same as a not-created table. Bad juju.

Alex, thanks for your time in creating this plugin. I appreciate the use I got out of it for the time I did. However, my blog is important to me and I can’t have plugin upgrades shutting it down.

An Escrow System for WordPress Plugins

Over on Grand Strand Bloggers, I want to try out this plugin that automatically makes digest posts. That is perfect for what we want to do. However, the plugin I”m trying to use is really half-baked and appears abandoned. I’d think about adding to this with our needs at GSB if there was a way to do so.

That plugin also uses the WordPress cron functionality. I have installed on several blogs the WP-Crontrol plugin to give better access to this system. However, it seems like WP has had API drift that makes it no longer work right. I can see the cron jobs but no longer edit them or execute them like I used to be able to. I’d also be willing to work on that one too.

Is there a formal process for taking over abandoned WP plugins? Suppose I have a patch to submit and the original developer is no longer involved or completely incommunicado. Can someone from eventually give me access to SVN or commit patches for me? Or do I have to take their code, fork it and just work from there? It would probably be nicer to do it down the path of the original plugin, so that everyone’s automatic updaters allow them to get the newer versions. Still, anything is better than nothing.

WordPress 2.7

I upgraded this blog to WordPress 2.7 tonight. It took me literally 3 minutes, and that includes downloading the backup files. I was using the WordPress Automatic Updater plugin, but apparently this is the last time I’ll need that because the functionality has been rolled into WordPress itself. This is all to the good. It’s not like WordPress upgrades were ever that burdensome but being able to do this all with a click or three really gets rid of all the procrastination possibilities, which is really helpful when security fixes come out.

I’ve only had 20 minutes of run time with version 2.7 but so far I’m liking it.

Settling in to 2.5

I hope this is the last post about WordPress and the upgrade migration. The issues seem to be shaken out. If you do see something that doesn’t work right, please drop me an email. Tags are now integrated. Andrew Herron wasn’t sure if the tags I had set up from Ecto would actually push to and be recognized as WP tags. I can tell you for sure they are. I added tags to my template so that you see them on posts and for fun put a tag cloud in the sidebar. I went back and found that highlighting a huge bunch of posts in Ecto (like, a whole year’s worth) and hitting publish would resubmit the articles as edits including the tags, so I did that. The downside and one that didn’t occur to me ahead of time is that it also re-pinged and/or trackbacked many linked posts. If you get a trackback from me for a post you wrote years ago, that’s why. At this point I’ve done them back to the beginning of 2006. By this evening I should have done the full history of the blog, at least the portion that had tags. Whenever I switched from blosxom to WordPress and started using Ecto, that’s when I started tagging.

The nice thing about having the tag cloud on the side is that it gives me a good, positive reinforcement reason to be rigorous with tagging. If I am, then that will correctly reflect the stoichometry of what I’m interested in over time. It has been patchy up to this point but I’ll shoot for full tag coverage on all new posts. Let’s see what that does for us.

Next stop, posts about the whole rest of the world that isn’t WordPress 2.5!

First WordPress 2.5 Impressions

So far so good on the WordPress upgrade and host migration. Ideally, one would be doing these things in smaller, more manageable pieces rather than all at once, but I had no choice. Once WP 2.5 was released, I no longer had the option of installing an older version with the Dreamhost installer so I just did it myself in a weird mishmash of the automatic and manual. It seems to have worked.

Thus far only one person has mentioned having any problems commenting, and that person also had a success so I’m not sure if it was just a fluke. The “Your user agent string has changed” error has not come back, so that’s great. I think I’ve figured out the WP tagging and added in a cloud and a bit for my themes to display them. There are old posts that I have tags in Ecto but not WordPress. If I find some giant bank of time, I might go and resubmit all the old posts. Don’t hold breath.

More later, my food is here. Mmmm, gyro platter!

Update: My woes with the password continue. I couldn’t submit this post at lunchtime. I have to keep resetting the password of my ‘dave’ user and I don’t know why. I’ll save it, all will be fine and then the next time I go to use it, “incorrect password.” That is really getting to be a big drag fast.

Tag Test

I’m just curious about this. Ecto has tags on the side that I use occasionally, but they insert into the bottom of the post as a footer type deal. Now that I’m a version of WordPress with tags built in, is the whole deal hooked together well enough that these will just recognized as WordPress tags? That would be cool but I’m not holding my breath.

Popularity Contest It Is

I added in the sidebar the results of the Popularity Contest WordPress plugin. If you look at a category, month or year view you’ll see the most popular posts that fit those criteria. Otherwise, you’ll see the most popular of all time. All time I tell you!!

Actually, there is a three-way split in the distribution. When I first fired this up, all the most popular posts were the ones with lots of comments and trackbacks. Today, it is all the ones that are on the front page right now. Anything that doesn’t fit one of those two is pretty far down the list. Over time this will even out but it will take a month or three for the all time posts to make any sense. I like it, though. It seems neat and like the post I made yesterday, all those SEO tool plugins all have the same laudable goal, making it easier for someone that finds your blog by accident to get to material that might interest them.

WordPress Plugins for XMas

My buddy Jason is going WordPress plugin crazy. To be honest, I hadn’t heard of most of these but I’m willing to try most things. I’ve installed the Popularity Contest and Related Posts, just to see how they work. The popularity numbers are kind of bogus right now, since they only have a few hours of page view data. Mostly the rankings are based on the comments and trackbacks right now, but that will even out over time. I’ll add in a “most popular posts” thing in a sidebar at some point. Once you get things as busy as they already are currently, why not go for broke? Let’s busy the living hell out of them!

BDP Referral Tracker Update

I noticed recently that things with the referral tracker in the sidebar didn’t seem to be working right. For example, despite a crapload of incoming traffic in the Ze-slide, none of those ever got counted. I went to look at the site for the plugin and I realized that the current version is 1.0.6 and I was using 0.3.9 . The bummer is that to upgrade required migrating it to a new database table and losing all the old stats. So, as of this evening the clock is reset and we are starting over at Day 0. I’m still fiddling with configuration but we’ll get it straight soon enough.

WordPress 2

When I set up the Uplifter weblog I downloaded the current WordPress and went to work. That happens to be version 2.0, and I have to say it is quite sweet. I love the live preview of themes that lets you “try before you buy.” It sure beats the old method of changing them in public, and deciding which one you like on your live site. All in all, I pretty much like ever single aspect of it. I’ve been avoiding upgrading the existing sites because I’ve heard reports of it being hairy and I’m not in any particular hurry. Still, I’m highly impressed with the improvements from 1.5.X to 2.0. Nice work, WordPress folks!

One thing I have done is installed and/or activated Akismet on every blog I control. I think it is included by default with the 2.0 download. Very nice, I haven’t had to moderated a comment spam on any blog since I started. I had been doing between 30 and 100 every single day, and since flipping that switch across 3 blogs there has been a 0% false positives and 0% false negatives. I’ve been using Razor on my email spam for years highly effectively and now this brings that same technique to comment spam. Sweet day in the sunshine, it’s about time.

New Plugin

I liked the referer plugin I had on the old blosxom blog, and I found a similar plugin for WordPress. At the bottom of the right sidebar you should find all the inbound links as well as some stats and such. I’m not 100% sure I’m going to keep this, but for now I am playing with it. It does help me discover inbound links faster than Technorati or Feedster sometimes. The downside is that it really makes my blood boil when I get referral spam. There are some anti-spam measures in here, but nothing can protect from those spam pages full of actual links in to you that have been harvested from Google or wherever. If/when this stops being fun, I’ll yank it out but for now I’m enjoying it.

Comment Spam

The ongoing arms race with comment spammers is part of what made me leave blosxom for WordPress. Last night I got the first bits of spam on the new blog, all of which went into the moderation queue and were dispatched and marked as spam with one click of the button. I’ve never been so happy to be spammed in my life. I know the wait to be moderated the first time you leave a comment is a drag, but I have spent hundreds of hours of my good time fighting and cleaning up after comment spammers previously. This is much easier, so I hope y’all bear with it. After only a few weeks, enough people are repeat commenters that I’m only moderating about one in five comments anyway. WordPress rocks!

Clambake Episode for May 30, 2005

Here is the Bittorrent link and direct MP3 download for the EGC clambake for May 30, 2005.

Two in two days, unusual frequency for me lately! I talk about money; I play a song by Bullet Called Life; I hail a fallen comrade; I play a song from Camper Van Beethoven; I talk about the good life, keeping up on email, using WordPress and Audio Hijack Pro; I play a song from the Grey Book Lectures radio show and mosey.

This episode is sponsored in part by the fine folks at iPodderX! Don’t forget, you can fly your EGC flag by buying the stuff package.

This show as a whole is Creative Commons licensed Attribution-NonCommercial-ShareAlike 1.0.

Links mentioned in this episode:


Big WordPress Omission

It seems from my early work that there is one huge omission in the out-of-the-box WordPress install. It doesn’t do the Last-Modified header, on either the web pages or the RSS. I’m of the opinion that everything that emits or reads an RSS feed MUST use or honor this header. When you have a few thousand people subscribed to your feed, why not make it as simple as possible for those ones that check more frequently to know when not to download that 50K? That was one of my first additions to get_enclosures beyond the basic – storing a cache of when the last fetch of a feed was received and setting the If-Modified-Since header of the HTTP connection. This crap exists in the protocol, so why not use it?

I don’t know if there is a plugin that does this, but I know that if not that’s one of my first orders of business – to write one.

Update: Now I see. The themes I’m using are all using as the link to the RSS feed, but if I use then you do get the header set correctly. False alarm, citizens. Sorry about that.