I played and tested. Played and tested. Played and tested. Then I made some decisions, followed by more playing and testing.
In the end, I realized that the overly manual way I was doing things before was biasing me away from doing anything now. And such was the bias, I was falsely interpreting it as it preventing me from finishing, aka the new standard for seeing whether I keep doing something as part of a larger project. I finally decided to add 7 variables as custom fields.
But first, an unrelated but annoying problem
To avoid going into too much technical detail, I have a problem with my website regarding memory load. I am running a slightly higher-quality personal site option, but I’m not running anything that is commercial quality. And that means that I often find myself hovering between 25 and 40 workable plugins. Right now, I have 31 which starts to slow things down on the admin / back-end when I’m editing.
The new approach has me putting in seven custom fields. What I wasn’t expecting was to get into my second book review and find there were already about a hundred OTHER variables/fields already there, many with redundancies and duplicate entries, and virtually none of it useful. Some of it was remnants from the two moves of BRs from site to sites. Other remnants were from previously used plugins that I tested at various points; they added custom data, and when I deleted the plugins, they left data behind. Some of that was accidental and poor design; others were intentional so that the data would still show properly even without the old plugin running. Except that I had later deleted that part of the post, so it wasn’t needed any longer. A couple were Review plugins, others were social media link managers.
I am anal-retentive, so of course I thought I would simply delete the other fields. Except there’s no easy way to mark them and delete a bunch; you have to delete them one by one. No problem. Click. Wait for refresh. Click. Wait for refresh. Click. Wait for refresh. Each time was taking maybe 5-7 seconds each. Times 100 remnant fields, and you start to see the boredom.
I went looking for a plugin to help me manage it all, but most were just replacements, not ones that would manage the existing fields. You can do it through manual editing of the databases, but I try not to mess with the database directly. I found nothing useful. Sooooo, I gave up. I went along my merry little way, decided I didn’t care about the huge list of fields, and just added my new ones.
Except adding each one also took 5-7 seconds to add and refresh. Sigh. The first BR had NO remnants, but 2 through 10 did. Between testing and playing, some editing, giving up and just adding, it took me almost 2 hours to do the first 10.
Then I was doing something else, and some wording popped into my head. I didn’t want to bulk edit custom fields, I wanted to bulk DELETE custom fields. A bit of googling around WordPress options later, and bam, I found a plugin called WP Bulk Delete. When you first run it, it looks really scary as there are a whole bunch of tabs to let you mass delete pages, posts, etc. I definitely did NOT want to do that!
However, on the first page, it provided options to run a “cleanup” on the website’s fields across all pages and posts. It would delete a lot of unused fields, particularly duplicates (yay!), and a few other things. I made a backup and ran the cleaner. A large number of extra entries were killed. I went back into the first 10 BRs again, and voila, almost all of the old data was gone. My new data was still there, along with about 15-25 other items. Generally, five are tied to some formatting, another five for old social media links, and then another 10+ related to an old review plugin. Except now, when I click on those to delete? It deletes it and refreshes in under a second. Totally manageable.
I’m back in business, with a much cleaner digital workspace.
Which fields did I create?
I can already sort on publication date / date of the review. All of the posts are already set to the review date, even some old ones. For example, I have some reviews that I wrote in 1998, but I never got around to putting them online until 2010 or so. When I published them, I set the date of the post all the way back to 1998 aka when I first wrote them.
Because of the messed up dates above, only the recent posts show up in numerical order. I had published all of my archives by #200 or so, but up until then, some of the things I went back and posted had higher BR #s. For example, a post I wrote in 1998 that I didn’t post until 2010 could have had a BR # of 00067 — the BR Number is the order in which I posted them online. It is part of the title of each BR post, but I added a field so I could sort them in numerical order.
I mentioned in a previous post that I can already sort all the posts in alphabetical order, because all of the BRs start with the title. Except for a small niggly detail. A title like “A Purple Place For Dying” or “The Staked Goat” would show up in A or T respectively. To get around that, I added a field for title sort order. I said in my previous post that I wasn’t going to worry about that, but it turned out to be easy peasy, lemon squeezy. It takes less than 10s to add, so I went ahead and included it.
In a similar vein, the author’s name is buried in the title of the post, and can’t be accessed easily. Yet I might want to sort by author’s last name, so added a simple field. I made a small tweak to the info in the field though…if I have Jeremiah Healy as the author of say three books, I don’t just put healyjeremiah in the field — I tack on the year of the publication (1984, 1986, 1984, etc.) so that when I sort by last name, it will get to Jeremiah in the “Hs” for Healy AND list them in ascending chronological order.
One thing that I didn’t have on the website previously was any way to sort the better books aka those that I gave a 5/5 to, for example. I added a field for rating and it will now list all the ones from 5 stars down to 1 star.
The year of publication appears in the title, but I couldn’t sort on it before. In practice, it is more about seeing the oldest stuff that I’ve reviewed, or the newly published material.
I added a field for genre but I confess that I may have done that wrong for the setup. I initially only wanted to differentiate between Fiction and Non-Fiction. I have another “sort” that is a bit more genre-related, but I do that separately. I have two tabs, one for fiction (main) and a shorter tab for non-fiction. Perhaps I didn’t mess it up so much as misname it. I did it in part because I save my books digitally in two different libraries based on fiction or non-fiction, in fact, and I was mostly replicating that approach.
For genres, though, it is more often for me about series within a genre. For example, I created a field for Series but when I actually build the page for series, I have a whole bunch of sub-lists that are generated based on the name of the series. So far, the sub lists are:
Standalone
Action
Jack Reacher
Criminal
Easy Rawlins
Keller
Forensics
Dr. Temperance Brennan aka Bones
Lawyer
Nina Reilly
Police
Dutchman Historical Mysteries
Inspector Regal
Private Eye
John Cuddy
Jeri Howard
Philip Marlowe
Jennifer Marsh
Sunny Randall
Sleuth
Travis McGee
Barbara Simons
Hannah Trevor
Spy
Amelia Pearce
Thriller
Nelson Demille (not sure if I coded this correctly)
Paranormal
The Mediator
1-800-Where-R-You / Missing
Star Trek
The Next Generation
Deep Space Nine
The New Frontier
Voyager
I’ve updated 40 or so book reviews to the new approach. Of the list, ten are ones that I COULD decide to expand and do something differently for genre. Decisions, decisions. It’s pretty easy to re-code ten if that’s what I want to do. And then all the various books would be separated by genre, even the non-fiction ones. Hmm…I’ll have to noodle on that one a bit more.
In the meantime, it all seems to work well so far. And with the majority of “extra” fields already cleaned up, it’s a much faster process now. Plus as I get more and more categories created, for the series/genre combo I mean, the faster the overall coding goes — if I code something new for Travis McGee for example, I don’t have to build the query into the list page; it’s already built and if I code a review as “travismcgee”, it auto-adds itself to that category.
For those who engage in any sort of IT world, or anything that comes with a manual, the general joke is that 90% of all problems would be eliminated if you just “read the f***ing manual” (RTFM).
A few weeks ago, I noted that I had solved a chron problem with my website. Well, to be candid, the chron problem apparently solved itself, upgraded itself beyond its own obsolescence, or it just evaporated as a problem. Whereas I had problems previously where things I told it to post at say noon wouldn’t post at noon, or even at all until someone refreshed the website thus triggering an update, the chron suddenly started working. If I scheduled something for 12:30 p.m., it would publish at 12:30 p.m. It I said, 4:30 p.m., it would go at 4:30 p.m. More importantly, if I scheduled things so one would publish at 8:30 a.m., one at 12:30 p.m., and one at 4:30 p.m., AND had it go to my Buffer app to share things to social media at 9:00, 1:00 and 5:00, then lo and behold (!), it would indeed publish on time and Buffer would post it to media as per its separate schedule.
So I went back to looking at quotes and humour, and figured out a way to post them as pictures / images, with the text in the ALT area so it would still get indexed (i.e., if a joke refers to nuns, but the joke was a picture not text, a search for the word nuns would NOT pull up the page; if instead, I also add the text to the ALT text for the image, it will indeed find the word and show me the relevant post).
So why does all that matter?
Because before Chron was working and before I had images to share, I basically had to do things manually. If I wanted to post at 9:00, I had to go online and post at 9:00. If I wanted to post at 1:00 p.m., I had to go online and post. Otherwise, the people who subscribe to my website (rather than on social media) would get all the posts at once. Soooo, if I pre-posted a month’s worth of quotes? They would all go out at once by email. Not the best plan. Instead, I generally held myself to one post per day, and let it go out by email at whatever time but would tweak the settings in Buffer so it would look right. One day ahead. If I was too tired the night before, nothing went out.
Yet I’ve always had a bit of a challenge with sharing images with my posts to social media. From a WordPress site, there are essentially three possible images to choose from:
The featured image (FI) aka usually a smallish image next to your post … because of the way I designed my layout, the FI image sits outside of the main text to the left above the date;
An image embedded somewhere in the text; or,
An image embedded in the text and tagged with OPENGRAPH settings as an image to share.
Some social media sites have a priority of 1, 3, 2 for which image it will choose; others will do 3, 1, 2; and still others will do 2, 3, 1. There has been some challenge at times sharing what I want to share. I also don’t have some big IT department to figure this out for me. Because my FI photos sometimes are the ONLY photos in a post, I want it to use that image if there aren’t any others. When I do book reviews, I also include a copy of the book cover — usually category 2 above. On occasion, I insert other images and depending on how they are embedded, sometimes they use OPENGRAPH tags and sometimes not. Sigh.
Now, things get a bit more interesting. I mentioned above that I use Buffer as an online app that takes my posts from the WordPress site and acts as an intermediary with various social media sites — Facebook/Meta; Twitter/X; BlueSky; and Threads. And then gives me a fourth place to store photos for the post, ideally for sharing with social media.
I was struggling to get the right image to show up, and I frequently would still have to go in and edit the Buffer queue so that the right image would show. I would put in the photo I wanted into the #4 slot, but it wouldn’t show in the post. I read the text that went with it multiple times, and it didn’t seem to apply to what I wanted.
Ultimately, with this plugin, I now had FOUR places to put a photo and then four possible settings for the actual sharing to social media, so 16 combinations in all. I wasn’t looking forward to trying them all, to be honest. I had tweaked something last week to make my ThePolyBlog site look like what was posting from PolyWogg.ca, but it made it worse, not better. The quotes and humour “images” were no longer showing as previews in FaceBook — it was just the featured image (FI), so if anyone wanted to see the joke or quote, they had to click through to see it. Exactly what I was trying to avoid — I wanted the image versions to be more easily shared than forcing a click-through.
I decided to do a bit of work on it on Sunday night, and I figured the best option had to be somewhere in Option 4. It’s a separate area, as I said, where you can tell WP that these are the photos you want to share. And in fact, it is designed to share multiple photos, maybe even a little mini-gallery if you want. It wasn’t limited to one photo.
There was some generic text about adding images, but it recently updated the language on the screen. It now says:
The first image only replaces the Featured Image in a status where a status’ option is not set to “Use OpenGraph Settings”. Additional images only work where a status’ option is set to “Use Featured Image, not Linked to Post”.
I read that text a couple of dozen times over recent weeks and it was not really jiving. For sentence two, it’s talking about “additional” images but I didn’t have any additional images, I was just putting in one. Sometimes it took it, sometimes not. For the first sentence, you may notice that it is kind of badly worded.
While it says the first image replaces the FI when it is NOT set to “use OG settings”, but so what? I don’t really care if it replaces the FI when it isn’t set to that, I want it set to that. Don’t I? But then it hit me that the two sentences sort of work together.
My general posts have a Featured Image. The Open Graph settings are designed to add OG codes/tags to the Featured Image. So it should use FI and OG. Great. Except you have to change the settings from using OG to something where it is NOT using OG. Wait, what? Oh yeah, that’s the second phrase. If you set it to use an FI that is NOT the main FI linked to the post, then it will use the first image saved here in this box.
So while every website advice about sharing images says to use the regular FI and add the OG settings, this one tells me to NOT use the FI, not use the OG settings, and to use a different setting that doesn’t sound right at all. It goes against everything obvious in the approach. But, ultimately, it totally overrides letting the social media sites decide between #1-3 and tells it, regardless of what else is going on, just use whatever image I tell it to use in this setting (#4).
Bam! All four of my social media posts shared perfectly the next time. A book review with a cover, a quote as an image, and a joke as an image. All three “images” shared as the main pic with their posts x 4 different sites.
Because I RTFM, apparently. It’s not just a meme. The manual makes no SENSE, but that’s beside the point. It’s fixed.
Last week, I introduced TT — Tadpole Tuesday — where I blog about a current project that I’m working on. I started with some website stuff I was doing, namely putting quotes into shareable images and uploading those to the website. I had them in a different form, and I wanted to redo them to make them shareable. All good. But something odd happened on the way to the market, so to speak.
For a bit of background context, you need to know that my website is not a commercial enterprise, so it doesn’t have the complete set of bells and whistles that a whole business website might have. I have a small personal site, at a smaller price point, and a lot of manual management by me. It isn’t super sophisticated, I don’t have e-commerce options running on it, and it isn’t integrated with a warehouse for shipping products. It is a WordPress site running some plugins, and if I run TOO MANY plugins, the site stops loading everything. It runs out of memory, basically, while I’m working on it.
To load a webpage, one of two general options happens on hosted sites (full commercial or personal site).
On a personal site, my site sits somewhat dormant. It isn’t really DOING anything until someone asks it to do something. And technically, it doesn’t ask my site to do anything, it routes a request like load ThePolyBlog.ca home page; the internet routes that command to the hosting company I have my site with; the hosting company’s servers recognizes that it matches my site; and it sends a command to my personal sub-server area to “wake up and process this command”. Until it does that, my site is almost completely asleep.
By contrast, a full site runs constantly, like the hosting company’s servers do, looking to see if anyone is sending it a request, kind of like a dog jumping up and down saying, “Is it me? Is it me? Is it me? Is it me?”.
Think of it much like your own PC at home in hibernation mode vs. being “awake” and active. On your own PC, it is running much like my rented server space. It doesn’t do anything unless a timer goes off or someone taps the keyboard / loads a page.
Except for one little niggly detail. Timers would not work on my server.
I don’t have Chron for this
The timer on servers is generically called Chron. It is a traffic cop seeing which requests are coming in when, and processing them in order of their timestamp. And it has a timer. In theory, on just about every server known to exist, you can tell it that you want it to check mail, for instance, every 10 minutes. And every 10 minutes, it goes out and checks mail. Or once a day, it runs a backup. Or once every two days, it refreshes the cache. Or a whole host of regular things that require the timer to trigger them. Most run on their own, at least on most servers.
On my websites, the maintenance stuff for the servers doesn’t actually reside on my server, it sits on the hosting company’s servers. And their Chron works just fine. For my website, however, WordPress has to interface with the Chron timer, and well, they didn’t like each other very much. If the maintenance stuff didn’t run, this could be a problem, but the hosting company’s servers took care of that, leaving my server to just run whatever I want to run within WordPress. Except I don’t have anything that is time-based / schedule-based within WordPress. As I said, I don’t run anything commercial in it, so there’s no newsletter release, or content being pushed for sales notices, or carousels being updated with new ads.
Between 2005 and 2017, I was on various servers. And none of the Chrons would run reliably. In effect, my Chron went to sleep. Once something happened, like someone loading a page anywhere on the site, the server would wake up after the hosting server pinged it, it would sit up in bed, scramble to show whatever page was being requested, and then run Chron. So, if I had scheduled a post to go live at 9:00 a.m., it wouldn’t go live at 9:00 a.m. Chron was sleeping. However, if someone tried to load a page at 9:37 a.m., the server would wake up, show the page, and then run Chron, which would put the page/post live. The one that SHOULD have gone live while Chron was sleeping.
I worked with multiple support groups at different servers. For whatever reason, and it is not comforting to know this, some sites run Chron just fine and others are sleepy butts. Mine has always been a sleepy butt. I fought with it about 4 times, I think, over a 10-12 year period, but it was never a “must-have” for me. If it was, I could have upgraded my server package.
The only benefit that Chron could have given me was to allow scheduling of posts. So, again, if I was a larger enterprise with multiple posts per day and/or week, I could write them in advance (or other contributors could write them), and we could schedule them throughout the week. Jane’s post about corruption at City Hall could go live immediately while updating carousels and ads to go with it. Mike’s post about a cat family at the local park could go on Tuesday near the commute time. Blah blah blah. The comic strips for the week could be pre-loaded to post #272 on Monday at 8:00 a.m., 273 on Tuesday at 8:00 a.m., 274 on Wednesday at 8:00 a.m., and so on.
I don’t normally have that much content that I have to handle scheduling. Search engine optimization and blogging experts advice that if you want to grow your blog, you should post at a set interval, and monitor your take-up. If you know that people click through more if you publish in the afternoon, set your posts to go live in the afternoon; if they like mornings better, post in the morning; if Thursday and Friday are better than the weekend, then post by noon on Friday or wait until Monday for anything else. Have a schedule and stick to it.
Great advice, very logical. And my response has almost always been “meh”. While I would like to boost interaction so that I know SOMEONE is reading my stuff, I’m going to blog regardless. My past research shows that people click when they like, not when I want them to, and because all my sharing is through social media, it depends more heavily on when they read and what their algorithms do with my posts, than what time of day it got posted. Obviously, I don’t want to dump 100 posts in a single day. But since they are always delayed viewing anyway, I feel it is more about the type of posts I do in a single day than the content. For example, I feel like I can post at most one good medium to long post per day. Like this one. But a quote is a single image, and a joke will be a single image. I can add that to my daily feed without overwhelming the recipients. The question is how to queue that up properly.
Buffer is like the Chron I never had
I use Buffer as my social media manager. The way it works is you add a “channel” to Buffer, say your Facebook page; you go in and edit all the settings for that channel and how you want it to post to Facebook with extra words, the order of various fields, which image to use (a default image, a featured image, the first image in a post, etc.), and a number of other features and formats; AND you tell it the schedule to use. This goes back to the advice from blogging experts. For me, I said, “Okay, publish to the Facebook channel at 9:00 a.m. every morning”. That was the only time in the queue. If I wrote a post at midnight and pressed publish, WordPress would send that post to Buffer, Buffer would put it in the next slot (9:00 a.m. the next morning) and when the slot came up, Buffer’s Chron would send / post it to Facebook. In theory, I could write 20 posts over a weekend, tell it to post them, and they would be live on the website immediately. But Buffer would add them into the queue and send them out one per day for the next 20 days. It was the only time I really wanted Chron. Alternatively, I could write all the posts and save them as pending for now. Then, each day, I could open the next post, and say PUBLISH. It would go out in the next slot, likely 9:00 a.m. the next morning. If I missed a day, it didn’t go.
Except I hate having to run Chron manually. And Buffer is okay, but not exceptional. If, for example, I wrote 20 book reviews and had them all queued up, they would occupy the slots for the next 20 days. If I then wrote a great post about some news item, Buffer would add it to the queue in the 21st slot. If, instead, I wanted it to go out “immediately” or the next morning at least, it was not easy to bump it up in the queue. Oftentimes, I’d be manually moving stuff around, or adding an extra push one day.
Now, don’t get me wrong, Chron on a website isn’t a lot better. It can be challenging to move things around relative to each other. You can easily say, “Hey, send this one at 9:00 a.m. tomorrow”, but the previous one would also be scheduled to go at 9:00 the next morning, so it would go too. People get around this by embedding schedulers into their website. Adding Buffer’s functionality to the website. Except it requires Chron to run.
And the circle is complete. Buffer and WordPress work better together if both Chrons work; if only Buffer’s Chron works, it can handle most issues, but changes on the fly are sometimes more painful than I would like. I know, however, there ARE ways to go into the complex settings of Buffer and say, “Okay, here’s the schedule for the week…there’s a slot at 9:00 a.m., 1:00 p.m. and 5:00 p.m. The 1:00 p.m. slot should use this complex FILTER and send a post IF and ONLY IF it has the category of QUOTES”, for example. It’s a bit more complicated than that, and it has never been worth my time to go in and figure it all out. I don’t have that many posts in a queue usually.
Part of that queue avoidance is tied to the issue of people who subscribe directly to the website. At first, I didn’t realize this was happening, although I should have. When I did a bunch of movement of posts between websites, I essentially imported 100 posts from PolyWogg and posted them to ThePolyBlog. These were posts that had already been shared, were all old, and so I didn’t think of them as “new”. But, of course, ThePolyBlog site saw them as new and TREATED them as newly published content. It sent all 100 posts to Buffer, overloading my queue. And it sent 100 posts out to those who were subscribed. So their inboxes got flooded. With old content. Whoops.
So, when I work on my site, I have to remember to turn off the post to subscribers function. And to remember to turn it BACK on afterwards. If I queue, say, 20 quotes to go out Monday to Friday over the next month, it will work fine for Buffer. But the people who are subscribed directly will get 20 posts immediately. WordPress makes them live immediately. Grrr…
Website, heal thyself
The funny thing that happened last week is that Chron seems to work now. WTF?
I don’t know how, I don’t know why, I don’t know when. But Chron is working on my site.
As I mentioned, I’m redoing 93 Quotes posts. Which basically means I copy them to a new post, add in the image version, and repost as a new post, before deleting the old post. If I process all 93 at once, my subscribers will get 93 emails in a day. If I want to avoid that, I can turn off the newsletter feature / share post option until I get them all updated, but then my subscribers don’t get that content. It’s efficient to do all 93 at once, a lot of repetitive steps, and in about two hours, I could blast through all of it. Or maybe an hour here and there, do it over a couple of days. But again, I have to avoid them going out to the subscribers too often. Buffer can handle my social media, I just wish they had a newsletter option (something I can check on for future, it would be great to move my subscribers OFF my website overhead).
Last weekend, I set up a quote post. I didn’t want to add it to the queue and publish immediately, so I saved it as pending. And then, just for fun, I told WordPress to publish it at 8:30 a.m. I wanted to see how it would handle the subscription feeds to individuals. I figured it would eventually get “flagged” when someone loaded the website, and even if it didn’t go at 8:30, well, it would go sometime that day. I would check at lunch, and if it hadn’t gone, I’d load the page and trigger it myself.
On Monday morning, my phone buzzed at 8:30 and then buzzed repeatedly at 9:00. I was getting dressed, and it buzzed twice which I ignored and then four times in under a minute. I thought someone was calling me, which is exceedingly rare, and I’m not even a huge texter. At 8:30, my Chron had run all on its own. Like it would on a bigger server. Somehow, WordPress and my server decided to get along and Chron ran on time. Maybe it’s been able to run for five years, which is the last time I tried to fix it. Maybe it just fixed itself last week. I have no idea. But it ran.
Which then meant it sent a full copy of my post to my main email address. Then it sent a short copy of the post to my secondary email address (sending it twice in two different forms lets me see what my subscribers are seeing, and I save it in email as a backup). Then Buffer entered the chat 30m later, and told me it had shared my post with a) FaceBook/Meta, b) Twitter/X, c) Blue Sky and d) Threads. Exactly on time. Because Chron ran on its own.
Holy snicker doodles.
Do I need this functionality? No. Do I want this functionality? Sure. Will I use this functionality? Absolutely.
The first case will be my quotes. I can set up all 93, queued to go live over various days, likely Monday, Wednesday and Friday at lunchtime. I’ll also queue up some jokes to go on Tuesdays and Thursdays at the same time. I’ve already modified Buffer to give me three send times a day — 9:00 a.m. that I’ll use for blog posts; 1:00 p.m. that I’ll use for shorter posts; and 5:00 p.m. that I’ll use for reviews. All I have to do is set my Chron / WordPress to push the content live about 30 minutes before the slot. Then, the slot will accept the post and share it on the schedule set with Buffer. It probably needs about 2 minutes’ lead time to accept it, but I’ll give Buffer more like an hour.
After all the times the website seemed to break almost on its own, I’ll take the win from it fixing itself on its own. Now I just have to post the content. And as a further test, I’m writing this post on Sunday to go out Tuesday for my Tadpole Tuesday series. Fingers crossed.
I thought I was mostly caught up on all my website stuff, and more or less ready for posting various reviews to come. Recipes. Podcasts. Music in general. Books, TV and movies were already down.
So imagine my surprise when I went to do my updates for some of the other items, just to give myself a baseline for my goals and I realized that a bunch of things that were ON my website were not actually live. The music reviews were still in pending from my last migration. Podcasts sitting in draft.
I could live with that reality, sort of shrugged it off as “Oh, I guess I didn’t get to those before”. Okay, no big deal.
And then I realized that for my recipes, even though I had put a whopping TWO of them on the newly-configured site almost a year ago, I find of forgot to add any way to find them. No links in the menus. No sub-menus for recipes at all. If you searched the site, and knew what you were looking for, sure, they would have popped up. But it was a bit of a dodge to get there.
So I fixed the other six recipes that are on there AND put up multiple sub-menu options to aid in navigation.
Then I did the music ones. Plus some podcasts. And added all the sub-menu options for those too.
And just for fun, I did some book reviews this weekend too. Two fiction ones and one non-fiction. I have a somewhat large back-log of book reviews to do, and I’ve been trying to figure out how to get through them in an orderly fashion. I’ve decided they will be part of my writing goals, so I’ll try to do an “old” review of something in my “TO BE REVIEWED” pile every time I do a “NEWLY READ” review too. That means probably several years to get through the backlog, but I’m not in a rush. I’d just like to be a bit better organized.
Of course, I also had to organize my desktop files and make backups of all of this to various “mirror” sites and my own desktop plus cloud options.
I’m not done, but it was a busy weekend for updating my website. I *think* I have all the indices working the way they are supposed to, but only time will tell.
I mentioned in my post about my plans for the year that things had gone sideways on me for my website earlier in the day. I’ve got an intermittent gremlin hiding in my website somewhere. And finding the little b****** is like a game of whack-a-mole because it can be almost anywhere. Fair warning, this one is mostly for people who are interested in solving website problems aka the technical bunch.
For context, my blog (and just about every other site out there) is really made up of thirteen basic components:
The hoster’s server hardware
Hardware settings for the overall server;
The hoster’s server software;
Settings for the server space I’m using;
The WordPress application software itself;
The settings for the core WordPress application software;
A theme for the website;
Configurations for the theme;
Multiple plugins for the back-end of the website;
Configurations for the back-end plugins;
Multiple plugins for the front-end of the website;
Configurations for the front-end plugins; and,
My posts, pages, media and comments aka the content.
Most of my time and energy is devoted to #13, the content.
Over the years, I have had as many as 45 front-end and back-end plugins running (#9, 11), adding features or tweaking the look and feel here and there. The theme itself (#7) has been relatively stable for almost ten years, I love the one I use, and I have the pro version that lets me tweak it in a hundred different ways. The first six elements are the infrastructure of the website, and I tend to leave them relatively stable, upgrading pieces when I need to, etc. General maintenance.
When I’ve had major meltdowns over the last ten years, it has been one of three things:
a. I didn’t like the distribution of content across the two websites; b. Something changed in the server software that messed up my site; or, c. There was a problem with the hardware.
At times that has been where the company’s systems were hacked, or some setting got changed in the system’s back-end where I can’t see it, and suddenly my site started running REALLY slow. I switched from two hosts because their support for #1-4 was inadequate. But I’ve had an ongoing gremlin of sorts for about five years, and I don’t know where exactly it lies.
When the gremlin appears, things start running slow
As I said, I used to run about 45-50 plugins. But the back-end of my website started running slowly, so I cut it back to about 35 and then 30. Each time, it felt like I was cutting off a limb. I had spent a fair amount of time on the choice and configuration of plugins (#9-12) and liked how everything worked except when it didn’t. I eliminated plugins where there were conflicts and used single bigger / better plugins that could replace several smaller plugins that didn’t play well with each other. A few tools? I just dropped them.
Now here’s the twist in the tale. I don’t care about the speed of the front-end too much. That speed affects a lot of rankings in search engines and is part and parcel of search engine optimization, but most people coming to my site are doing so simply for MY stuff, aka either friends or family or people wanting to know about HR for the government. I’m not going to suddenly go viral because my website ranks higher in a search engine; I’m too niche for that type of concern. My REAL concern is the speed of the back-end.
Here’s what happens for any editing process. I open up an edit window, and the post appears. Then, some of the “configurable settings” for THAT post start to appear — like a featured image, categories, tags, and a few other key pieces that I need to set. Each of those uses up a bit of memory to load on the server. The amount of memory I have available on the server (not storage space, but RAM, basically) is controlled back at the #1-4 stage. As the post loads, it uses up that memory. Those are the basics.
About five years ago, I could run 45 plugins with no problem. I could even edit 10-12 single posts at a time if I wanted to do so (and sometimes, when I was tweaking the format, that made life WAY easier). Then the site started to slow down on the back end, often because of the size of the security plugins. It shouldn’t really affect the BACK-END, but it does for some reason. I cut it to 30, and it was all good again. I’m down to about 25 now. But anything I cut now is really painful to remove. Yet about a week ago, it started to run really slow in the background again.
My post loads, no problem. But whereas the image, categories and tags load within 3-4s if I’m running 0 plugins, with about 15 plugins running, it is about 8-10s for the rest of the pieces/settings to load. Slow load is still manageable at that rate, as I can work on other pieces while those elements load. Except at 25-30 plugins? Some of the edit windows NEVER finish loading. I can sit and wait and wait and wait.
I loaded THIS post, copied over from a previous one and edited it, and I’ve been working on it for almost 20 minutes of writing time. My Featured Image has loaded, while the categories, tags, and reusable images have not. I’ve installed a cache, can save the file, reopen it, and some of the rest or maybe even all of it, will load because it’s cached. (I just tested it, 40s to get my Featured Image to load, a reusable block timed out, and nothing for categories and tags yet. Closing and reopening? Everything loaded in 5s). This is NOT a resource-intensive site; it should NOT take those first times to load, no matter what is running.
Hacking the diagnostic loop
When you try to resolve this type of problem, the first two pieces of advice are (a) changing to the default theme and (b) removing all plugins.
I’ve done that so often (out the wazoo!) that I can eliminate the theme as the cause. It doesn’t matter right now whether I have the default theme or my premium theme installed, it still takes the same amount of time to load on the back-end (I can get a small performance bump on the front-end). I spent a huge amount of time this week testing out some other popular lightweight themes to see if I could get a huge performance improvement and truly eliminate my theme as the cause. I tried approximately 25 different themes, with the same result across the board. If I get above 15-20 plugins, it slows down. Unfortunately, none of those themes works as well for me as my current model. And for what it’s worth, my PolyWogg site has almost the same config WITHOUT the same slowdowns. It happens from time to time, but like I said, it’s intermittent, and NOT as frequent on the PolyWogg site as this ThePolyBlog site.
Now, everyone on the ‘net who knows anything about WordPress will say, “A-ha! it’s a plugin problem!”. Except it’s not. I’ve done the scientific method of loading them one at a time. It makes no difference. And so those with more experience will say, “A-ha! it’s a plugin conflict problem!”.
In other words, it is not one plugin causing the slowdown, it is two of them interacting with each other that is causing the problem. If you are into math and you want to test two plugins, the purest form of those tests would be N plugins * N-1, divided by two. Sort of like scheduling a tournament of 30 plugins in a hockey tournament where they all have to play each other once, which would be 30 teams * 29 opponents divided by 2 teams in each game = 435 games. Yikes.
It’s a nightmare to do that, obviously. I can’t test 435 combinations of 30 plugins, or even 300, if there were only 25. So you can hack the combo pattern. Instead of testing Plugin 1 against Plugin 2, there are a series of variables you can make fixed. For example, of the plugins currently running, I can triage the list into “musts”, “needs”, and “likes”. I have 34 currently installed, but rarely all active.
MUST HAVE
HIGHLY WANT
NICE TO HAVE
FRONT-END
AddToAny Share Buttons Display Posts Display Posts – Date View Flexible Table Block Weaver Xtreme Plus Weaver Xtreme Theme Support
Photonic Gallery & Lightbox wpDiscuz Yet Another Related Posts Plugin
Simple Lightbox Stackable – Gutenberg Blocks
BACK-END
Akismet Anti-Spam LiteSpeed Cache ManageWP – Worker Media Library Assistant OG — Better Share on Social Media Really Simple SSL WP to Buffer Pro Wordfence Security Yoast Duplicate Post
Advanced Editor Tools Health Check & Troubleshooting Nested Pages Redirection MailPoet MailPoet Premium WPForms Lite WP Mail SMTP
Dashboard Wordcount Simple Blog Stats Broken Link Checker Media Replace Press This WordPress Importer
Obviously, I can install the MUST HAVEs, which are 15 plugins and test those. Since I have to have all of them for my current functionality, I might as well test with that WHOLE group running, minus the Caching program (not much of a test if the Cache is running). With those running, everything loads in about 9 seconds. Not bad, right? Not awesome, admittedly, but it loads fast ENOUGH that I can be working on other things while those are lazy loading, so to speak. So those 15 “work”.
Then, I can try adding them either in bundles (3-4 each time) and see if anything happens OR perhaps some of the “bigger” ones in the back-end first.
For Bundle 1, I focused on the WPForms, WP Mail and MailPoet as they all work together. As I added each one of them, the site got slower and slower but not immeasurably with each one. Some added a second or two, some added no increase. I continued with other bundles of three or four at a time, seeing what they did to my load time, and as I added more and more plugins, creeping up into the high teens and early 20s, the site started to hit what I consider my magic threshold. Anything above 21 right now was bogging it down. Hello gremlin, my old friend, you’ve come to annoy me again.
Technical support has entered the chat
Oh, I know what you’re thinking. Can’t you get tech support to help? But here’s the rub. Tech support is good for #1-4 (the server setup). Occasionally, they’ll help you diagnose something where it is a WordPress configuration issue (#6). But after that? The rest of that is YOUR website and YOUR problem. And since it is almost impossible to find WHY it would be doing this, particularly as it is intermittent, it would seem like a plugin or theme problem.
I’ve also come to suspect that the gremlin has friends, of sorts. Or perhaps grandchildren.
About four years ago, the problem turned out to be a security plugin that was doing something funky on my site. I think it was mis-interacting with other plugins, but it was going into an infinite loop. It had done that before on another hoster’s servers, and they couldn’t tell me what was going on, they claimed it was my site causing the slowdown but not how. That was the last straw with them, so I shifted to a new host. Everything was fine so I thought that was the proof that it was the previous host. Except then it happened on my new server. So much so that the host contacted me and asked, “WTF you running over there? It’s slowing down the WHOLE shared server!”.
But I got lucky…one of their Level 2 supports looked, quickly realized the security plugin had created an infinite loop of calls, and disabled it for me (with my permission). Everything went back to normal. I checked online and this was a known gremlin for that security plugin. One of the biggest and most popular ones would occasionally futz itself and mess up a config file. You can disable it, uninstall it and reinstall from scratch to fix it — or just use one of the other security plugins. I was running a huge overhead plugin called JetPack which divides the WordPress community in two — those who love it and developers who HATE it. It’s really intrusive. Well, the security plugin was conflicting with it, as was two other smaller plugins to a lesser extent, and I changed security plugins and eventually dumped JetPack anyway. Unfortunately, without JetPack, I have all this other mail stuff to run just so I can get email versions of my posts when I post and allows people to get my posts as newsletter feeds. Not that I have that many people doing that, most get it from Reddit, FaceBook or Twitter. Or referrals from friends.
Anyway. Where was I?
Oh yeah, killing gremlins. Another time it was a legacy of a hack. Another time it was a misbehaving plugin that has since been patched, but I don’t let it run all the time, just when I want some specific stats.
But, as I said earlier, the dang site was bogged down so I reached out to Tech Support earlier noting that I was overloading the Physical Resources AND my IO process limit. Did they see anything that was amiss?
Often I end up using Tech Support as a catalyst for brainstorming. Since they don’t know my site inside and out, I ask questions and they give me crappy answers at Level 1, I eventually get up to L2, and then their responses often trigger something in me.
This time, while I was chatting with them, I got the standard popup in my file manager asking me if I wanted to upgrade to the next level of website performance. I didn’t, it’s almost double the price. I talked to them about it about 8m ago when it started going slower for awhile, and I would love to do it for a month to see if it would make a difference, but alas, they don’t have a trial option to do that and I’m already on a really good discounted plan. If I give it up, it’s gone. I can return to my current lower setting, but at more money than I’m paying now. There’s no simple way to test it to see if it works. And honestly, the improvements will only help me in this area, if at all. There are lots of other “perks” to the higher package but are not anything I need or want or will ever use. Sigh.
So we go around and around, ask a few questions, when I notice something amiss.
My comparison of the three models of plans that are suitable to my situation show that they have three levels of resource availability. The first is 512M, the second is 1G, and the third is 2G. For I/O processes, 2MB, 4MB, and 8MB versions per second. I’m on the middle tier, so 1G and 4MB / second. Except, wait a minute…as I’m going through the allocation process for memory, the piece that is being overloaded right now, my internal server dashboard is showing me 512MB and 2MB/s. The lowest plan settings. I double-check, and then triple-check with a comparison to PolyWogg.ca. The other site? My main site for HR that works? It’s set properly. This one is not.
FFS, is that REALLY it? I ask, they go into conniptions and embarrassment and make the switch / upgrade overnight. Today, everything is loading in 10s.
I should be mad, right?
So, it looks like most of the problem has been a misconfigured server on their end. Instead of being on the higher plan, they’ve had me on the lower plan for some time. I’ll write to the billing people, just for sh**s and giggles, but honestly, I’m not sure I can be that mad at them.
First and foremost, the error has almost NO effect on my website for the user. It’s a wee bit slower than it should have been, but not noticeable as I don’t have that many viewers. I don’t pay for the higher tier for front-end performance, I pay for the backend.
Second, I know how it happened. Way back when they got hacked, they had to create what they called LifeBoat servers. They suffered a massive attack from a former employee, something very hard to defend against if not impossible (the person had access in the building to the servers!), and they could have been dead in the water. They managed to find a way to make things work again, and while frustrating, they created lifeboats to get us up and running as fast as possible. They have customers that are WAY more important than me, but they got me going pretty quickly, all things considered. And when it was “over”, they moved lifeboats back into the main hubs. Which I’m pretty sure is when I got downgraded to the lower-tier plan for space. It shouldn’t have happened, but it’s understandable how it did.
That’s hard to generate anger around…little front-end effect and an understandable reason. Plus, I’ve seen that information in my dashboard for some time. I just didn’t realize what it meant. As I said, I’ll ask for a retroactive credit of some sort, or they’ll extend my expiry date by a month or two or three, but I’m glad that part is fixed.
Oh, right. I left out the important part. There ARE two plugins messing up my load time on the back-end.
I already knew one before I started was a likely culprit. Stackable. It’s a plugin that lets you add a whole laundry list of really good extra style blocks. Back in the dark ages before the Pandemic, I tested a bunch of “block” plugins, and Stackable won by a country mile. I bought the lifetime premium membership option. But, well, it is designed to add things to the back-end editor. Of course, it slows things down. That’s what it does when it adds that functionality. I’ve reached out to them, and they’re working on a speed improvement, but for now, I just have to pare back what I use.
The second one was another likely suspect. I was pretty sure my Mail bundle was screwing things up. I have MailPoet that formats my email newsletters (emails of my posts), WP Mail SMTP that lets me send mail as an authorized sender less likely to be caught in spam filters, and a WP Forms plugin that lets me add a nice contact form to my site. Do I need all of them? Meh. It’s more professional to have them than not. And it means I don’t have to run JetPack. What I should do is find a simple integrated plugin that does all three in a lightweight fashion and pay for a lifetime subscription. But that’s a problem for another day. In the meantime, I put up with MailPoet, as it is the one that slows things down.
I’ve stripped the two suspects down to their skivvies, and the site is loading. Maybe that’s all I can ask for now. Other than my rebate from my hoster.