14 August 2026

Maternal Oddity

(I spotted this parody in my file of old writings. Evidently, it's from June 2018.)

Ground Control to Major Mom
Ground Control to Major Mom
Take your protein pills and put your make-up on
Ground Control to Major Mom (ten, nine, eight, seven, six)
Commencing countdown, footwear on (five, four, three)
Odor suspicion! Did you wash your hands too? (two, one, liftoff)

This is Ground Control to Major Mom
We've really made the bed
And the kiddos want to know which shirts to wear.
Now it's time to leave the castle if you dare.

"This is Major Mom in Complete Control
I'm stepping out the door
And no one's listening to what I say
And I'm haunted by forgetting something today

For here
Is coffee in my right hand
No silence in the room
The toddler is blue
And there's nothing I can do

Though we've passed one hundred thousand smiles
I've misgivings still
And I hope my husband knows which way to go
That fool better love me very much he knows"

Ground Control to Major Mom
Your mobile's dead, there's something wrong
Can you hear me, Major Mom?
Can you hear me, Major Mom?
Can you hear me, Major Mom?
Can you...

"Here am I coffee in my right hand
No silence in the room
The toddler is blue
And there's nothing I can do"

04 August 2026

The Alexandrian Moment

For giggles, I put a short story up as an Amazon Kindle offering: The Alexandrian Moment

30 July 2026

Workaround gamescope invisible cursor bug in Ubuntu 26.04

The bug

On Ubuntu 26.04 (resolute, which ships gamescope 3.16.20), launching a game through gamescope with --force-grab-cursor can make the mouse pointer vanish. Upstream: https://github.com/ValveSoftware/gamescope/issues/2180

Dropping --force-grab-cursor avoids the bug, but that flag is what confines the pointer to the game window on a multi-monitor setup, so removing it is not an acceptable fix here.

A Workaround

Only one thing worked for me: build the older questing gamescope 3.16.15 and run it instead of resolute's 3.16.20.

Everything else raised on #2180 and related threads failed or did not apply:

  • --hide-cursor-delay 99999 — no effect.
  • WLR_NO_HARDWARE_CURSORS=1 — no effect.
  • Borderless-windowed / backend switching — unreliable.
  • winecfg / protontricks "capture mouse in fullscreen" — Proton/Wine only, so no help for a native-Linux game.
  • Downgrade further, to 3.14.x — unnecessary; 3.16.15 sufficed.

Both 3.16.15 and 3.16.20 are 3.16.x, so the regression landed in a commit between those two tags.

Procedure for Agents

Build gamescope 3.16.15-2 from Ubuntu questing sources and install, self-contained, under ~/Stow/gamescope-questing. No root, no system changes. resolute dropped wlroots 0.18 (ships 0.19), which 3.16.15 needs — Debian patch 0006 wires gamescope to the system libwlroots-0.18-dev, and the Debian tarball strips the vendored subprojects/wlroots — so build wlroots 0.18 from its matching Ubuntu source into the same prefix.

Sources

All from the Ubuntu archive. Confirm each download's checksum against the Checksums-Sha256 field of its .dsc.

Prerequisites

Install both packages' Build-Depends (see each .dsc). gamescope's libwlroots-0.18-dev is supplied by the wlroots build below; wlroots' libcairo2-dev is needed only for examples, which are disabled.

Build

Prefix for both: PREFIX="$HOME/Stow/gamescope-questing". Apply each package's Debian quilt patches before configuring:

while read p; do patch -p1 -i debian/patches/$p; done < debian/patches/series

1. wlroots 0.18.2 -> $PREFIX

meson setup build --prefix="$PREFIX" --libdir=lib --buildtype=release \
  -Dexamples=false -Dwerror=false
ninja -C build install

Installs libwlroots-0.18.so, headers under include/wlroots-0.18, and lib/pkgconfig/wlroots-0.18.pc.

2. gamescope 3.16.15 -> $PREFIX

Two source edits after patching:

  • src/meson.build: patch 0006 hardcodes /usr/include/wlroots-0.18 in reshade_include. Replace with join_paths(get_option('prefix'), 'include', 'wlroots-0.18').
  • src/meson.build: vcs_tag() has no git tree, so the --version banner is blank. After gamescope_version_conf = configuration_data() add gamescope_version_conf.set('VCS_TAG', '3.16.15').
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:\
/usr/lib/x86_64-linux-gnu/pkgconfig:\
/usr/lib/pkgconfig:\
/usr/share/pkgconfig"
meson setup build --prefix="$PREFIX" --libdir=lib --bindir=bin --buildtype=release \
  -Dpipewire=enabled -Denable_openvr_support=false \
  -Dcpp_link_args='-Wl,-rpath,$ORIGIN/../lib' \
  -Dc_link_args='-Wl,-rpath,$ORIGIN/../lib'
ninja -C build install

Choices, matching the Debian rules except where noted:

  • -Dpipewire=enabled -Denable_openvr_support=false from Debian rules.
  • bindir=bin, libdir=lib (Debian uses /usr/games) so the tree suits a stow package.
  • PKG_CONFIG_PATH puts $PREFIX first so the staged wlroots-0.18 wins.
  • rpath $ORIGIN/../lib lets gamescope find its bundled libwlroots-0.18.so both in the raw prefix and after stowing.

Verify

readelf -d "$PREFIX/bin/gamescope" | grep RUNPATH        # $ORIGIN/../lib
ldd "$PREFIX/bin/gamescope" | grep wlroots               # resolves inside $PREFIX
"$PREFIX/bin/gamescope" --version                        # gamescope version 3.16.15

24 July 2026

Time Machine Quick Reference

The Spertilo Live Music Time Machine is a great little device, with a delightful interface. It streams live shows from archive.org and phish.in, especially Grateful Dead for 1966–1995.

I use it frequently but I infrequently need to comb their site/FAQ/etc to find button combinations for some Micro edition features. Here's a quick reference:

Micro model reference only. No Bluetooth. No Experience Mode.

Setup

  • Audio: analog out via 1/8" headphone jack. Plug into powered speakers, an amp, or earphones.
  • Power: USB cable, lower right corner.
  • WiFi (first boot, or after a failed connection):
    • Turn Year to scroll network names; red name with ">" is the candidate. Press Select to choose.
    • Hidden network: choose HIDDEN_WIFI and enter the name manually.
    • Passkey entry: turn Year to move the cursor, Day to jump 10 characters, Select to enter a character, DEL to erase, Stop to finish.
    • Credentials persist until the network changes.

Play a Show

  1. Stage a date with the Month, Day, Year knobs. Venue appears if a tape exists; no venue, no show.
  2. Press Select. The best tape plays.
  3. Play/Pause, Stop, Rewind, FFwd behave as expected.
  • Hold Select: cycle through every tape on the staged date; release to play the one displayed. White id = soundboard, red id = audience.
  • Rew / FFwd: previous / next track.
  • Stop: halt playback, return play head to start of show.
  • Staged and selected dates are independent: browse while listening.
  • Set break: 10 minutes of silence between sets. FFwd skips it.

Knob Presses

KnobPress
MonthDim the screen
DayJump to next date with a tape
YearToday-in-history for staged year; press again to cycle years with tapes

Volume: dim the screen (press Month), then Rewind lowers and FFwd raises volume. Turn any knob to wake the screen.

Screen

  • Top: staged date, MM-DD-YY.
  • Below: venue/city/state, alternating with tape id (scrolls if long).
  • Middle: current and next track, red text.
  • Bottom: selected date, MM-DD-YYYY. Bottom right: playstate.
  • Screen sleeps after 30 minutes idle. Any knob or button wakes it.

Menu — Hold Power

Hold Power until the menu appears. The site says 3 seconds in one place, 5 in another; hold until you see it.
A short Power press stops playback and dims the screen.

  • Collections: add artists. Spell the collection name with the Day and Year knobs; once under 30 matches, pick from the list, choose Finished. Device restarts.
  • WiFi: force reconnection to a different network.
  • Update Code: wait ~1 minute for the "Press Select Button" prompt, then press Select. No prompt, no update.
  • Update Firmware: runs on its own. Update encouraged; pre-update units skip tracks since archive.org went https-only (March 2024).
  • Factory Reset: restore shipped software.

Current versions as of April 2024: software 2.1.3, firmware 1.23.0 20240408.

Troubleshooting

  • Dead on arrival: reseat both ends of the power cable, plug in, wait 10 seconds, unplug, plug back in.
  • Connected but silent: check the audio connection.
  • Phish silent: run Update Code.
  • Tape choice: default ranks soundboard first, then favored taper, downloads, track count, named tracks, rating. Hold Select to override.