I’ve been blogging regularly since 01 August 2006: every day for that first year, five times per week for four years after that, and at least once per week since 01 August 2011. Now it’s time for a break.
I’ve grown increasingly unhappy with WordPress, despite the fact that it’s served me fairly faithfully for over seven years. The main reason is performance—this blog is now just too slow to load. There are definitely things I could do to tackle that, but having to do so is a sign that it’s not the right platform. The other reason is philosophical—I no longer think that a web application backed by a database is the best approach for a blog.
Spam comments to my site have reached ridiculous levels over the last few weeks; in the last two weeks there were over 35,000 messages awaiting moderation and another 10,000 or so marked as spam.
I don’t have the ability to moderate that kind of volume, so I’ve taken a couple of steps to deal with it.
A discussion of common and custom blog features, and candidate applications that might provide them.
Observant readers may have noticed that tadhg.com was unavailable for much of last week, from Sunday 17 July to yesterday, 23 July. This affected my email as well as my blog, so if you sent me email in that period, it’s entirely possible that I didn’t get it (and, therefore, you should send it to me again if you haven’t heard from me).
I upgraded this blog today, the first time I’ve done that in over a year. Everything looks okay.
I’ve become slightly less paranoid about it; I still back everything up first, but I no longer preview the upgrade in my development environment, instead being prepared to restore from backups if something goes wrong. This might not be wise, but I’ve been lulled by the smooth upgrades the past few times.
Sometimes it’s the little things that make life better, the small victories in ongoing daily battles.
I recently did an overhead squat at 185 pounds (or about 84 kilos, or 13 stone 3); I weigh a little under 180 (that day, 178 pounds) and so that was a bodyweight overhead squat. It actually represents two achievements, because in order to get the bar into the overhead position, I had to push jerk it from behind my neck to locked out above my head, which counts as my best push jerk ever, albeit an unorthodox one. From the overhead locked out position, it’s down into a deep squat and back up; the harder part for me was going down, as once I was at the bottom it wasn’t hard to keep my balance coming back up.
The rate of spam comments I’ve been receiving has gone utterly nuts recently, and as a result I’ve decided to try out adding reCAPTCHA to the comment forms on the site. I apologize for this, because I know it makes adding comments a pain and I’d prefer to make it as easy as possible to add them, but the wave of incredibly annoying spam comments is just too much to deal with right now. Please let me know if you have any serious problems with it.
After a highly enjoyable, productive, and extended period, it’s time for me to return to the world of paid work.
I’m quite happy with the things I’ve done during my time off. Many of them are important only to me, but then, it’s been my time off.
I upgraded this blog to WordPress 2.9 today, and it appeared to go entirely smoothly. Please let me know if you notice any breakage.
wpbeginner has a list of their favorite WordPress 404 pages. There are some good ones in there, but none of them do what I think they should do—that is, as well as provide helpful links to popular pages, also provide a list of guesses about where the user was actually trying to go. Coincidentally, today I also read this excellent article about finding the longest common subsequence between two strings. So, at some point, I’ll improve my blog’s 404 page so that it calls, probably via asynchronous request, a Python script that checks the user’s requested URL against all valid URLs WordPress knows about, and then suggests to the user whatever the closest matches are. I’m somewhat surprised that this isn’t done more often, but it seems that far too many sites are really blasé about 404s.
Last week I posted about my setup for going from reStructuredText to WordPress. It involved a shell script, some Python scripts, and the pbpaste and pbcopy commands. It worked, but it was a little on the convoluted side.
Now I have a slightly better process, and one that I will have used to publish this post.
I wrote about moving my writing over to reStructuredText on Sunday, and since then I’ve moved both my morning pages and my blog writing to it. The latter proved more complicated, primarily because I wanted to make the process almost as easy as writing pseudo-HTML (which is more or less WordPress’ native format, and kind of mine, too, for the last several years). With some hacky wrangling, I’ve managed to set that up.
I did some work on the PyWebSF site, so that it looks rather better than it did with the default WordPress theme. I altered a pretty good WordPress theme called Arras Theme, which I was fairly impressed with. As a reminder, the first meeting is tonight.
Today I upgraded this blog to WordPress 2.8, a relatively smooth process. I ran into completely unrelated problems (hitting the process limit for my shell account) that derailed things for a while, but the WordPress upgrade itself was smooth.
I use Subversion to upgrade, first using
svn export --force http://core.svn.wordpress.org/tags/2.8/ .
in my development environment, seeing if things look okay there, then checking in the 2.8 changes to my own repository (the only niggly part because I neglected to clean the dev environment of changes before the export, so I had to look through things to see what was part of the upgrade), backing up my live database, and then checking the changes out to the live environment. It all looks fine, and hopefully will continue to function normally.
I made a WordPress page containing a list of all the fiction I’ve published on this blog. I had to do this by hand, because it appears difficult to get a reasonable list using various WordPress approaches (such as tags). The page I created is hardly a masterpiece of user interface design (I hope to improve it significantly over time), but it’s better than what was there previously.
The various blog moves and reworkings seemed to reduce the amount of comment spam I was getting, but now it’s gotten out of hand once more, so I’m resuming the use of the Bad Behavior WordPress plugin. Hopefully this isn’t something any legitimate readers or commenters will notice, but if for some reason you find it affecting you, please let me know via email.
I finally got around to writing up docs for, and then packaging, the two WordPress plugins I’ve finished recently:
I’m currently looking at support for series in WordPress, and am considering either writing my own plugin or using/forking the Organize Series plugin.
I’ve made some changes to my Related Posts by Tags plugin, so that it’s now possible to add the list of related posts to the RSS feed entries. As I was experimenting with this, I realized that I wanted the RSS entries to show the tags for a post as well, so I wrote a (very simple) plugin to do that, too.
As a result, those of you reading this via RSS will now see a list of tags at the end of posts, followed by links to related posts. Please let me know if this doesn’t work as intended, or if you have other comments on the change.
I’ve had a Recent Comments section on the front-page sidebar of the site for quite some time, and decided it was time for an upgrade. The old version was straightforward: it displayed a list of the most recent comments and who made them. What I decided I wanted was, rather, a list of the posts with the most recent comments on them, how many comments there were, and a list of the people who made the comments in timestamp order.
One of the first things I did with my resuscitated blog was to figure out how I could develop for it in a reasonable fashion.
After refusing for quite some time, I’ve decided to give Twitter a try. This might prove short-lived, but we’ll see. I like the concept of easy status updates and of disconnecting them from a larger, clunkier framework, e.g. Facebook.