Everything should be made as simple as possible, but no simpler.
We moved to Normandy. My job suddenly vanished. AI bores me. I took early retirement! Life is good.
So I'm spending my time on music and digital audio programm. I'm still open to work in digital audio, MIDI, music, lighting control or other things I find personally entertaining.
This is a dashboard of my active Python open-source projects on Github, mostly small- to medium-sized libraries that try to do one useful thing as clearly and thoroughly as possible.
(No AI was used in the writing or maintenance of any of these libraries.)
🌟 means "Stars"
👁 means "Subscribers"
🟢 means "Release version"
🕰 means "Most recent non-version commit"
(Last update 2026/02/03, 17:25:01 by https://github.com/rec/multi)
🧿 safer 🧿 (🌟 176 👁 2)
A safer writer for files and streams 26/02/03🟢Update version to v5.3.0
26/02/03🕰Many changes from the new toolchain |
🗃 tdir 🗃 (🌟 4)
Create and fill a temporary directory 26/02/03🟢Update version to v1.9.0
26/02/03🕰Accept suggestions from new toolchain |
🖋 editor 🖋 (🌟 10)
Open the default text editor 26/02/03🟢Update version to v1.7.0
26/02/03🕰Accept suggestions from new toolchain |
✂️ psplit ✂️
Split git patch files 26/02/03🟢Update version to v1.1.0
26/02/03🕰Accept suggestions from new toolchain |
🗜 gitz 🗜 (🌟 37 👁 2)
Tiny useful git commands, some dangerous 26/02/03🟢Update version to v1.8.0
26/02/03🕰Accept suggestions from new toolchain |
🎨 nc 🎨 (🌟 4)
Named colors in Python 26/02/03🟢Update version to v1.1.0
26/02/03🕰Accept suggestions from new toolchain |
🗝 dtyper 🗝 (🌟 20 👁 3)
Fix and improve `typer` 26/02/03🟢Update version to v2.6.0
26/02/03🕰Accept suggestions from new toolchain |
🏫 clsprop 🏫 (🌟 2)
Just like @property but for classes 26/02/03🟢Update version to v1.4.0
26/02/02🕰Fix tools.classifiers section in pyproject.toml |
🧵 threa 🧵 (🌟 2)
Better threads 26/02/03🟢Update version to v1.10.0
26/02/02🕰Fix tools.classifiers section in pyproject.toml |
⛏ sproc ⛏ (🌟 12)
Subprocesseses for subhumanses 26/02/03🟢Update version to v2.5.0
26/02/03🕰Accept suggestions from new toolchain |
🍱 zoialib 🍱 (🌟 4 👁 2)
A patch librarian for the Empress ZOIA 26/02/03🟢Update version to v0.7.0
26/02/03🕰Remove unused variable |
🌱 xmod 🌱 (🌟 5)
Turn any object into a module 26/02/03🟢Update version to v1.9.0
26/02/03🕰Accept suggestions from new toolchain |
🛎 impall 🛎 (🌟 8)
Test-import all modules 26/02/03🟢Update version to v1.6.0
26/02/03🕰Accept suggestions from new toolchain |
🗂 datacls 🗂 (🌟 3)
Take the edge off `dataclass` 26/02/03🟢Update version to v4.9.0
26/02/02🕰Fix tools.classifiers section in pyproject.toml |
🐜 abbrev 🐜 (🌟 4)
Expand abbreviations 26/02/03🟢Update version to v1.3.0
26/02/03🕰Accept suggestions from new toolchain |
🎴 dek 🎴 (🌟 4)
The decorator-decorator 26/02/03🟢Update version to v1.5.0
26/02/03🕰Move test_dek.py to test/ |
🎶 tuney 🎶
Turn text into music (#noAI) 26/02/03🟢Update version to v0.2.0
26/02/02🕰Return to using single quotes |
🌐 nmr 🌐
Name all canonical things 26/02/03🟢Update version to v0.10.0
26/02/03🕰Accept suggestions from new toolchain |
🎙 recs 🎙 (🌟 3 👁 2)
The Universal Recorder 26/02/03🟢Update version to v0.11.0
26/02/03🕰Update to version 0.10.0 |
🔉 vl8 🔉 (🌟 3)
Perturbed audio 26/02/03🟢Update version to v0.3.0
26/02/03🕰Accept suggestions from new toolchain |
💡 litoid 💡
Sequence DMX lighting 26/02/03🟢Update version to v0.2.0
26/02/03🕰Accept suggestions from new toolchain |
🗣 def_main 🗣
A decorator for main 26/02/03🟢Update version to v0.12.0
26/02/03🕰Remove .envrc |
📓 hardback 📓
Hardcopy backups of digital data 26/02/03🟢Update version to v0.10.0
26/02/03🕰Accept suggestions from new toolchain |
📦 backer 📦
Continuously back up files 26/02/03🟢Update version to v0.8.0
26/02/03🕰Accept suggestions from new toolchain |
🥞 pullman 🥞
Manage ghstack pull requests 26/02/03🟢Update version to v0.11.0
26/02/03🕰Accept suggestions from new toolchain |
🔧 fixo 🔧
Semi-automatic rule based editing of Python code 26/02/03🟢Update version to v0.2.0
26/02/03🕰Accept suggestions from new toolchain |
🏺 fil 🏺 (🌟 3)
Read/write JSON/TOML/Yaml/txt 26/02/03🟢Update version to v1.5.0
26/02/03🕰Accept suggestions from new toolchain |
🔢 plur 🔢
Simple universal word pluralizer 26/02/03🟢Update version to v1.1.0
26/02/03🕰Move test_plur.py to test/ |
🍇 cfgs 🍇 (🌟 3)
XDG standard config files 26/02/03🟢Update version to v0.14.0
26/02/03🕰Accept suggestions from new toolchain |
🌊 wavemap 🌊 (🌟 10 👁 2)
Memory map WAVE or raw audio files 26/02/03🟢Update version to v2.1.0
26/02/03🕰Accept suggestions from new toolchain |
🛍 loady 🛍 (🌟 6 👁 2)
Load Python code and data from git 26/02/03🟢Update version to v1.9.0
26/02/03🕰Accept suggestions from new toolchain |
🏃 runs 🏃 (🌟 3 👁 2)
Run a block of text as a subprocess 26/02/03🟢Update version to v1.3.0
26/02/03🕰Move test_runs.py to test/ |
🐘 fortune 🐘
A Mastodon bot for /usr/games/fortune 26/02/03🟢Update version to v0.2.0
26/02/03🕰Accept suggestions from new toolchain |
📚 multi 📚
Manage all my other projects 23/02/02🟢Update to version v0.1.0
26/02/03🕰Release all projects (fix #35) |
⬜🟩🟦🟥 blocks 🟥🟦🟩⬜
Solve a block puzzle 26/02/03🟢Update version to v1.1.0
26/02/03🕰Accept suggestions from new toolchain |
❓ test ❓
Tiny bits of experimental code 26/02/02🕰Add python/fix_error_messages.py |
⚫ dotfiles ⚫
My dotfiles 26/01/29🕰Many changes |






