Link Log 2024-07-16

UNIX: Making Computers Easier To Use

Indirect Imaging, Elevators Gone Wild, Backlight Cosmology

OpenSSL get entire certificate chain from a domain or loop over entire chain in file

Return of a King: Talk by Mr William Dalrymple

Results of gun care product evaluation

Tennessee Beach

Night Run

I began running at night last autumn. I referred to them as “night runs” but this phrase was mostly aspirational, as I would usually take off around 18:00, or shortly thereafter. But it was dark, and that was the point.

I found that I enjoyed running through the dark, sometimes through city streets, other times down wooded trails, solitary in my small forcefield of light. I’ve seen all sorts of wildlife: raccoons, coyotes, Donald Trump’s motorcade. I once ran by a guy valiantly attempting to blow on a didgeridoo while playing death metal on his phone.

San Francisco Night

This year, as the days lengthened, my late afternoon runs started to become light enough to not require a headlamp. That was no fun, so in the spring I rescheduled my runs to start around 21:30 – sometimes as early as 21:00 if I’m heading up Twin Peaks and want to catch the metropolitan alpenglow. Now they are actually night runs.

Golden Gate Night

Wherein the Author Learns to Compact Borg Archives

I noticed that my Borg directory on The Cloud was 239 GB. This struck me as problematic, as I could see in my local logs that Borg itself reported the deduplicated size of all archives to be 86 GB.

A web search revealed borg compact, which apparently I have been meant to run manually since 2019. Oops. After compacting, the directory dropped from 239 GB to 81 GB.

My borg wrapper script now looks like this:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/bin/sh
source ~/.keys/borg.sh
export BORG_REPO='borg-rsync:borg/nous'
export BORG_REMOTE_PATH='borg1'

# Create backups
echo "Creating backups..."
borg create --verbose --stats --compression=lz4             \
    --exclude ~/projects/foo/bar/baz                        \
    --exclude ~/projects/xyz/bigfatbinaries                 \
    ::'{hostname}-{user}-{utcnow:%Y-%m-%dT%H:%M:%S}'        \
    ~/documents                                             \
    ~/projects                                              \
    ~/mail                                                  \
    # ...etc

# Prune
echo "Pruning backups..."
borg prune --verbose --list --glob-archives '{hostname}-{user}-*'   \
    --keep-within=1d                                                \
    --keep-daily=14                                                 \
    --keep-weekly=8                                                 \
    --keep-monthly=12                                               \

# Compact
echo "Compacting repository..."
backitup                                \
    -p 604800                           \
    -l ~/.borg_compact-repo.lastrun     \
    -b "borg compact --verbose"         \

# Check
echo "Checking repository..."
backitup -a                                                         \
    -p 172800                                                       \
    -l ~/.borg_check-repo.lastrun                                   \
    -b "borg check --verbose --repository-only --max-duration=1200" \

echo "Checking archives..."
backitup -a                                             \
    -p 259200                                           \
    -l ~/.borg_check-arch.lastrun                       \
    -b "borg check --verbose --archives-only --last 18" \

Other than the addition of a weekly compact, my setup is the same as it ever was.

Working with ACSM Files on Linux

I acquire books from various OverDrive instances. OverDrive provides an ACSM file, which is not a book, but instead an XML ticket meant to be exchanged for the actual book file – similar to requesting a book in meatspace by turning in a catalog card to a librarian. Adobe Digital Editions is used to perform this exchange. As one would expect from Adobe, this software does not support Linux.

Back in 2013 I setup a Windows 7 virtual machine with Adobe Digital Editions v2.0.1.78765, which I used exclusively for turning ACSM files into EPUB files. A few months ago I was finally able to retire that VM thanks to the discovery of libgourou, which is both a library and a suite of utilities that can be used to work with ACSM files.

To use, I first register an anonymous account with Adobe.

$ adept_activate -a

Next I export the private key that the files will be encrypted to.

$ acsmdownloader --export-private-key

This key can then be imported into the DeDRM_tools plugin of Calibre.

Whenever I receive an ACSM file, I can just pass it to the acsmdownloader utility from libgourou.

$ acsmdownloader -f foobar.acsm

This spits out the EPUB, which may be imported into my standard Calibre library.

YubiKey Replacement

Since I began using a YubiKey for PGP operations in 2015, I’ve always kept a spare YubiKey locked away with my USB Armory, in case the one on my keychain failed. While performing my annual key renewal this month I decided it was time to switch to the spare YubiKey. My old one still works, but it often takes a few attempts to read.

YubiKey NEO

Both YubiKeys are 9 years old. But one has spent those 9 years locked away, while the other spent every day of those 9 years in my pocket (and saw repeated use on most of those days). The new one always works on the first attempt, and it fits into USB ports with a comforting amount of friction. The old one had been worn down so much that it often just falls out of ports if it isn’t being held in. (My calipers measure the front contact area of the old YubiKey at 2.26mm thick, where the new one is 2.40mm.) I’m glad to know that YubiKeys can reliably work for nigh a decade, but next time maybe I’ll start to think about replacing this one after around 5 years of EDC rather than 10.

I was pleasantly surprised to discover that modern versions of GnuPG are happy to use different cards for the same key, so you no longer need to delete keygrip files when switching cards.

Hafny FR03 Jones Bar Mirror

I tried a few different mirrors on my Jones Loop H-Bars.

The D+D Oberlauda UltraLite Bike Mirror mounted underneath the bars just before the weld worked decently, but the mirror’s clamp is annoying when you want to rest your hand on top of that part of the bar.

Oberlauda UltraLite Mirror

After further trials, I developed a preference for the Hafny HF-M951B-FR03. This opinion is shared by others.

The FR03 uses the same high quality glass and mount as the FR06 model Hafny on my road bike, but the two models have slight differences. The mirror of the FR03 is round, where the FR06 has a subtle teardrop shape. The bracket which connects the FR03 to the bar plug attaches to the edge of the mirror, where on the FR06 the bracket attaches in the center of the rear of the mirror. These differences make the FR03 better suited to flat bars, and the FR06 better suited to drop bars.

Rear View Tamalpais

A bike with Jones bar is a wide load, and a bar-end mirror makes it even wider. I compensate for this by only having a left-side mirror, which gets the job done. I also keep the adjustment bolt loose enough that I can tilt the mirror into the bars if I’m squeezing through a narrow passage.

Link Log 2024-06-03

Merchandizing the Void

Ben Pobjoy’s Tips for Long Walks

A love letter to bicycle maintenance and repair

Baghdad Bus: The Crazy 1930s Off-Road Desert Bus with a Kitchen & Beds

The obscure federal intelligence bureau that got Vietnam, Iraq, and Ukraine right

OTB

Link Log 2024-05-07

I travel full time for work and live in motels. Had to put a little kit together for my tea gear!

A Few Notes on the Culture

Saunders Militaria

Soft Electronics

Parachute Mobile HF jump

The Bicycles of World War II

The Man Whose Sound Systems Make You Feel Like You’re On Psychedelics

Devon Turnbull / HiFi Pursuit Listening Room Dream No. 2