Enlightenmentware

Overall theme: “Enlightenmentware”

  • Tools that reshape how you think: not just useful, but conceptually transformative.
  • Many examples are “deep but small” systems: simple cores with large expressive power.
  • Several commenters note that such tools often feel hard at first, then become fun and “world‑reframing.”

Build systems, package managers & reproducibility

  • Bazel/blaze is praised for rock‑solid, explicit dependency DAGs, fast incremental builds, and making complex builds tractable.
  • Strong criticism too: steep conceptual spike (plan/execute, transitions, rules), invites spaghetti macros, tooling/docs feel underbaked compared to the power.
  • Nix is repeatedly proposed as an alternative/complement: treat it as a composable build tool and distribution rather than just a “package manager.”
  • Debate over whether Nix can/should “replace” Bazel: consensus leans toward simple build systems (cmake/meson/etc.) + Nix for dependencies and reproducible environments.
  • Buck2 mentioned as a promising, smaller‑core Bazel successor, but seen as immature: weaker ecosystem, tooling gaps, limited language support.

Nix/NixOS: power vs opacity

  • Enthusiasts describe Nix as extraordinarily versatile: cross‑compiling, static builds, containers/images, shared binary caches, reproducible environments across OSes.
  • Many say Nix fundamentally changes how they think about systems, dependencies, and determinism.
  • Counterpoint: Nix and its ecosystem are viewed as “opaque,” “inscrutable,” with a steep, time‑intensive learning curve, many conventions, and weak discoverability.
  • Suggestions for learning: start with Nix on an existing OS, use flakes + direnv, read the three core manuals, lean on official docs and community forums, and expect substantial investment.

Editors and programmable environments

  • Emacs repeatedly cited as archetypal enlightenmentware: deeply programmable, turns mundane tasks into engaging “system‑shaping.”
  • Modal variants (Evil, Doom, God mode) divide opinion; some embrace them, others stick to “native” Emacs keybindings.
  • Other “pervasively programmable” systems mentioned: Smalltalk/Pharo, Squeak, Lisp machines, Acme/Sam; praised for live, inspectable, reconfigurable environments.

Operating systems

  • Several note a lifecycle from Linux zealotry to more pragmatic use of macOS or Windows.
  • Mixed views on Windows: from “great OS” for many users to frustrating, noisy, and opaque; WSL is often cited as its saving grace for developers.
  • NixOS and Guix are viewed as “OS‑level enlightenmentware” for declarative, versioned system configs.

Other cited enlightenmentware

  • Docker and Podman for reproducible, isolated environments and reviving “ancient” projects.
  • Git (plus Magit, lazygit, VS Code UX) as a conceptual leap over centralized VCS.
  • LaTeX (and LyX/TeXmacs), Jupyter/web playgrounds, compiler explorer, Python Tutor for interactive learning and sharing.
  • Languages and runtimes: Haskell, TypeScript, Go’s tooling, JAX, Agda, Common Lisp, React/Redux, Cycle.js; praised for changing how people reason about programs.
  • LLMs (ChatGPT et al.) and LSPs described as recent, everyday “enlightenmentware” for many.

Design & philosophy notes

  • Contrast between “re‑editable” vs merely reusable code; many value systems that are easy to understand and modify.
  • Discussion of declarative/functional styles and effect systems as long‑term winners for maintainability.
  • Strong skepticism toward heavy dependency injection frameworks (e.g., Spring); DI as a concept is defended, but framework magic and complexity are criticized.