I have (quite literally) been spending a good deal of my free time doing chores of various kinds, both physical (which are never enough) and digital, so here’s a sort of catch-up for a number of minor things that have been going on.
The COVID-19 Thing
We’re at nearly 1400 new cases a day, reaching the 1000-a-day average later than I expected but definitely experiencing a full-on second wave.
I’m just going to leave my usual chart here and spare you the background story (my older post is still very much on point):
Here’s the current dashboard if you feel like delving into details. Just bear in mind that the local NHS has stopped publishing most detailed data months ago, and I haven’t cleaned out stale charts yet.
Scribbling
Now that I’ve finally upgraded everything to iOS 14, I’ve started using Scribble on my iPad to take notes, instead of the discontinued recognizers I was still using.
I’ve found it has no trouble with my handwriting (in English, obviously), but I have constant trouble with editing gestures as I keep falling back to old Newton and Palm Pilot habits when I try to do simple things like inserting text mid-sentence or some punctuation characters.
All in all, it’s a pretty decent system (it worked well enough to write a good chunk of this), but hard to use in opinionated apps like iA Writer that scroll text around or have trouble with changing input methods.
Standing Desk Update
The back-to-work rush made it a priority to do some pretty heavy multi-tasking and spend hours at my regular desk, but I soon realized I needed to move around more and went back to spending more time at my cheap standing desk hack–at least when racket from construction work allows it.
In short, it’s still paying off, and I kitted it out further with a small ringlight and a white K380. I needed the other one someplace else, and white keycaps are easier to read under soft LED lighting.
I still find this desk great for early morning stand-ups (pun intended), the vast majority of conference calls and various mindless chores like clearing out my inbox, largely because being able to pace around a bit and stepping out occasionally onto the balcony to have a think is a great morale booster.
However, a single laptop screen is woefully inadequate for calls where I’m presenting or whenever I need to write/review things at length, so I’ve been trying Duet Display with an iPad mini. This setup is very cramped and laggy, but at least allows me to have a separate, shareable screen for calls.
So I’m contemplating getting a 14” LCD display–preferably something I can use in portrait mode for reviewing docs.
Cameras and Video
As a follow-up to dabbling with video gear during my vacation, I ordered a Raspberry Pi High Quality camera and bolted it to a Zero W running my own fork of uvc-gadget
(which besides providing a serial interface to control the camera was also tweaked to not burn 100% CPU when idle).
I 3D printed a little support for it, re-purposed one of my microphone arms, and hooked it up to my Windows machines:
Manual focus is still an issue on occasion, but video quality is pretty much excellent on Teams, with only two caveats:
- You need stable USB bus power. Plugging directly into a laptop is fine, but since I need an audio interface and an Ethernet port and only have a single USB port on my Surface Pro 4, I had to get a powered USB hub to ensure the camera worked properly.
- The frame rate lags behind a bit (and even freezes) on occasion, which I suspect is due to other stuff running in the background.
So I’m looking into derivative projects like showmewebcam
that pack less stuff into a read-only runtime image to see if I can improve performance and reliability a bit.
I’m also considering adding some physical camera controls, perhaps with one of these neat displays from Adafruit:
This will require printing a new camera bracket (which I’ll probably have to do anyway for reinforcement to hold some Canon lenses I’m meaning to test with it), but that will take some time yet…
Photo Management
I still have something like five years of photos to collate, rename, de-dupe and archive properly. It’s all backed up and reasonably safe in various clouds, but never arranged to my liking, and has been getting to me lately as my personal time slips away relentlessly.
After my Dropbox migration I’m keeping all unsorted photos in OneDrive and doing triage on my Mac, which both is and isn’t helping.
It helps somewhat because OneDrive creates some useful smart albums (that, alas, I can only see on the Web, but which I can at least filter somewhat to separate unsorted from sorted stuff).
But mass moves/renames take forever to sync for some reason, and I keep getting stuck in prompts like these, where hitting Remove
does absolutely nothing, leaving me to wonder what has actually synced up:
In the meantime, I decided to have another go at my jhead
mass renaming hack and replace it with a zsh
script that takes advantage of mdls
to grab info off filesystem metadata (which macOS updates “for free”, saving me the trouble of trying to parse stuff off the files themselves):
#!/bin/zsh
for FILE in "$@"
do
if [[ ! -f $FILE ]] then
continue
fi
EXTENSION="${FILE##*.}"
# Ensure we only handle the kinds of media we want
if [[ "DNG dng JPG JPEG jpeg jpg PNG png MOV mov HEIC heic" != *$EXTENSION* ]] then
continue
fi
# Normalize extensions (yeah, this could be prettier)
if [[ "DNG" == *$EXTENSION* ]] then
EXTENSION="dng"
fi
if [[ "JPG JPEG jpeg" == *$EXTENSION* ]] then
EXTENSION="jpg"
fi
if [[ "PNG" == *$EXTENSION* ]] then
EXTENSION="png"
fi
if [[ "HEIC" == *$EXTENSION* ]] then
EXTENSION="heic"
fi
if [[ "MOV" == *$EXTENSION* ]] then
EXTENSION="mov"
fi
# Now grab EXIF/IPTC data that macOS has already figured out for us
METADATA=$(mdls "$FILE")
# The space prevents matching derived properties
ISO_DATE=$(echo $METADATA | grep "kMDItemContentModificationDate " | cut -d= -f 2 | sed 's/[^0-9]//g' | cut -c1-14)
if [[ ${#ISO_DATE} -eq 14 ]] then
if [[ "$FILE" == "$ISO_DATE.$EXTENSION" ]] then
continue
fi
if [[ ! -f "$ISO_DATE.$EXTENSION" ]] then
mv "$FILE" "$ISO_DATE.$EXTENSION"
else
for SUFFIX in {a..z}; do
SUFFIXED_DATE="$ISO_DATE$SUFFIX"
if [[ ! -f "$SUFFIXED_DATE.$EXTENSION" ]] then
mv "$FILE" "$SUFFIXED_DATE.$EXTENSION"
break
fi
done
fi
fi
done
Back-End Maintenance
Finally, as Node-RED approaches 1.2.0, I’ve begun upgrading my NodeJS containers to 14.x and testing ARM32
and ARM64
builds, which I rely upon for my home automation setup.
This has progressed at a glacial pace (around a test a day), but has given me something better to do than conference calls and Excel sheets.
Hopefully I’ll have it all sorted out this month…