Author: canutethegreat

  • Patronus dev log 3: back in September, with 43 red CI runs and no green ones

    Patronus dev log 3: back in September, with 43 red CI runs and no green ones

    Part 3 in the Patronus dev log series.

    Backdated, written in November 2026 from git and CI records. Part 2 ended with nine months of silence.

    I picked Patronus back up the same day as Horcrux, September 24, 2026. The first job was the same: make CI run. Patronus got a Rust CI workflow that day (fmt, clippy, tests, an eBPF check, a full-workspace build). It failed. Over September 24 to 30 the Forgejo record shows 57 runs: 43 failures, 7 cancelled, 7 skipped, 0 successes. Of those, rust-ci.yml had 42 failures.

    The first failures were the dull kind: a missing libmnl-dev, a missing libelf, no linker on the runner image, and a real bug. An eBPF map-create call took its name as i8 and needed u8, which was blocking the detection and CNI crates from building at all.

    The Dockerfile again

    Same mistake as in Horcrux, found the same day. The Dockerfile had become a generic FROM rust build on a Debian slim image. The repo notes now say so, in short:

    A generic FROM rust -> cargo build -> debian slim Dockerfile is wrong.
    It crept in once and was fixed on 2026-09-24.

    Patronus builds through real Portage against its own overlay. The ebuild kept breaking, in familiar ways: virtual/rust doesn’t exist (same bug as Horcrux, the commit says so), acct-user and acct-group variable names were wrong, a USE flag was called carp in the code and ucarp in IUSE, the meta USE flags defaulted on with no sub-backend, and the ebuild forwarded cargo features that don’t exist (aliases, tc, prometheus). Building Rust from source inside the Docker build took 2 hours 45 minutes, so I switched to dev-lang/rust-bin. And the Gentoo Docker build got capped at 60 minutes and made non-blocking while I sorted it out.

    On the 29th the installer picked up root-on-ZFS, preferred when the ZFS tools are present.

    Design decisions

    Gentoo and USE flags: Gentoo is the core design point. My reason is freedom to choose. USE flags come first because they let you pick which features (web UI, eBPF/XDP, SD-WAN, detection, cloud integrations) get compiled in, and the repo notes call that the main advantage over pfSense and OPNsense. Hardware specific compiles are the second reason. A container build must pass USE flags through to emerge rather than compile a fixed set.

    rust-bin over source Rust: the from-source build took 2h45m (the commit’s number).

    Architecture: the repo notes have one rule: one SQLite store as the single source of truth, one “Applier” per subsystem, one apply step at boot, and no extra in-memory list, fixture or config file that only one process knows about.

    State on September 30

    57 runs, none green, and about 60 commits. The Gentoo build was non-blocking at the end of the week and still no run was green.

    Other parts: Part 1, Part 2, Part 4, Part 5.

  • Censorship Pisses Me Off!

    Censorship Pisses Me Off!

    Censorship pisses me off! Seriously! It especially pisses me off when it comes to natural things (e.g. nudity) when other topics, such as violence, are totally accepted. I’m fucking tired of it.

    It has been said by many others, but I’ll repeat it with my own addendum: those who control the money control everything else eventually!

    It often starts small, and we may even make justification at the time regarding the reasoning, but it is never just a one-off: it always grows, or rather erodes, over time. Safety and risk are often used as excuses, but they are not the only ones that carry weight.

    Liberty (social) and Freedom (individual) are not the same thing and it is difficult to strike a balance between the two, but it can, and has, been done (e.g. Twelve Tables of Roman Law (451–450 BCE) [Lex Duodecim Tabularum]).

    It is very rare for either Liberty or Freedom to be restored once one has been taken away. It is usually a one-way, slippery slope. It can happen quickly, or it can happen slowly (i.e. death by a 1000 [paper]cuts). In the end, the result is always the same.

    Short of a major event (e.g. revolution) it typically cannot be undone.

    The next time you get pissed off at something, try and think about the long term, multigenerational effect, before you jump on the “this should be banned” bandwagon.

    If we do not have an independent, localized group to catch and filter public anger, a democracy will collapse into a centralized tyranny of the majority.

    FYI that last sentence is a paraphrase from Tocqueville, Democracy in America, Volume 1, Part 2, Chapters 7 and 8 (where he coins the phrase “tyranny of the majority”), and Volume 2, Part 4 (where he warns how centralized states absorb “secondary powers”).

  • Humanity is DOOMED!

    Humanity is DOOMED!

    I saw a nice little clip about vibe coding in one of those wired youtube support videos: https://youtube.com/clip/UgkxVFTg0QHtcydHXfXfQDMtAB6zRlwkULMk?si=Y8yImeTFQlNP13EY and wanted to share it. The part about doing it yourself being faster is understated! A project I am attached to had an early requirement of being vibe coded and done as fast as possible. I objected and wrote a nasty memo about how it was going.

    Then later I saw http://youtube.com/shorts/ctu6ZT4rAsI?si=y2h23W47C8ElJ8GO which is spot-on!