Fixing a Perl module in the middle of a GitHub workflow

A third-party Perl module updated its minimum Perl version and broke a large part of the automated testing and release of one of my Perl modules. I had to do a little brain surgery to fix this, and it’s not even the fix I’d really like for this sort of situation.


Read More

When backups are the problem

What happens when backing up the database is the reason the database goes down and you can’t open additional SSH connections? What follows is not a tale of technical wizardry but a confession of stupidity and neglect.


Read More

Backups and resiliency for open source code

The 3-2-1 rule is the basic advice about backups: have three copies, on two different types of media, in at least one far away location. That’s a good start, but there are other things to consider.


Read More

exiftool cheatsheet

Times

Adjust the hour and the time zone offset, including the Canon Tags.

Take an hour

exiftool -overwrite_original -TimeZoneCity=Chicago -TimeZone=-05:00 -alldates-=1 "-offsettime*=-05:00"

exiftool overwrite_original -alldates-=3 "-offsettime*=-07:00" -TimeZone=-7:00 -TimeZoneCity#=30 -verbose test.CR3

Geotag

exiftool -progress -overwrite_original -geotag foo.gpx DIR

Read More

Encrypting secrets for GitHub's API with Perl and libsodium

The GitHub API for Secrets uses libsodium to exchange the secret. I request the public key for my repository, I encrypt my secret with my repository’s public key, and I send it back to GitHub. My repository can then decode it with its secret key (which I don’t know).

The API docs have examples in Node, Python, Ruby, and C#. I worked out an example in Perl which takes the Base64 encoded public key as provided by the API and returns the Base64 encoded secret I need to send back.


Read More