Just for fun Nerd

I spent an hour on this dumb D&D joke so by God you’re going to see it

For those of you not deeply steeped in arch geekery, an Illithid is a species in Dungeons and Dragons, colloquially known as a “Mind Flayer.”

They are basically squid-headed jerks that eat brains.

As the long-running campaign I’m part of (12th level Warlock/Paladin, thanks for asking) winds toward a summer break and we get into the final approach for a seasonal Big Bad, our GM asked what Illithid-themed flair would work for us, so I set about creating this monstrosity.

Life in general Nerd

Welcome to Pontypool

The sporadically-updating horror podcast Tear Them Apart did an episode on one of the great sleeper horror movies of all time, Pontypool, last month.

Horror fans that don’t know much about south-eastern Ontario likely don’t know that Pontypool is a real place — in fact, I went to high school one town over, and spent a fair bit of time in Caesarea and Nestleton with friends, a short hop away.

Caesarea is even name-checked in the movie, and is the title of the third of a three-book trilogy by the author of the novel that Pontypool the movie was adapted from.

Visiting my folks last weekend, I thought I’d swing by the town to take some pictures for Evan Dorkin and Paul M Yellovich, the podcast’s hosts.

The Pontypool sign, with a quick best-efforts “Tear Them Apart” podcast call-out. I took it down after. I was really angering all the goats in the weird-ass half-farm next to the sign so I had to make it quick.

“Downtown” Pontypool, facing north. Note the telephone pole “TAKE BACK CANADA” sign. People think Ontario / Canada is pretty progressive, but it’s more like New York State: once you’re out of the cities, you’ll find a lot of the same regressive racist yahoos you find in any rural place. This was the part of the drive to my folks’ place where farms have STAY OFF MY LAND GUBBERMINT signs, and vaccine conspiracy lawn signs sprouted like weeds during COVID.

Grant Mazzy would probably be more at home here as a shock jock than the station staff would like to believe.

Same position, turning south:

That’s it. That’s Pontypool. The streets stretch out about a kilometre in all directions with mostly two-story houses of a mid-19th-century vintage.

The sign on the left of this photo is for the town’s only gas station (with integrated Tim Horton’s naturally; there’s nothing more faux Canadian than this foreign-owned chain that’s somehow convinced people it’s a Canadian icon, and that its coffee doesn’t taste like battery acid that briefly had a coffee bean dipped in it).

Tim Horton’s has grown in my mind in recent years to really represent the rise of the right in Canada: symbols are more important than reality, and being “Canadian” is more important than being Canadian. It’s not a Canadian chain any more, and the coffee and food are terrible, but it’s “Canadian,” so Doug Ford shills for Smile cookies and — okay, I’m getting off-topic. Tim Hortons sucks.

Behind the grocery store across the street you can see a little red sign; that’s the pharmacy on the first floor of a house. Facing the pharmacy, the only grocery/convenience store, and the only restaurant:

That’s it. That’s Pontypool. The streets stretch out about a kilometre in all directions with mostly two-story houses of a mid-20th-century vintage.

Not pictured is the town arena, which if you live in Ontario and I say “small town arena,” you’re already picturing.

The most unrealistic thing about Pontypool (the movie) is that it has a radio station that employs at least three people full-time. The most realistic thing about Pontypool (the movie) is the syndicated news break at the beginning that mentions a major drug bust in Caesarea. That 100% checks out.

The above probably sounds like I’m dunking on Pontypool; I kind of am, because I’m a bit triggered by the TAKE BACK CANADA garbage and have less than fond memories of COVID-area rural lunacy.

I grew up in a town about this size, and I’m sure it’s as much a mixed bag as that town was.

Anyway, that’s Pontypool-the-town, if anyone is watching the movie (it’s really, really good!) and wants to see what the real-deal place looks like.

Copyright Law Nerd

AI, the Mouse, and the Mask*

Another U.S. decision that AI-generated art cannot be copyrighted — while acknowledging that there will be “challenging questions about how much human input is necessary to qualify the user of an AI system as an ‘author’ of a generated work, the scope of the protection obtained over the resultant image, how to assess the originality of AI-generated works where the systems may have been trained on unknown pre-existing works, how copyright might best be used to incentivize creative works involving AI, and more.”

Where this is going to get really interesting, I think, is when somebody uses AI to produce something with a striking resemblance to a certain M. Mouse, or D. Vader.

AI generated image of a cartoon mouse with black ears and a white face, smiling, with exaggerated features.
A one-off ask in DALL-E with the prompt “cartoon mouse with black ears and a white face, smiling, with exaggerated features.”
AI generated image of "menacing figure with a cybernetic black mask, cape, respirator and holding a glowing laser sword"
A one-off ask in DALL-E with the prompt “menacing figure with a cybernetic black mask, cape, respirator and holding a glowing laser sword.”

See above for two 30-second not-even-trying prompts that are arguably completely innocent, but get within striking distance of the Disney Zone.

