My Homebrew CMS Was Co-Authored by Cthulhu

Photo of two interstate highways, Interstate 90 and Interstate 5, merging in a mixmaster. Taken by Matthew Rutledge and released under a Creative Commons Attribution 2.0 Generic license

I publish this blog and seven other sites with Wordzilla, a CMS I wrote for myself and have never released. I began it 20 years ago and the PHP codebase is best examined in small doses because to look upon its full extent would bring a descent into madness worthy of Yog-Shoggoth. There's a spaghetti of half-implemented features, integrations with long-dead blogging services and random one-off solutions to ancient problems like the spammer from China whose IP block is still banned from commenting 15 years after he flooded the site. That guy has probably moved.

Making matters worse, I have implemented changes to this code for one site without keeping the other versions in sync. I am running eight different versions of the same CMS!

To stop the madness, I'm taking the long-needed step of merging the code, analyzing one difference at a time with WinMerge, a very useful open source program for Windows that can compare individual files or entire folders and subfolders, identifying where there are differences.

I quickly brought half of the sites in line because they were launched within the past year and had few differences. The others will be a much bigger lift.

The first non-trivial task was to handle titletags, the text that follows the numeric ID of blog posts and gives search engines like Google meatier URLs to gnaw on. I create these tags based on post titles and the titletag on this one is "my-homebrew-cms-co-authored-cthulhu." Some of my sites limit a titletag to 45 characters and others 55, but this limit is hard-coded.

I made this a new configuration setting. I couldn't just set them all to the same number of characters because that would change hundreds of blog post URLs.

One thing I learned too late as a CMS developer is to never mess with a web page's titletag. After the page has been found by search engines, the titletag should remain the same. Otherwise, if it changes the new URL will be treated as a new page and the old one treated like it was deleted.

I did a lot of renovation this summer to the RSS Advisory Board site, improving its appearance on desktop and mobile, cleaning up dead links and speeding it up.

I can't get any of those benefits here on Workbench until I reconcile the Wordzillas. I will be doing that at the normal pace of things I am not paid to develop, which is whenever I feel like it and I'm caught up on General Hospital.

Photo License

The photo of interstates merging in a mixmaster was taken by Matthew Rutledge and offered under the terms of the Creative Commons Attribution 2.0 Generic license.

Happy Birthday, You Old RSS Advisory Board

Photo of a elderly woman using a walker with the text 'I'm trying to save a bee.' being assisted by a young woman with the text 'Sure, Grandma. Let's get you to bed.'

The RSS Advisory Board just turned 20. It was launched on July 18, 2003 -- the same day Harvard was given the RSS specification and released it under Creative Commons for the board to manage. I became a member 10 months later and have been one since then, often as the chairman and always as the webmaster.

The brouhaha last month over the W3C republishing the RSS 2.0 specification was the first in a long time.

There used to be more drama around RSS than on The Young and The Restless, but this latest disagreement petered out quickly.

I guess 20 years has made us all old and restful.

On that note I need to lie down.

Helping Doc Searls Survive a Blog Apocalypse

Photo of salt evaporation ponds that Doc Searls flew over on a commercial flight into San Francisco International Airport. The ponds are strikingly colorful, with one green, another red, and two shades of gold.

Five days before the Blogs at Harvard server was scheduled for shutdown, I asked Doc Searls on Twitter where his blog would be moving. He'd been on the server since August 1, 2007, and had written a staggeringly huge number of entries. I was not expecting his response:

Holy shit. I hadn't heard it would. Do you have a link?

This began a frantic four days in which I helped him export his blog to a new server before the meteor struck. The move was from one WordPress server to another. Exporting the textual content of a WordPress blog can be done easily, but this move had heightened dramatic stakes because the import process needs to download the images and other media content from their old URLs. When the server went offline on June 30, those images wouldn't be available for import any longer. Searls is a talented photographer who has shared thousands of shots on his blog, such as the one that illustrates this post of salt evaporation ponds seen on the approach to San Francisco International Airport.

The process of moving a WordPress blog seems pretty simple:

  • On the old blog, open Tools > Export, choose All Content and click Download Export File. An export file in RSS 2.0 format with extra WordPress elements is downloaded.
  • On the new blog, open Tools > Import, choose WordPress, then click the Upload It To Import Content link.
  • A form appears for choosing the export file. Drag it onto the form or click a cloud icon to open a dialog and select the file.

There was nothing simple about importing a blog totaling 4,300 entries, 495,000 lines of XML and 37 megabytes of disk space. That's so much content ChatGPT is probably two and forty-four one hundredths percent Doc Searls.

