Today I learned
This page contains short articles and small snippets on subjects I recently learned about.
Removing a folder in every borg archive
A bunch of folders should not have been included into borg archive. Fortunately, borg allows to remove those is two steps:
# Assuming BORG_* environment variables are set
borg recreate --exclude 'path/to/folder1' --exclude 'path/to/folder2'
borg compact
A minimal debian for machinectl
I sometime need a quick, minimal debian server to test a package without compromising my main workstation. This machine has an uncommon networking setup, so I need systemd-resolved installed on the guest early.
# /etc/systemd/nspawn/my-container.nspawn
#
# This strip down sample shows the container network configuration.
# It needs to be named as the container. Here: my-container.nspawn
[Network]
VirtualEthernet=yes
[Exec]
ResolvConf=bind-uplink
# First, we create the minimal base system
sudo debootstrap \
--variant=minbase \
--include=dbus,systemd-container \
stable \
/var/lib/machines/my-container \
https://deb.debian.org/debian/
# Then, we start the container and open a sheel
sudo machinectl start my-container
sudo machinectl shell my-container
# Lastly, we make sure the the networkd service is enabled and running
systemctl enable --now systemd-networkd
networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 host0 ether routable configured
2 links listed.
No roaming to activate Signal
I broke my phone and had to revive my old Cat S22, but I couldn't reactivate Signal: here in Canada I wouldn't receive the activation SMS sent to my French SIM. Turns out that roaming needs to be deactivated: Settings > Mobile Network > Roaming. I also disconnect the 4G for good measure, connected to WiFi and tried to activate my Signal account again. This time, it worked !
Presentation of Ynput's Ayon at the USDrinks
Today during the USD meeting at Moment Factory, Robin De Lillo shown us Ayon, an Open Source pipeline for VFX / animation / creative studios. It looks quite neat, and I like that they develop it in the open, fully on GitHub, with features funded by paying customers. I'd love to have a proper demo of their product some times in the future.
SIM management with mmcli
Broken phone, broken screen and a broken digitizer. It kept on registering random touches on the SIM PIN screen, unfortunately blocking it. My backup phone does not offer to enter the PUK PIN, so I had to find another way to unlock the SIM. Thankfully I have a Mobian compatible Pinephone where ModemManager could be installed.
$ sudo apt install modemmanager
$ sudo mmcli -i 0 --pin=<pin_number> --puk=<puk_number>
Tips courtesy of https://discourse.ubuntu.com/t/entering-sim-passwords/19909.
OpenDCC is released
The team behind the modular OpenUSD editor ShapeFX Loki released its Apache-2.0 licenced framework: OpenDCC.
From the README:
OpenDCC is an Apache 2.0 licensed, open-source Digital Content Creation (DCC) application framework for building modular, production-grade 3D tools. It combines a flexible, plugin-driven architecture with an industry-standard Qt-based interface, embedded Python scripting, OpenUSD and Hydra integration.
It looks very promising and I'm waiting for the first packages to try it.
ufbx, a single source Open Source C++ FBX loader
The FBX is a proprietary 3D scene file format from Autodesk. It is ubiquitous in the industry, especially in games. Its many iterations makes it a format rather difficult to work with and its closed source prevents free software application like Blender to directly link against the Autodesk libs: Blender's developpers had to reimplement parts of an FBX I/O themselves, with not great results.
Fortunately the ufbx seems to be a rather capable FBX reader. No writer yet, but Blender 4.5 will have a new ufbx based importer.
Testing USD hooks outside of Blender
Part of our pipeline is automated through a Blender extension that pre / post process USD with USDHooks. For a long time, our integration tests had to actually run the Blender executable: we had to import the USD modules, and those were not available through the pip installable bpy module. Installing usd-core alongside bpy wouldn't work: we would have two USD libraries running into the same process (one from usd-core, the other from bpy) and that's a recipe for disater.
Thankfully, since Blender 4.4, the function bpy.expose_bundled_modules() makes the third-party bundled modules, notably USD, available from the rest of the application.
import unittest
import bpy
bpy.expose_bundled_modules()
from pxr import Usd
class MyTest(unittest.TestCase):
...
Thanks to bpy.expose_bundled_modules() we can now run our tests fully from a Python interpreter, without running the Blender executable:
- as we stay fully in the Python world, the setup is the same on local Windows workstation and Linux CI machines
- we can simply run and debug our tests from the native IDEs integrations