Secondary infringement — when you “should” know that you’re infringing, even if the resemblance is innocent or coincidental — is going to be come much more pivotal.

But even secondary infringement in the Copyright Act presumes an author:

  • Secondary infringement(2) It is an infringement of copyright for any person to
    • (a) sell or rent out,(b) distribute to such an extent as to affect prejudicially the owner of the copyright,(c) by way of trade distribute, expose or offer for sale or rental, or exhibit in public,(d) possess for the purpose of doing anything referred to in paragraphs (a) to (c), or(e) import into Canada for the purpose of doing anything referred to in paragraphs (a) to (c),
    a copy of a work, sound recording or fixation of a performer’s performance or of a communication signal that the person knows or should have known infringes copyright or would infringe copyright if it had been made in Canada by the person who made it.
Copyright Act, III 27(1) – emphasis mine

And/or prompts are going to become pivotal to prove primary infringement.

If AI can’t be an “author” and can still produce works that strongly resemble copyrighted work, I wonder if Compo Co. Ltd. v. Blue Crest Music et al. is going to become much more of a juggernaut in copyright law in Canada — precedence that producing something that violates copyright is itself copyright violation, even if you’re not the producer of the violating work. Even in Compo, the issue resided in the fact that the provider of the work, Canusa, _had_ violated copyright — which isn’t the case with AI.

It’s going to be an interesting decade for IP law…

*yes, of course it’s a reference. And yes, I know it’s not a Darth Vader mask. RIP Doom!


Auto-deleting junkbox

As a lower-mid-tier nerd, I’m just nerdy enough to be running a home media server (old Dell box, on Ubuntu 20, with Plex and nothing else). I also own my own domain (hey, you’re on it!), which gives me the power to create a nigh-infinite number of email addresses.

This, in turn, lets me make a generic email for all the sign-up garbage I need to use once and never again. “Enter your email / click the link in your email to register for | download | access” stuff.

What I wanted to do was have all that stuff funnel into a box that self-deletes every night. Get the confirmation email, click the thing, and nope out, knowing that any junk mail or follow-ups will auto-clear.

Since I have the local computer running (close to) 24/7 as a media server, and Ubuntu, and my own mailbox, why not dive into the wonderful world of Python scripts and cron jobs to make it happen?

(For the record, this seems like a jovial public-facing post, but it’s really just for me so I can remember how to do this stuff if I need to do it again).

Here’s the script, courtesy of the good people at Opalstack, my web host. Nice, responsive, and ultimately patient people!


import imaplib
import ssl
from datetime import datetime

# your IMAP server credentials
IMAP_USER = 'user'
IMAP_PASS = 'password'

def clear_old_messages():

    today ='%d-%b-%Y')

    ctx = ssl.create_default_context()
    server = imaplib.IMAP4_SSL(host=IMAP_HOST, ssl_context=ctx)
    server.login(IMAP_USER, IMAP_PASS)

    resp, items =, f"SENTBEFORE {today}")
    #resp, items =, "SENTBEFORE {}" .format(today)) [[python 3.5]]
    items = items[0].split()
    for i in items:, '+FLAGS', '\\Deleted')


if __name__ == '__main__':

I save the script as in a folder called “scripts” in my home folder, and make it executable:

chmod u+x

On the Ubuntu server, I open up the crontab editor with

crontab -e

Then adding at the bottom of the crontab

0 1 * * * /home/[user]/scripts/

I made an earlier mistake setting this up with a relative file path

0 1 * * * ~/scripts/

but that was a no-go for some reason. Using the absolute path helped the cron job find the script and run it.

When that didn’t work, I got advised that putting the path in the cron job as well as the shebang will bulletproof it more:

0 1 * * * /usr/bin/python3 /home/[user]/scripts/ > /home/[user]/logs/garbage.log 2>&1

Things that have gone wrong

  1. Including the path to Python in the crontab. I was pushing the crontab just to the script and assuming the shebang to Python would be enough — apparently not (I’ve updated the post above).
  2. Permission Denied for the path to the Python script. I’m finding the Python script using whereis python and locating it at /usr/lib/python3.8, but the crontab log is giving me a “Permission Denied” in the log. The solve there was using usr/bin/python3.8 — no idea why lib is permission denied and bin is okay, but whatever works, works. I’ve updated the post above.
  3. When Python updates, the path breaks — I had crontab calling /usr/lib/python3.7 and getting a not found error, which was vexing until I realized Python had updated to 3.8 and I hadn’t noticed. This applies to both the shebang for the script and the crontab call. The fix: you can call the Python version (python3) without the subversion (python3.8) — but not just “python”, because then the system calls Python 2, which can’t run the script. Once again, the post above’s been updated.
  4. Moved everything to a Synology server, and while its built-in task scheduler has solved the cron job for me, after a ton of syntax errors I finally discovered that the above script uses an f-string that only works in Python 3.6+, and the Python 3 module in the Synology package manager only supports 3.5.1. So the script above has been amended again to reflect that.