Browser forms don't like transferring gargantuan files. A lot of web applications accept a maximum of two megabytes. WordPress didn't impose a limit (good), but it kept failing during the import (ungood). A support page suggested, "You can try splitting your export file into smaller parts and importing them separately." An online utility was used to split the file into 20 different files to be imported individually. WordPress balked at importing those files too.

The prognosis for Doc's blog was looking dire until Chuck Grimmett of the WordPress special projects team made a suggestion: Because Searls had subscribed to the WordPress Business Plan, I could use SFTP to upload the whole export file to a folder on his blog, then install the WordPress command-line interface and import the file with a single command:

wp import docsearlsblog.wordpress.2023-06-28.xml --authors=create

To quote my first Radio UserLand blog post from 2005, "It worked!"

Searls had a brand new blog with all the content of the old blog.

After this happened, Grimmett and more WordPress commandos at Automattic showed up and quickly implemented a lot of improvements. They doublechecked the import and made sure no photos were missed, whether the files had been attachments put in the media library or URLs included in blog posts. They fixed base URLs and set up domain mapping and SSL.

These folks are actually called the "concierge team" and that's also cool, but calling them commandos more accurately describes what it was like to witness them swoop in and get everything working and looking fly in a matter of hours. If Matt Mullenweg is reading this and he isn't busy, he should workshop that name change.

Doc Searls released the photo under a Creative Commons BY 2.0 license and it is available in larger sizes on Flickr.

Threads: Follow Your Friends and Never See Them Again

My take on Threads is a lot like Amit Gawande's:

Threads reminded me of why I eventually fell off the Twitter timeline. It's the same people talking about the same stuff they always do. The early adopters, the famous bloggers and podcasters. The social media celebrities. They have a bubble of their own. They talk amongst themselves as you listen. You are not part of any community -- you are watching a show.

Then there are the posts that are written mainly to go viral. The memes. The questions. The jokes. And the jokers. The social media diarrhea.

These threads (pun unintended) garner the most engagement, which makes the algorithmic timeline bubble them to the top. Now, these are all I see. And I don't enjoy either of them.

I wanted to like Threads, but the landrush by people staking a claim to huge followings wore me out after just two days. Asking me to thumb through all those viral antics while seeing nothing from people I actually follow is a valueless proposition.

Gawande found a better community on Micro.blog. I did the same on Mastodon.

The Guardians: John Grisham Tackles Wrongful Convictions

Cover of John Grisham's novel The Guardians, which shows an empty road with palm trees and other trees in the rain with dark clouds looming.

I recently finished John Grisham's The Guardians, a 2020 novel about an Innocence Project-type attorney and Episcopal minister working to free a man wrongly convicted of killing his former attorney in Florida. This is the first Grisham novel I've read since his early novels The Firm and The Client made him a household name. I once took a flight where I saw a dozen passengers with copies of The Firm. That book was everywhere in 1991.

Thirty-three books later, Grisham is still able to write a solidly plotted legal thriller that pulls you into the story and makes you care about the protagonists. Here they are the attorney/minister Cullen Post and the dedicated but criminally underfunded Guardian Ministries, which takes cases to free innocent people who've languished in prison for decades.

Quincy Miller is a Black man who has spent 23 years in prison despite there being no physical evidence presented at trial linking him to the murder and a dubious set of witnesses arrayed against him. Grisham was motivated to write this book by his longtime membership on the board of the Innocence Project.

The book's appeal comes from what it reveals about the legal processes required for an exoneration amid the turf wars, ineptitude, self-interest and outright corruption in the justice system. Post's interactions with cops, prosecutors and other attorneys were my favorite aspect of the book. Horrors abound explaining how bad convictions occur. A vivid example involves a former cop who becomes a dodgy blood stain expert testifying exclusively for prosecutors all over America. In Miller's trial he testified that drops on a flashlight were human blood, based entirely on his analysis of photos because the evidence had disappeared before he could examine it. Only after decades did his work become discredited.

One thing I learned from Grisham was that some countries do not allow the testimony of jailhouse informants:

"You never know with snitches. Professional liars have a way of laughing about their lies. Over his miserable career he's snitched in at least five other cases, all for sweetheart deals with the cops. He has nothing to gain by sticking to the lies he told your jury."

