Everything should be made as simple as possible, but no simpler.
We moved to Normandy. My job suddenly vanished. I learned LLM coding.
I'm spending my time on digital audio programming, MIDI, music, lighting control or other things close to my heart, trying to establish a tiny empire.
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.
🌟 means "Stars"
👁 means "Subscribers"
🟢 means "Release version"
🕰 means "Most recent non-version commit"
(Last update 2026/09/16, 20:40:56 by https://github.com/rec/multi)
🧿 safer 🧿 (🌟 194 👁 2)
A safer writer for files and streams 26/05/09🟢Update version to v5.4.0
26/07/06🕰Move safer evaluation to recs |
🗃 tdir 🗃 (🌟 6)
Create and fill a temporary directory 26/05/09🟢Update version to v1.10.0
26/05/08🕰Make project compatible with uv and poetry |
🖋 editor 🖋 (🌟 11)
Open the default text editor 26/05/09🟢Update version to v1.8.0
26/05/08🕰Make project compatible with uv and poetry |
✂️ psplit ✂️
Split git patch files 26/05/09🟢Update version to v1.2.0
26/05/08🕰Make project compatible with uv and poetry |
🗜 gitz 🗜 (🌟 37 👁 2)
Tiny useful git commands, some dangerous 26/05/09🟢Update version to v1.9.0
26/05/08🕰Make project compatible with uv and poetry |
➰ rubband ➰
Python bindings for Rubber Band audio pitch shifting and time stretching 26/09/16🕰Add an icon |
🎨 nc 🎨 (🌟 4)
Named colors in Python 26/05/09🟢Update version to v1.2.0
26/05/08🕰Make project compatible with uv and poetry |
🗝 dtyper 🗝 (🌟 21 👁 3)
Fix and improve `typer` 26/06/03🟢Update version to v2.8.0
26/06/03🕰Maintain compatibility with `typer` (fix #14) |
🏫 clsprop 🏫 (🌟 2)
Just like @property but for classes 26/05/09🟢Update version to v1.5.0
26/05/08🕰Make project compatible with uv and poetry |
🧵 threa 🧵 (🌟 2)
Better threads 26/05/09🟢Update version to v1.11.0
26/05/08🕰Make project compatible with uv and poetry |
⛏ sproc ⛏ (🌟 12)
Subprocesseses for subhumanses 26/05/09🟢Update version to v2.6.0
26/05/08🕰Make project compatible with uv and poetry |
🍱 zoialib 🍱 (🌟 4 👁 2)
A patch librarian for the Empress ZOIA 26/05/09🟢Update version to v0.8.0
26/05/08🕰Make project compatible with uv and poetry |
🌱 xmod 🌱 (🌟 5)
Turn any object into a module 26/05/09🟢Update version to v1.10.0
26/05/09🕰Make project compatible with uv and poetry (fix #9) |
🛎 impall 🛎 (🌟 8)
Test-import all modules 26/06/08🟢Update version to v2.0.0
26/06/08🕰Update type annotations to 3.10 |
🐜 abbrev 🐜 (🌟 5)
Expand abbreviations 26/05/09🟢Update version to v1.4.0
26/05/08🕰Make project compatible with uv and poetry |
🎴 dek 🎴 (🌟 4)
The decorator-decorator 26/05/09🟢Update version to v1.6.0
26/05/08🕰Make project compatible with uv and poetry |
🎙 recs 🎙 (🌟 5 👁 2)
The Universal Recorder 26/05/09🟢Update version to v0.12.0
26/09/16🕰Update pyproject.toml dependencies |
🛸 ufor 🛸
universal Format: portable definitions for time-based data 26/09/16🕰Add an icon |
🚂 enge 🚂
an audio synthesizer engine in Python and Rust 26/09/16🕰Add scoped LFO modulation for synths and samplers |
🎪 showco 🎪
Local show control for recs and streamo 26/09/16🕰Add showCo lighting cues with Go, Back, and persistent state |
🎶 tuney 🎶 (🌟 4 👁 2)
Turn text into music 26/05/09🟢Update version to v0.3.0
26/09/16🕰Update pyproject.toml dependencies |
🚰 streamo 🚰
Stream audio to all services 26/09/16🕰Add emoji |
🧚 lyte 🧚
Python lighting player for all lights 26/09/16🕰Update pyproject.toml dependencies |
🥞 pullman 🥞
Manage ghstack pull requests 26/05/09🟢Update version to v0.12.0
26/05/08🕰Make project compatible with uv and poetry |
🔧 fixo 🔧
Semi-automatic rule based editing of Python code 26/05/09🟢Update version to v0.3.0
26/05/08🕰Make project compatible with uv and poetry |
🏺 fil 🏺 (🌟 3)
Read/write JSON/TOML/Yaml/txt 26/05/09🟢Update version to v1.6.0
26/05/08🕰Make project compatible with uv and poetry |
🔢 plur 🔢
Simple universal word pluralizer 26/02/03🟢Update version to v1.1.0
26/05/08🕰Make project compatible with uv and poetry |
🍇 cfgs 🍇 (🌟 3)
XDG standard config files 26/02/03🟢Update version to v0.14.0
26/05/08🕰Make project compatible with uv and poetry |
🖐️ fing 🖐️ (🌟 6)
A universal representation of fingering systems for winds, reeds, and brass 26/05/09🟢Update version to v0.3.0
26/05/08🕰Make project compatible with uv and poetry |
🌐 nmr 🌐
Name all canonical things 26/05/09🟢Update version to v0.11.0
26/05/08🕰Make project compatible with uv and poetry |
🗣 def_main 🗣
A decorator for main 26/02/03🟢Update version to v0.12.0
26/05/08🕰Make project compatible with uv and poetry |
📓 hardback 📓
Hardcopy backups of digital data 26/02/03🟢Update version to v0.10.0
26/05/08🕰Make project compatible with uv and poetry |
📦 backer 📦
Continuously back up files 26/02/03🟢Update version to v0.8.0
26/05/08🕰Make project compatible with uv and poetry |
🌊 wavemap 🌊 (🌟 10 👁 2)
Memory map WAVE or raw audio files 26/05/09🟢Update version to v2.2.0
26/05/08🕰Make project compatible with uv and poetry |
🛍 loady 🛍 (🌟 6 👁 2)
Load Python code and data from git 26/02/03🟢Update version to v1.9.0
26/05/08🕰Make project compatible with uv and poetry |
🏃 runs 🏃 (🌟 3 👁 2)
Run a block of text as a subprocess 26/02/03🟢Update version to v1.3.0
26/05/08🕰Make project compatible with uv and poetry |
🐘 fortune 🐘
A Mastodon bot for /usr/games/fortune 26/05/09🟢Update version to v0.3.0
26/05/08🕰Make project compatible with uv and poetry |
📚 multi 📚
Manage all my other projects 23/02/02🟢Update to version v0.1.0
26/09/02🕰Modify multi/commands/bump_version.py, multi/commands/resume.py, multi/commands/update.py, pyproject.toml, uv.lock |
⬜🟩🟦🟥 blocks 🟥🟦🟩⬜
Solve a block puzzle 26/02/03🟢Update version to v1.1.0
26/05/08🕰Make project compatible with uv and poetry |
❓ test ❓
Tiny bits of experimental code 26/08/22🕰Modify python/jsonl.py |
⚫ dotfiles ⚫
My dotfiles 26/09/16🕰fixup! Add project-summary.md |






