codecataclysm.org

small, uneasy software notes

status panel rendered by hand

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 with less
  • style.css adds a few hints for browsers that behave
  • page.tmpl glues 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 codecataclysm before 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:

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; main goes last

C particulars:

  • stick to C99, no extensions; target POSIX.1-2008 (_POSIX_C_SOURCE 200809L or _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:

  • static globals unless they leave the translation unit; * hugs the name, not the type
  • space after control keywords, none after ( or before ); use sizeof() 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_t names; 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 goto for cleanup paths when it keeps the stack flat
  • enums group semantic values; #define stays for standalone constants
  • unreachable code earns a NOTREACHED comment

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.

  1. Reminder: Quick Start is 400 pages.
  2. Section numbering: 4 → 1 → 7 → 2.
  3. Table of contents refused to link itself.