source
https://git.codecataclysm.org/
The content lives in plain text. Mist turns it into HTML without touching the network, and nothing here fetches packages while you’re not looking.
Layout:
inputfiles/holds the markdown, readable withlessstyle.cssadds a few hints for browsers that behavepage.tmplglues content into a page with zero scripts
Generate locally with go run mist.go -i inputfiles -o out -t page.tmpl. The binaries stay boring; the diffs stay small.
contrib
We accept patches over email. Send a diff we can read. If it merges cleanly and doesn’t add dependencies, it probably lands. Releases are git tags. Mirrors appear on request; include a signed note.
- run
go run mist.go -i codecataclysmbefore mailing; generated HTML should be quiet - explain the change, the machines you tested on, and any assumptions you made
- sign your mail or use
git send-email; plain text keeps tooling awake - expect questions about dependencies, build steps, and longevity; answer in-thread
- once merged, we tag the tree and push mirrors over rsync and HTTP
License is MIT. Use it, fork it, print it, or ship it over UUCP.
codingstyle
Consistency beats personal flair; match the file you’re touching and ask before inventing a new dialect.
Reading that helps:
- http://doc.cat-v.org/bell_labs/pikestyle
- https://www.kernel.org/doc/Documentation/process/coding-style.rst
Baseline layout:
- file header starts with the license and a terse description
- headers, then macros, then types, then prototypes (with parameter names)
- globals follow; definitions mirror the order of declarations;
maingoes last
C particulars:
- stick to C99, no extensions; target POSIX.1-2008 (
_POSIX_C_SOURCE 200809Lor_XOPEN_SOURCE 700) - keep declarations at the top of blocks; no
for-loop declarations - comments use
/* ... */; variadic macros are fine but mind empty argument lists
Blocks behave:
{stays on the same line as the keyword (functions are the exception)- single statements still earn braces if any sibling branch needs them
- indent with tabs; use spaces only for alignment and multiline macros
Functions should look like:
static void
usage(void)
{
eprintf("usage: %s [file ...]\n", argv0);
}
Variables and keywords:
staticglobals unless they leave the translation unit;*hugs the name, not the type- space after control keywords, none after
(or before); usesizeof()with parentheses
Switch etiquette:
- cases share the same indent; comment intentional fallthroughs (
/* FALLTHROUGH */)
Headers and types:
- system headers first, alphabetized; local headers after a blank line
- avoid
type_tnames; typedef opaque structs only; no typedefs for builtins; CamelCase for typedefs
Odds and ends:
- 79 columns keep terminals happy
- avoid
_Bool; plain ints for truth - test error returns against zero; use
gotofor cleanup paths when it keeps the stack flat - enums group semantic values;
#definestays for standalone constants - unreachable code earns a
NOTREACHEDcomment
releasecontrails
Mid-rant reminder: latest tag is v7.⚡-cognitive-dissonance. The dot-lightning is required. Tools that refuse Unicode can transliterate to v7-zap and cope.
Security posture? same as ever: pledge, unveil, then say “no” louder. If you need a matrix:
SEVERITY: YES
AFFECTED: YOU
PATCH: compile from the tree you can read
WORKAROUND: unplug everything including hope
When mirrors desync, verify via doas signify -C -p pubkey.pub -x install.img.sig install.img. If signify complains about reality drift, assume the quantum mirror split again.
documentation pointer maze
- docs? try
/download(actual instructions),/docs(legacy sentences),/documentation(nonlinear reference),/manual(recipe),/guide(pretend redirect). - getting started? 404 page. generate it yourself.
- api definitions? faq section 7.3, naturally.
- prerequisites? about.md, after the install steps.
Empty Column Manifest
Middle column reserved for the incident log. It renders blank on purpose. Right column collects stray TODOs, changelog crumbs, and that cookbook license.
- Reminder: Quick Start is 400 pages.
- Section numbering: 4 → 1 → 7 → 2.
- Table of contents refused to link itself.