Matrix is an experimental Rust kernel for composing long-lived software components across process and machine boundaries. A component can be a model adapter, a tool, a memory service, a user interface, or ordinary application logic. Matrix gives each running instance an identity and a generation, resolves its declared dependencies, controls which other components may call it, and tracks the resources it acquires. Consider a consumer receiving a stream from provider. While that stream is open, the provider process crashes and a replacement starts under the same logical name. Most plugin systems can tell you that provider exists again. Matrix is concerned with the harder question: does this chunk still belong to the exact instance that was authorized when the call began? ...
Zombie process and cyclic symlink: an interesting NAVI bug
I was wrapping up the NAVI 0.3.8 release when I noticed a navi process running with high CPU. Nothing crazy — a headless process that didn’t terminate, probably a stuck task. I went to investigate. The diagnosis btop showed two threads at ~70% CPU each. ps confirmed: 1 2 3 4 5 $ ps -p 425090 -L PID LWP TTY STAT TIME COMMAND 425090 425090 ? S 0:00 navi 425090 425124 ? R 10:28 tokio-rt-worker 425090 425125 ? R 10:27 tokio-rt-worker Two tokio-rt-worker threads with over 10 hours of accumulated CPU time. The main thread was sleeping (S). Those two were running (R) non-stop. ...
rustquty 0.4.3: Trustworthy Quality Gates Need Trustworthy Metrics
The first public versions of rustquty shipped with a nice idea: local-first quality gates for Rust projects. Run one command. Collect metrics. Compare against a baseline or absolute thresholds. Fail if quality regressed. That model still feels right to me. But this week I hit the part every tool author eventually hits: the moment where the tool says something so obviously wrong that you stop trusting the entire report. For rustquty, that happened in two collectors: duplicates and loc. ...
rustquty: The Local Quality Scanner Rust Projects Deserve
I was in the middle of a refactor in animedb, one of my Rust projects. Ran cargo fmt --check, ran cargo clippy, ran cargo test. All green. Pushed the PR. A few days later, looking at the diff, I noticed one function had ballooned to over 100 lines. Another had 8 levels of nesting. Nobody commented. CI passed. Because CI doesn’t look at that. I’d seen this happen before. Quality doesn’t disappear overnight. It degrades slowly, one function at a time, until one day you look at a module and think “how did this turn into such a mess?” ...
I Added Voice-to-Text to Noctalia Shell So I Can Stop Typing
It was a Wednesday afternoon. I was writing documentation for one of my projects and my hands were getting tired. Not from the code — from the prose. Paragraph after paragraph of explaining things in plain English while my fingers begged for mercy. I thought: why am I still typing all of this? I have a microphone. I have a Wayland compositor. I have a shell that I built myself. And yet, every time I wanted to dictate text, I’d have to open a browser, go to some cloud service, copy the text, paste it back. Or install some Electron app that eats 400 MB of RAM just to sit in the background and do nothing. ...