Here are a few things that I posted on Mastodon because they were too short for a blog post, but which I think should be cross-posted anyway for archival:
- KVM “not compatible with” Linux or Mac OS: If you have a DVI KVM switch that says its “double-tap scroll lock to switch inputs” feature is only compatible with Windows, what they probably mean is “we listen for the scroll lock LED to blink and Windows is the only OS that maps the Scroll Lock keycode to a modifier in this day and age”. Here’s a script I wrote to trigger the switch on X11 and then made a taskbar icon for.
- Two-page CBZ to HTML conversion: If you’re stubborn like me and have a CBZ file containing a bunch of two-page spreads that Calibre splits and orders incorrectly when making an EPUB file, you too can work around the iOS Files app’s refusal to load subresources and turn it into a quick-and-dirty CBZ reader by embedding your pages into an HTML file using data URIs using this script I wrote… it actually performs quite well in my testing. (<2s load time for a 40MiB CBZ file)
- Sandboxing libusb: If you’re setting up systemd sandboxing for a libusb-based daemon, you’ll need to allow
AF_NETLINK
sockets (eg.RestrictAddressFamilies=AF_NETLINK
) if you want it to work… I’m still trying to figure out a workingDeviceAllow
string for my CM19A so I can go back to theDevicePolicy=closed
andPrivateDevices=yes
I was using with my CM17A. You can poke at the full systemd unit file at ssokolow/fan_remote on GitHub. - TekSavvy DSL, IPv6, and OPNSense: If you’re on TekSavvy DSL, following the “IPv6 for generic DSL dialup“ guide then restarting your router and disconnect/reconnect cycling LAN devices will WORK to get you IPv6 (you may need to toggle Firefox’s DoH to get fallback working on https://ipv6-test.com/ )… but it won’t get you ICMPv6. Follow this “How to Configure IPv6 in Your Home Network with ISP such as Comcast Xfinity” guide for that but set “any” as the destination address instead of “WAN address” or it won’t work.
- 86Box and Flatpak: If you’re getting strange read/write errors or “sharing violation”s when running “make boot disk” tools/batch files in 86Box and you’re using the Flatpak version, create your floppy disk images inside
~/.var/app/net._86box._86Box/
or grant a manifest permission. Apparently there’s a bug or incompleteness in the Flatpak documents portal FUSE filesystem. - Missing CD Audio in Games: If you get an
MMSYSTEM262
error from The Incredible Toon Machine and no CD music (or just no CD music from Age of Empires in general) on Windows 9x and you have more than one CD drive (eg. physical and DAEMON Tools or Alcohol 52% Retro Edition), the fix is probably to go intoControl Panel → Multimedia → Devices → Media Control Devices → CD Audio Device (Media Control) → Properties → Settings
… and change “Default CD-ROM drive for playing CD music”.
I’m not sure how to do this on Windows XP since the equivalent to that lastSettings
button does nothing when clicked, so the workaround for newer Windows versions is just to go into the system management console and swap the drive letters of your optical drives. (Though that may make some badly-designed games require a reinstall to get them to look at the new drive letter.) - Flaky iPhone: If you’ve got a hand-me-down iPhone where the flashlight or rotation lock occasional toggle without being asked, the touch sensor on the back may be too sensitive. Try turning off the “tap on the back of the phone to…” feature and see if that fixes it. (For me, it had become so sensitive it was activating through the Otter Box belt clip I’m using as a lens cap and the air gap below it.)
- YD-RP2040: The YD-RP2040 isn’t 100% compatible with name-brand Raspberry Pi Pico boards. If you need to build something that has it acting as a USB host, prepare for the slightly fiddly job of tacking a piece of resistor leg between the two legs of a BAT54C barrier diode facing the USB C connector to allow current from
Vin
to flow to the USB connector (I’ve contributed an annotated photo in the ps2x2pico README … also, the(VBUS)
and(VSYS)
silkscreens on the bottom are wrong.Vout
is notVBUS
. Follow this schematic. - Display Alignment in KDE: If snap-to-edge behaviour in KDE Display Settings is preventing you from getting the monitor alignment you want (eg. top-aligned 1280×1024,1920×1080,1280×1024), try changing (but not applying) resolutions, then snapping, then changing them back.
- No route to host: If your client says “No route to host” on some ports but not others, double-check your server’s firewall configuration… for example, if you’re trying to use UFW and something also installed firewalld behind your back, you’re going to get very confusing symptoms that won’t be fixed by asking UFW to flush your iptables and re-create them.
- annoyingasians.mpg: If you ever wondered what the music was from an old ebaumsworld video named
annoyingasians.mpg
with no other context… searching the filename on YouTube allows Content ID to find the answer. It’s called 중화반점. - Firefox Smooth Scrolling: If you’re getting smooth scrolling from your scroll wheel in Firefox despite the checkbox still being unchecked and you don’t like your scrolling being slow/laggy, try going into
about:config
and toggling thegeneral.smoothScroll.mouseWheel
pref to also be false. - WinSCP: If you’re using WinSCP’s
synchronize
command in a script but you don’t edit your script very often and your new exclusion pattern seems to be getting ignored, check if you’re trying to name a directory without including the trailing slash. - Occam’s Razor: Put a pin in this for future sharing → https://www.youtube.com/watch?v=mO46CNftRDs
“Actually, it’s not asteroid bacteria… we discovered that bacteria managed to evolve to eat the cleaning products we use to sterilize clean rooms” is one of the most intuitive examples I’ve seen for why people shouldn’t leap to assuming fantastic answers like UFOs or cryptids. - Python enums: Because of how Python’s
enum.Enum
implements nominal typing and how Python imports work, it risks seemingly mundane refactorings causingvar == FooEnum.Bar
comparisons to start to mysteriously fail when PyQt and Qt Designer’s “Promote…” feature are involved. If you don’t need such strict nominal typing, usingenum.IntEnum
to relax the equality comparison will avoid that source of footguns.