Yesterday was Friendship Day, though almost nobody actually celebrates it on that day, and is a literal Hallmark Holiday, created by the company’s founder Joyce Hall. It was also, apparently, International Forgiveness Day, though I can’t find a legitimate reference for it. This is also the best of the August holidays, so they’re going to slide awkwardly downhill from here.

Friends, pre-pandemic

Oh, well. This week, you’ll notice a bit of a theme on what I got done, which makes this a much shorter post than usual.

Entropy Arbitrage

There wasn’t much code involved, but I messed around with the analytics system and made sure everything was GDPR-compliant. I think the law is ham-fisted, myself, and don’t need to care what happens in the EU, but if it makes someone more comfortable spending time on the site, it’s worth the trouble.

At least, I think I got it right. One way stopped all incoming data—including bots—so I assume that one was wrong. But I only really check the analytics to see which pages get traffic (since those topics might warrant more attention) and where people are coming from (because that interests me).

Mailing List

On Saturday morning, the first issue of the Entropy Arbitrage Newsletter went out to subscribers. If you haven’t subscribed, you can see what you’re missing here and then sign up over to the right or at Mailchimp.

You can find the code I use for generating everything in the Ham Newsletter repository, named for [the first chimp in space](, given the service that maintains the list.

GitHub Profile

Less important, but I finally got the profile repository to auto-update with the most recent blog posts. You’ll notice a couple of bogus commits where I tried to tweak things that didn’t matter, not realizing that the problem was the cron job needing more information.

Specifically, the command that runs in the morning executes something like the following.

eval "$(ssh-agent -s)" && cd /path/to/repository && /bin/sh

The eval step sets a series of environment variables that allows the session to access the GitHub key. It then switches to the profile repository and runs the update script. I needed to jump through a couple of extra hoops to make sure the task could use a key that’s otherwise protected by a pass-phrase (since I won’t be waking up to type it in), but otherwise, that’s all that needs to happen.

Note that this produces nearly daily activity on my GitHub profile, which is a good time to remind everybody not to trust metrics like commits-per-day. I assure you that I’m not awake at three in the morning…but my software is, and that’s what shows up on the list, so it looks like I’m suddenly doing more work.


I’ll continue cleaning up the mailing list code. Some scripts still have content specific to me.

Back before I was programming mailing list APIs “full time” (not really full time…), though, I was thinking about some bookkeeping changes to Uxuyu, such as internally identifying feeds by their URL instead of their handles and possibly storing posts for offline use, not to mention figuring out how to package it as an application for other people to use.

Working with APIs also makes me want to look at Twitter. It probably doesn’t make sense to try to generate the Friday posts, but validating that I got the links right wouldn’t be the worst idea.

Alternatively, I may catch up on some of those library updates GitHub has been nagging me about. Eventually, one of them is bound to be important.

Credits: The header image is Friends looking at a smartphone by an anonymous RawPixel photographer, made available under the terms of the Creative Commons CC0 1.0 Universal Public Domain Dedication.