Tidying up around the place
Removing a bit of bird site detritus, automating toots, fixing bugs.
I forget exactly how or why I thought this was what I should be doing this morning, but I’ve managed to tidy the place up a bit, so I guess that’s a good thing.
I think it started with tweetback. I got an archive of my tweets and loaded it up. I thought tweetback was a Node application, and it is, but I was delighted to discover that the output is a completely static archive. So tweets.nwalsh.com took only a few minutes to spin up. Nice.
That got me wondering how many links I had in this weblog that point back
to twitter.com
. I like my links to be stable and persistent, but I
have very little confidence in the continued reliability of that site.
Turns out there were about a dozen, so I edited things to make them
point to my archive. (Well, my tweets, anyway, there’s nothing I can
do about links to other people’s tweets, unless they setup an archive
as well.)
In the course of doing that, I fixed a bug in the “topic editor” that’s been bugging me for ages. (Nothing you can see, but sometimes you just have to scratch what itches.) And I noticed that updated pages didn’t include a “last modified” date. So I fixed that as well.
Now I had the hood off, I thought I should see about automating toots. I’ve been using a third party service, which is fine, except that the service changes occasionally without warning and in ways I can’t control. And when I include an image in a toot, it loses the alt text. The Mastodon community is pretty assertive about providing accessibility and I like that.
Right then. Looking for a lazy solution in between kneading and shaping some sourdough, I figured I’d work out how to automate a command line tool. I’ve played with toot a bit and it seems to work. I proposed fixes for a couple of bugs in it last week.
Next, I tinkered with the code that inserts new weblog posts so that it would generate a little summary I could use for tooting. Like this, for example:
{
"toot": "/2023/01/07-housekeeping",
"micro": false,
"title": "Tidying up around the place",
"text": "Removing a bit of bird site detritus, automating toots, fixing bugs.",
"images": [],
"alts": []
}
Good. That was complicated a bit by the fact that for “micro” posts (the ones you see at the top of the home page that often include photographs), I had to extract the image links so that I could pass them to toot as media files. But, you know, SaxonJS on Node.js is da bomb.The author may be biased, ed. With all that sorted, I had only two dots left to connect.
I thought about extending toot, or writing a program that uses toot as an API, but I decided that was more work than I needed to do. I settled for a little script that watches the directory where the summaries are saved. If it sees a new file, and if the URI identified is publicly accessible (it won’t be until I hit the “publish” button), then it constructs a toot command line to publish a link to that post. If toot succeeds, it deletes the file.
Again, a little complicated because what I have in the summary is a URI for the image page on photos.nwalsh.com and what I need is the actual image file. This far down the rabbit hole, you just gotta keep digging.
These last two bits of string are tied together by a cron job that runs every five minutes. A little loose coupling here seems like a good idea.
It occurs to me now that I could (should?) update the posting tool so that it includes post topics as hashtags. Not today, though. I gotta go bake some bread!