Linux version 6.11.0-cybermancer (flejz@darknet) #1 SMP PREEMPT_DYNAMIC Rust

> /sys/dogma

Computing principles. What I believe, in order. Subject to revision when reality says otherwise.

  1. 01

    Small is beautiful

    A program that fits in your head is a program you can fix at 3am. Composable units beat monoliths every time. If a module needs an architecture diagram to read, it's already wrong.

  2. 02

    Do one thing, do it well

    McIlroy's first rule. Single responsibility isn't a unit-test slogan — it's how systems stay debuggable for a decade. Every time I extend a function past one job, I pay for it later.

  3. 03

    Compose, don't inherit

    Pipes over class hierarchies. impl Trait for T over extends. The Gang of Four said it before Rust did: favor composition. Inheritance is a one-way door.

  4. 04

    Free software is non-negotiable

    Code I can read, fork, audit, and run on my own iron. Vendor lock-in is a tax on future me. Open formats, open protocols, open source — anything else is rented.

  5. 05

    Make it work, make it right, make it fast — in that order

    Pragmatism over purity. Premature abstraction kills more systems than premature optimization. Ship the ugly thing, learn from it in production, then refactor with knowledge you couldn't have had upfront.

  6. 06

    The domain is the model

    Evans was right. If the code doesn't speak the language of the business, every reader translates in their head — and translations drift. Ubiquitous language isn't ceremony, it's the only way a system stays coherent across years and people.

  7. 07

    Ports and adapters

    Push frameworks, IO, and infrastructure to the edge. The core is plain types and pure functions. Tests run without a database, without a network, without a runtime. The hexagon is older than your favorite framework and will outlive it.

  8. 08

    Patterns are vocabulary, not scripture

    GoF gives names to recurring shapes — Strategy, Visitor, Adapter — so we can talk about them. Use the names to communicate, not to decorate. The wrong pattern shoehorned in is worse than no pattern at all.

  9. 09

    Modular monolith first, microservices when forced

    Fowler was right to walk it back. Distribution is a deployment choice, not an architecture. Split when team size or independent scaling demands it — not because a conference talk said so. Every network call is a failure mode.

  10. 10

    Availability is a budget, not a goal

    Each nine costs an order of magnitude more than the last. Five-nines means dedicated SREs and a runbook for every dependency. Pick the number you can afford to operate, not the one that sounds good in a slide.

  11. 11

    Memory safety by construction

    Rust's borrow checker is not a tax. It's a colleague who never forgets a lifetime. unsafe is opt-in, sharp, and rare — and when you reach for it, you write the invariants down. Use-after-free shouldn't be a class of bug in 2026.

  12. 12

    Zero-cost or no abstraction

    Iterators, traits, generics — pay only for what you use. If it allocates, locks, or boxes when it doesn't have to, that's a bug, not a feature. Performance is a property of the design, not a phase.

  13. 13

    Errors are values

    Result<T, E> is a contract: handle it or pass it on, but never hide it. Panics are for programmer errors, not user input. Silent failure is the worst possible kind — louder than a crash, slower to find, more expensive to fix.

  14. 14

    Read the source

    Code is the spec. Docs lie, comments rot, tickets disappear, but the source is what runs. When in doubt — open the file.

  15. 15

    Build because the building is good

    Half the things I make never ship, and that's fine. The taste, the skill, the hands — those compound. The joy of typing the last semicolon of a thing that works is its own reward. The craft is the point.