Following the birthday of Isaac Asimov, in some circles—none that I’ve ever traveled in, I need to admit—today marks National Science Fiction Day.

A man standing on a staircase in aerial traffic on a public telephone playing advertisements...and a fishbowl across the way

Oh, and incidentally, after two years or so, I finally decided to rename this series of post “developer diaries,” rather than “journals.” It occurred to me that I always think of them that way. In my notes, I always refer to “developer diary entries,” so it makes far more sense to use the term in my head. Why did I originally call it a journal, if my brain calls it a diary? I don’t know, but I assume some subconscious sexist reason that should go away…

And with that, on to the first update of the year, and my first (official) developer diary post…which turned out surprisingly rant-y. Apparently, I had a rough week…

Social Media

Starting today, I no longer post directly to Twitter or visit it daily.

Instead, I post to Mastodon. Tools will then cross-post those messages to Twitter, without my direct involvement. I scheduled this week’s toots yesterday, so let’s hope that I didn’t foul them up.

In addition, I’ll probably only check Twitter on weekends—maybe weekly, maybe less—and will likely only deal with notifications and direct messages, if any. I do pretty much the same thing on Facebook and LinkedIn, so I know that it works well for me.

Presumably, this means that I shouldn’t have any further Social Media updates in developer diary posts, at least for the foreseeable future. I may create a post or a page with links to all my relevant social media accounts, but that’ll read as an update about the blog or discussing a tool that interacts with somebody’s API, rather than social media in general. 🎊

Database Antics

Saturday, when I started putting together the newsletter, I discovered that my server’s database had crashed. I don’t believe that affects any readers, so don’t worry about that part. It does affect my analytics, though, which I use for the newsletter to find popular posts and where people visit from, so I needed to investigate. And I’ll tell you, the MySQL community in general creates terrible documentation, from what I can tell.

For example, when I searched for the location of log files, I saw more people recommending strace—suggesting that an ordinary person should need to dig through process logs to find candidate locations, even though logging doesn’t happen through that process—than pointing to the official documentation or suggesting that they might sit with the other server logs.

Likewise, when I discovered that the problem keeping the server from running involved corrupted data, I found two kinds of persistent advice: The faster-to-find “solutions” suggested removing all traces of MySQL from the server and starting over, sometimes—not always—with a note at the end that this will, by the way, destroy all data, too. Other people instead suggested logging into the database and issuing REPAIR TABLE commands or running mysqlcheck to fix the corruption, apparently forgetting that the database won’t start.

At some point, I got lucky and found the people talking about adding an innodb_force_recovery directive to the server configuration. It takes values 1–6, each number increasing the list of broken things that the database should ignore. Setting it to increasing numbers—in the right configuration file, since that required some digging of its own, with some overriding others—I finally got it running, with repeated warnings, literally repeated to the console every few seconds, about the dangers of doing so. Note that everybody in this community apparently treats brief and deliberate risk to recover from data corruption as vastly more dangerous than deleting the entire database. 🤦

I couldn’t do anything with that, though, because somewhere along the way, my database gained an anonymous user—if I get careless when testing software out, that slip can happen without my remembering to clean it up—which locks local users out of logging in. Finally a break, though, the system includes mysql_secure_installation, which has an option to (among other things) delete that anonymous user. From there, I ran mysqlcheck with various options, and finally got the database back to the point where it would start without ignoring errors.

Now, I could have made this a tech tip post, but honestly, I didn’t learn anything useful in this. In reality, I only learned that MySQL—and derivatives, because I believe that I installed MariaDB—should have a startup option to force the recovery, repair all tables, and exit, but doesn’t. It shouldn’t allow anonymous users, ignoring them when they appear in user lists, but it doesn’t. I shouldn’t have needed to do any of this research, or listen to people debate the value of wiping an entire database to eliminate a single corrupt row, but I did. 🤬

Jekyll to HTML

GitHub - jcolag/jkl-to-htmlA rough tool (set?) to convert Jekyll blog posts to HTML pages - jcolag/jkl-to-html

I didn’t have the opportunity to use it for its intended purpose, but I created my first new repository in a while, a little utility program to convert a post written for a Jekyll blog—such as this blog, for example, and maybe even the source for this post, at least in theory—and convert it to a standalone HTML page.

For the full story, originally, I had planned to and still plan to collect the various short stories that I’ve released on the blog, clean them up, extend a few, add a couple of unreleased stories, and turn that into a book. I wanted to use this project as an opportunity to learn Scribus, but that became an exercise in frustration. Scribus doesn’t really import Markdown. It apparently no longer has the ability to add boxes/pages to cover all imported text, which I believe that I used, the last time that I tried to learn it. It doesn’t seem to recognize emoji as characters. When fed HTML, it doesn’t recognize CSS. And in a world seemingly standardized on UTF-8 Unicode characters, including those emoji, it looks like it expects 1990s Windows code-pages, instead of recognizing straightforward text.

Regardless, I created this repository to begin to bridge this gap, converting the Markdown text—with Liquid tags—into HTML that Scribus at least claims to import, despite fouling up the character set, as described above. Regardless of whether I can get Scribus to behave, I’ll eventually need this utility to handle the Liquid tags in text.

It doesn’t look like the information exists in a digestible form to do this, but I’d love it if this script could eventually generate a Scribus document from a blog post or list of posts, without needing me to take (in effect) the same manual steps as when I used LibreOffice to create Seeking Refuge.

Entropy Arbitrage

GitHub - jcolag/entropy-arbitrage-codeThe Jekyll blog for https://john.colagioia.net/blog - jcolag/entropy-arbitrage-code

Due to my ongoing changes to my approach to social media, as discussed over the past few weeks and above, it occurred to me that the blog needs some adjustment. Specifically, since I no longer visit Twitter on a daily basis and no longer post there directly, it no longer makes much sense to encourage people to follow me there.

Therefore, over the last few days, you might have noticed the link to my Mastodon account appear at the bottom of the blog, followed by my Twitter account vanishing yesterday. You can now also scroll that list, if I add more, since I don’t otherwise like how it looks when the list grows to more than three entries.

While there, I made an invisible-to-readers style change to draft versions of posts.

Library Updates

I needed to bump versions of libraries for Bicker, Fýlakas Onomáton, and Renew DB.

Next

Well, we have a new year ahead of us, so I could go anywhere

And by that, I mean that I’ll probably finally try to get back to CPREP, after I finish updating the blog code.


Credits: The header image is from Talk to Me (Color Pass) by Stephane (Wooltha) Richard, released into the public domain in early 2021.