Notes for March 13-19

Automating all the things.

Monday, 2023-03-13

Random fiddling day.

  • Revisited RDP connections from to a domain-joined machine: Security protocol set to TLS, DOMAIN\username authentication (not the UPN), Best quality.
  • Cleaned out my homebridge configuration (also disabled automatically adding 433MHz sensors discovered by OpenMQTTGateway, which was a cute puzzle to sort out).
  • Triggered some monthly restic backups. Remember, kids, always have an off-site backup.
  • Looked at ComfyUI, which is intriguing to say the least (and a breath of fresh air after kludgy Stable Diffusion WebUis where the actual workflow is a mess).
  • Sorted out some media archives.

Tuesday, 2023-03-14

I can never get the hang of Tuesdays. My died mid-afternoon, so I found myself with some time in between troubleshooting sessions.

  • Found it rather amusing that I serendipitously sorted out remote desktop domain authentication yesterday, almost as if I predicted this. Still can’t get Remmina to work with corporate WVD, though, so might have to turn the into a temporary “corporate” desktop.
  • Did some spelunking in OpenMQTTGateway code and MQTT topics to understand what it can decode in the 433MHz band and how it is mapped to topics.
  • Spent half an hour with WeasyPrint to generate a presentable document out of Markdown notes. Still the best PDF generation tool out there, and has pretty decent CSS support, plus it’s trivial to automate:
MARKUP = $(wildcard *.md)

all: $(MARKUP:.md=.pdf)

%.pdf: %.html layout.css
    python -m weasyprint -e utf8 -m A4 -s layout.css $< $@

%.html: %.md
    python -m markdown < $< > $@
  • Created a ComfyUI sandbox on and spent a while collecting all the requisite models and going through the (maybe too whimsical) examples. Really happy with the UX so far, and with the fact that I went with a 12GB GPU.
  • Began adding docstrings to my py-sdf fork to make it easier to use with VS Code autocomplete.

Wednesday, 2023-03-15

Mid-week slump. Slept horribly, had a lot of catching up to do, still managed to have a few productive breaks:

  • Realized 4 was already in Fedora testing and grabbed it (it went into mainstream 3 days later).
  • For the first time this year, added a little bit more content navigation functionality to the site. Still very happy with the way the static page generator turned out.
  • Given my work laptop woes, tried to get a semblance of my usual environment working over RDP device redirection:

Client (Fedora)

  • Remmina, Advanced, Redirect local microphone, sys:pulse
  • Remmina, Advanced, USB device redirection, id:0fd9:006d#3564:fef4,addr:01:0b

Also make sure you can access the USB devices (some might be automatically accessible to dialout group members, but this makes sure):

# cat /etc/udev/rules.d/70-passthrough-access.rules 
# Elgato StreamDeck
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="006d", MODE="0666"
# Webcam - tried it just to see if it worked, here for reference
SUBSYSTEM=="usb", ATTR{idVendor}=="3564", ATTR{idProduct}=="fef4", MODE="0666"

Server (Windows 11)

Run gpedit.msc and configure this setting:

Computer Configuration:
  Administrative Templates:
    Windows Components:
      Remote Desktop Services:
        Remote Desktop Session Host:
          Device and Resource Redirection:
            - Do not allow supported Plug and Play device redirection = Disabled

I have , but the above is what you need for USB pass-through.

The StreamDeck works great, the audio is passable, but I can’t get the camera to work since /freerdp still doesn’t support UVC camera pass-through (I already knew passing the raw USB device would be unfeasible, but I had to give it a go). For now, that only works in Windows and Mac/iOS clients.

  • Did a little more Fedora audio tweaking, including moving to a real-time kernel on the and setting to use pulseaudio (just because the preset for it had slightly lower latency):
# Quick set of essentials for audio priority
echo '@audio - rtprio 90
@audio - memlock unlimited' | sudo tee -a /etc/security/limits.d/audio.conf
echo 'fs.inotify.max_user_watches=600000' | sudo tee -a /etc/sysctl.conf
sudo usermod -aG audio $USER
sudo usermod -aG realtime $USER
sudo dnf copr enable ycollet/audilinux
sudo dnf install kernel-rt-mao