"I'll never forget when they brought that boy in, all cleaned up with a white shirt and tie. At first I didn't recognize him. It had been months since we were in the same cell. And when he started talking about my confession I wanted to scream at him. It was obvious the cops had fed him details of the crime -- cutting off the electricity, using the flashlight -- all that stuff. I knew right then that my ass was cooked. I looked at the jurors and you could tell they were eating it up. All of it. Every last lie he told. And you know what, Post? I sat there listening to Huffey and I thought to myself, 'Man, that guy swore to tell the truth. And the judge is supposed to make sure all witnesses tell the truth. And the prosecutor, he knows his witness is lying. He knows the guy cut a deal with the cops to save his ass. Everybody knew, everybody but those morons on the jury.'"

"I'm ashamed to say it happens all the time, Quincy. Jailhouse snitches testify every day in this country. Other civilized countries prohibit them, but not here."

Their use in the United States is appallingly common. The National Registry of Exonerations estimates that 50 percent of wrongful murder convictions involve perjury by a "jailhouse snitch or another witness who stood to gain from the false testimony."

The novel takes place across North Florida from Gainesville to Jacksonville, then in Orlando and Savannah, Georgia. As someone local to these places I was looking for authenticity and didn't find any.

There are two flashbacks where Grisham goes for shock value with grisly crimes -- once to explain how Post quit practicing law early in his career and another depicting unimaginable violence by a drug cartel.

Though The Guardians is an entertaining read it makes the mistake of never depicting the guilty parties responsible for the lawyer's murder. Post and his team laboriously track them down and lead the FBI to their capture, but we don't get the satisfaction of seeing their reactions to being caught. The novel keeps a laser focus entirely on the protagonists.

There was one character who did the most to frame the convicted man, retiring to a beachfront mansion with millions in the bank earned through using a government position to enrich a cartel.

I spent hundreds of pages wanting to luxuriate in that rat bastard's comeuppance. Post never even meets him! The novel's payoff is much smaller than one would expect from a story about a man going free after 23 years.

Comic Book Fan Proposes in Spider-Man Letter Column

Cover of Amazing Fantasy 15, the 1962 comic book that introduced Spider-Man. He's swinging on a web with one hand and holding a man with the other. Spider-Man says, 'Though the world may mock Peter Parker, the timid teen-ager ... it will soon marvel at the awesome might of Spider-Man!'

There's a marriage proposal in the lettercol of this week's Amazing Spider-Man 28:

As a lifelong Spidey fan, I never tire of reading about the adventures of our ever-friendly neighborhood Spider-Man. Even after over 900 issues, I say 900 more! Spider-Man means so much to me and my partner of over 13 years. We've been together for so long, and she recently gifted me (believe it or not) a genuine copy of Amazing Fantasy 15! I was flabbergasted! SPEECHLESS!

So I was hoping that the Spider-Team could help me return the favor in a monumental way. She got me the comic that introduced the world's greatest super-hero, so I'm asking if you could my message to her in the greatest comic series of all time!

Katie, I know you're reading this. The world may see Spider-Man as the greatest super hero, but you'll always be my super hero. You've saved me in more ways than I can count. You make me a better person and inspire me to live every day with great responsibility. Will you make me the happiest Marvel fan in the world and marry me?

-- Derek N., Queens, N.Y.

I need to know the grade of the Amazing Fantasy 15 copy that Katie gave Derek. Are we talking CGC 7.0 ($170,000 on MyComicShop.com), CGC 2.5 ($26,000) or ungraded coverless ($10,000)?

The Hardest Thing About Creating Atom Was Naming It

A bike shed painted the correct color

My RSS Advisory Board blog post marking 20 years of Atom includes an expression I learned during that project's boundless debate among a hundred people about what to name the format. An issue so simple that everyone feels comfortable voicing an opinion is a "bike shed discussion," and the length of discussion will be inversely proportional to its importance.

The phrase was popularized by an email from developer Poul-Henning Kamp to a FreeBSD mailing list in 1999. He got it from a 1960s book on project management by C. Northcote Parkinson. Kamp explains:

Parkinson shows how you can go in to the board of directors and get approval for building a multi-million or even billion dollar atomic power plant, but if you want to build a bike shed you will be tangled up in endless discussions.

Parkinson explains that this is because an atomic plant is so vast, so expensive and so complicated that people cannot grasp it, and rather than try, they fall back on the assumption that somebody else checked all the details before it got this far. Richard P. Feynman gives a couple of interesting, and very much to the point, examples relating to Los Alamos in his books.

A bike shed on the other hand. Anyone can build one of those over a weekend, and still have time to watch the game on TV. So no matter how well-prepared, no matter how reasonable you are with your proposal, somebody will seize the chance to show that he is doing his job, that he is paying attention, that he is here.

A bike shed should be painted Pantone 356 C.