Louis Maddox
banner
permutans.bsky.social
Louis Maddox
@permutans.bsky.social
100 followers 96 following 1.7K posts
Combinatorially curious https://spin.systems
Posts Media Videos Starter Packs
Pinned
✍️ Wrote about keeping calm and shipping OSS and why arguing for a feature should feel more like giving a proof against the spec than trying to win a debate cog.spin.systems/keep-calm-an...
Keep Calm and Ship On 🚢
Your guide to being a model OSSizen
cog.spin.systems
Reposted by Louis Maddox
Someone dropped a vibe Clauded MegaSuperDuper 3000 type project tangentially (in a name dropping way) related to the server in question and it was crickets in the otherwise v enthusiastic chat
If you enjoy images and wish you could snapshot them in your Python tests as strings, check out `czkawka` freshly arrived on PyPI from the land of the Rustaceans 😁 github.com/lmmx/czkawka

Technically this is actually based on `image_hasher` crate functionality but I'm bundling it together in here 🤫
Oh sweet 3.9 just hit EOL 🚮
"I'm caching my perceptual hashes" is just so fun to say
Discovered today: when your feature branch gets a new remote commit (e.g. by a CI fixer bot), and push fails with

! [rejected] the-branch -> the-branch (stale info)
error: failed to push some refs to github.com:your/repo.git

If you `git fetch` you can in fact `--force-with-lease` push & overwrite!
Spoken like a man who knows my pain
*Computes dir-wide thresholded image similarity*
[Realises I want to specify the paths]
*Computes pairwise thresholded image similarity*
[Realises I want to get a distance metric]
*Computes pairwise image dis-similarity metric*
[Realises I could store the hash instead of the Hamming distance vs. it]
Fun puzzle: building both regular (manylinux) + musl Python wheels, my CI started failing saying GLIBC is too old (on ubuntu-latest so not), correctly guessed Swatinem/rust-cache action was reusing incompatible build artifacts between the 2 wheel types, poisoning the cache [musllinux uses musl libc]
Regrettably my brain refuses to learn how to type "czkawka" pypi.org/project/czka...
Damn is your name `Arc::new(AtomicBool::new(false))` because y—
Reposted by Louis Maddox
This remains the funniest way to hear about an internet outage, though.
One Python wrapper for czkawka and it's… glorified subprocess script -__-
Just discovered (or maybe just needed to use) filters for htop with F4... really gotta revive my process tree inventorying prototype and #rewriteitinrust
Encountering nix for the first time... because I can't work out how else to send a SIGINT to a child process (not you unsafe libc)
I rate how you can just hide your own comments as resolved as if they're a review without actually using GitHub reviews
V funny to me that Spotify tried curated playlists and got backlash for appearance of pigeonholing artists by identity category (and was), but when SoundCloud does it it’s just the best RecSys you’ve ever heard
*Rabbit hole intensifies*
this made me look at `MaybeUninit` and I just learned some cool things:

1. holy fuck using a union w/ the unit type for that is kinda genius
2. wrapping `ManuallyDrop` makes so much sense (bc we don’t know if it’s initialized lol)

doc.rust-lang.org/src/core/mem...
Was reminded of a technique using signal-hook (which was recording Ctrl-C not ignoring it) github.com/ConSol-Lab/P...

Solved ze bug by preventing teardown killing the pager, using RAAI to ignore SIGINT while the pager is active, then restoring the handler after less exits github.com/sharkdp/bat/...
github.com
Saw everyone else releasing Python 3.14 packages and immediately felt left out then as if on cue someone sent a PR to a random PyO3 package of mine so I could join the club (⌒_⌒)
Terminal ownership signal handling process spawning Drop impl diagnosis issue free to a good home 🤝 github.com/sharkdp/bat/...
github.com
strace is a beautiful name for a fd