Thursday, 2023-03-16

Long meeting day, way into the evening.

  • Realized that a recent Raspbian update broke screen blanking on my automation dashboard, which can be worked around by reverting the X server version:
sudo apt install xserver-xorg-core=2:1.20.11-1+deb11u5
sudo apt-mark hold xserver-xorg-core
  • Spent a little trying to get the Linux Intune client to work in Fedora, even though it is unsupported. Got it to work via… , but crashes when syncing an AD account.
  • Fiddled with PyTorch 2.0, but xformers hasn’t really been updated yet, so most Stable Diffusion tools can’t make proper use of it yet.

Friday, 2023-03-17

Winding down for the weekend. was serviced, which meant doing the BitLocker dance and appeasing the InTune deities, so that took a chunk out of my day.

  • Updated my page with a more comprehensive set of tweaks that I refined while was MIA.
  • Realized the CSS font stack for this site could be improved for monospace fonts, so I re-did the entire thing while looking at modern-font-stacks, which is a very handy resource if you are designing text-intensive websites and want to deliver the best possible experience without any web fonts.
  • Investigated a possible uwsgi bug related to cron tasks.
  • Investigated how to programmatically take screenshots under Wayland using dbus.
  • Fiddled with pyxel as a way to port some code one of my kids wrote in PICO-8.

Saturday, 2023-03-18

Family day.

  • Decided to clean up and post before it got too stale (had to drop a fair chunk of it because it was outdated already).
  • Brief outing to attend local Chemistry Olympics (kid brought home bronze medal, yay!)
  • Decided to tackle the Docker Apocalypse and start moving all my public images to ghcr.io. Even though I have a private registry at home (and another in Azure) some of my images are in general use and need a public repository, and they’re all in GitHub anyway, so I’m starting with this GitHub Action as a baseline to build and push new images for each new tag:
# cat .github/workflows/build-image.yml
name: Build Image

on:
  push:
    tags:
      - v*

jobs:
  Build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3
      - name: Login to Registry
        uses: docker/login-action@v2
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }} 
      - name: Build and Push Docker Image
        uses: docker/build-push-action@v4
        with:
          push: true
          context: . 
          tags: |
            ghcr.io/${{ github.repository }}:${{ github.ref_name }}
            ghcr.io/${{ github.repository }}:latest

Since docker buildx is now largely usable, I will be updating my cross-platform images to use a slight variation on the above.

Sunday, 2023-03-19

Father’s Day over here, and another day impacted by machine issues.

  • Fiddled with rtl-433 a bit more, but I’m starting to realize it can’t pick up the decade-old 433MHz sensors I have.
  • My rebooted after updates to a corrupted filesystem (not sure if it’s a SATA issue or a btrfs one, but I know where I would place my bets), so I set the default boot device to the Windows NVME and begain reinstalling the Fedora drive as time permits:
# For later reference, this my baseline Fedora install:
# yabridge COPR
sudo dnf copr enable patrickl/yabridge-stable
# list of essentials I need:
sudo dnf install cabextract curl fontconfig git gnome-extensions-app \
gnome-shell-extension-pop-shell gnome-shell-extension-user-theme \
gnome-tweaks godot golang htop keepassxc kvantum liberation-fonts \
lm_sensors openscad remmina rpm-build rsms-inter-fonts syncthing \
tmux vim wine xorg-x11-font-utils yabridge docker
# RPM Fusion and MS web fonts
sudo dnf install \
https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm \
https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm
# VAAPI and Firefox hardware acceleration
sudo dnf install ffmpeg handbrake libva-utils libva-intel-driver \
intel-media-driver igt-gpu-tools
# groups
sudo usermod -aG dialout $USER
sudo usermod -aG video $USER
sudo usermod -aG docker $USER

In the meantime Windows makes for a slightly better thin DAW box and work thin client (I get UVC camera pass-through, can run all VSTs and have WSL), but, ironically, my xrdp configurations are so fine-tuned that mstsc.exe is slower than .

I guess you just can’t have it all…