Louis Maddox
banner
permutans.bsky.social
Louis Maddox
@permutans.bsky.social
Combinatorially curious https://spin.systems
Pinned
My new library and CLI for precise file patching is up!

textum docs.rs/textum/lates...

You give a target to delete/replace/insert at, and whether to include/exclude/extend the match boundary

Target can be specified as:
💬 String 🧩 Regex 📏 Line/Char/Byte # 📐 Position (row, col)

🔮 tree-sitter AST 🔜
What if you had a secondary form of docs that you had some way of deploying ‘against’ your code, in particular situations [like debugging] to show the logic but not merely to trace calls, also to annotate?

We tend to do this already but the human legible annotations tend not to go into a framework
I wonder what you’d get if you extracted a form of docs from code comments? I don’t see docstrings as for ‘business logic’

Pseudocode/literate program adjacent. I suspect intensifying that form of document could maximise a sense of trust in what’s executing as well as ability to resume work/remodel
November 19, 2025 at 11:55 PM
It is entirely possible that my current documentation fixation is unconsciously an overrotation on received wisdom that “docs don’t matter now that LLMs will read all the code”… An idea that would lead to systemic loss of informal knowledge
November 19, 2025 at 9:51 PM
Reposted by Louis Maddox
periodic reminder of the existence of Atkinson Hyperlegible, a free font available from the Braille Institute designed to improve readability for people with low vision

I use it in talks because it's pretty and also because, as an audience member, I am perpetually squinting at people's slides
Atkinson Hyperlegible Font - Braille Institute
Read easier with Atkinson Hyperlegible Font, crafted for low-vision readers. Download for free and enjoy clear letters and numbers on your computer!
www.brailleinstitute.org
November 17, 2025 at 4:19 AM
Reposted by Louis Maddox
“lazy use of unwrap blew up a process and took out the internet” bzzt. wrong. judicious use of unwrap blew up a process instead of allowing an Extremely Named CVE to happen and spraying your bank account credentials all over the public internet
People want a technical solution to what is ultimately a judgement problem.

People know that unwrap can cause a panic. That's the choice that's being made when you unwrap. Changing the name won't change that.
November 19, 2025 at 5:10 PM
Reposted by Louis Maddox
Tired: Spotify Wrapped
Inspired: Cloudflare Unwrapped

Jokes aside, remember to #hugops. Nobody is immune from mistakes, and dealing with this stuff is really stressful.
November 19, 2025 at 6:37 PM
Figured out how to cfg(test)-gate debug logging with env var control such that you get ergonomic defaults but can always override github.com/lmmx/syncdoc...
November 19, 2025 at 7:27 PM
Reposted by Louis Maddox
i wrote about humanoid robots - both the hype and the very real progress being made in this sector - for @harpers.bsky.social. read all about it here: harpers.org/archive/2025...
Kicking Robots, by James Vincent
Humanoids and the tech-­industry hype machine
harpers.org
November 19, 2025 at 6:03 PM
Reposted by Louis Maddox
I agree “or panic” is better but my preference continues to be something like “assert_some”. I find that conveys the time when it is appropriate to use and connects it to the assert! macro (which can also panic…).
November 19, 2025 at 3:34 PM
Reposted by Louis Maddox
#rustlang hot take: We should rename .unwrap() to .or_panic(). (And .expect() to .or_panic_with().) "Unwrap" is a terrible name for the panicking function, especially since we also have things like .unwrap_or() and .unwrap_or_default() which never panic.
November 19, 2025 at 7:32 AM
Interesting, TIL ctor::ctor as in 'c(onstruc)tor' docs.rs/ctor/latest/...

Useful for one-off tasks, I see it as idiomatically to be used to allow main code to run

e.g. delta-rs uses it to set handlers for clouds github.com/delta-io/del...
codex uses it for prctl syscalls github.com/openai/codex...
ctor - Rust
Procedural macro for defining global constructor/destructor functions.
docs.rs
November 19, 2025 at 3:37 PM
My most advanced test suite to date
- CLI tests and API tests (main​.rs submodule) in the main crate
- I/U tests in the core [parsing] crate with fixtures generated at test time via regex-based parser
- I tests + a shedload of U tests in the migrate crate (using a mod​.rs) github.com/lmmx/syncdoc...
syncdoc/syncdoc-migrate/src/tests/diff at master · lmmx/syncdoc
Proc macro to inject docs from external files into Rust code - lmmx/syncdoc
github.com
November 19, 2025 at 2:13 PM
Initial impression of Apple AutoMix song transitions was it felt designed to suppress music’s presence (transitions are how we recognise songs whatsoever), but I think more accurate to say it’s designed for disjointed playlists/shuffle. Feels homogenising when used on full EPs as they already cohere
November 19, 2025 at 1:29 PM
Lord forgive me for what I’m about to do

∧_∧
  (。・ω・。)つ━☆・*。
⊂/  /  ・゜
 しーJ    °。+ * 。 
      pub(crate) mod
      pub(crate) use
      pub(crate) fn
      pub(crate) fn
      pub(crate) fn
November 19, 2025 at 1:08 PM
Apple Glass on iPadOS has Kubuntu vibes
November 19, 2025 at 1:04 PM
A TUI text editor is just a CLI tool whose flags are a pattern language
November 19, 2025 at 11:44 AM
My hunks runneth over
November 19, 2025 at 2:57 AM
You surely won’t regret committing 200+ snapshots
November 19, 2025 at 1:06 AM
hmmm is GitHub having a CloudFlare outage? getting a git "upstream connect error" (`gh` CLI via the API is fine)
November 18, 2025 at 8:36 PM
Reposted by Louis Maddox
Fresh Eyes as a Service: Using LLMs to Test CLI Ergonomics

recursion.wtf/posts/llms_a...
Fresh Eyes as a Service: Using LLMs to Test CLI Ergonomics
An LLM's attempts to use your tool approximate what a statistically average user would try. You can use that to automate basic CLI tool UX testing.
recursion.wtf
August 18, 2025 at 3:30 PM
The round tripping itself is still in finalisation but first glimpse at a kind of docstring linting it achieves as a side effect: this was all automated from parsing the outer signatures of the module items as tokens github.com/lmmx/asteris...

(syncdoc puts docstrings before other inner attributes)
November 18, 2025 at 4:53 PM
Reposted by Louis Maddox
cloudflare's on-duty IT staff bangs on the doors which I have padlocked from the inside as I calmly break open lava lamp after lava lamp and drink the contents
November 18, 2025 at 1:59 PM
Realising I can slide one key across from $ to % instead of performing a 2-keypress Fn+→ then $ to perform a brace pair jump… I swear I would watch a vim game show
November 18, 2025 at 2:15 PM
graphic::design.is(&my_passion);
November 18, 2025 at 1:21 PM
One day I’ll learn how to do preview releases… but that day is not today
November 18, 2025 at 12:44 PM
#CloudflareIsOverParty 🔥🔥🌪️🌩️ 🌪️🔥🔥
November 18, 2025 at 11:59 AM