skip to the content

Dev

The FREE stack - My Tech Radar

· 8 minutes

The FREE stack, ring by ring — what I trust, and inside each ring, the layers it lands in.


The radar is drawn by JavaScript. Nothing is lost without it: every ring and layer it shows is listed, in full, further down this page.

Rings

    Layers

      Point at a blip for what it is and which way it moved; click it to open its entry. Click a ring or a layer to isolate it.

      The rings #

      Adopt
      proven in daily work, and the default for anything new.
      Trial
      running on real projects, not yet a default.
      Assess
      worth a prototype, and no commitment yet.
      Deprecate
      actively discouraged for new work.

      A name in parentheses — (new), (moved in), (moved out) — says what changed since the last revision; a note after a dash says why.

      What FREE means #

      F — Functional
      declarative, predictable systems with clear effects.
      R — REPL
      code evaluated on the running system, with no write-compile-test lag.
      E — Extensible
      a stack built to scale into flexible, extensible systems.
      E — Environment Control
      the whole lifecycle under my own control: no hidden telemetry, no paywalls, one-command self-hosting.

      ✅ Adopt #

      🧬 Languages #

      🎨 Frameworks & UI #

      🗃️ Data & Storage #

      • SQLite
      • PostgreSQL
      • Plain SQL queries
      • Hetzner Storage Volumes with Cron-job based backups and rsync

      🧰️ Tools & Environment #

      • GNU Guix
      • Emacs
      • Org mode
      • Maak build tool and command runner
      • Veritas test framework (idiomatic unit, integration and black-box testing framework powered by Lisp - Guile Scheme)
      • Scriba structured logging framework (modular log routing, formatting, and filtering, allowing developers to generate human-readable console logs during development and machine-readable logs for production environments)
      • Woodpecker CI/CD — the CI that replaced the Jenkins pipelines I used to maintain
      • Nix Flakes
      • Nix dev shells

      🌐 Platforms & Delivery #

      • Custom low-power green VPS (Hetzner)
      • Codeberg — free software’s own forge, and the home of every project of mine

      ⚙️ Practice & Craft #

      • Authorization and Authentication with Bewaking tokens as cookies
      • Guix Manifests
      • Guix dev shells
      • Hexagonal architecture / ports and adapters (moved in) — the boundary earns its keep wherever the domain is the complicated part; the Hexagon of Doom is the case where it is not

      🧪 Trial #

      🧬 Languages #

      • Guile embedded in C and GTK4 (moved in) — the dock Wayland was waiting for, with a Lisp engine inside a native app

      🧰️ Tools & Environment #

      • Podman (moved in) — daemonless, root-less containers that stay under my own control
      • Hyprland (moved in) — the Wayland compositor I actually use daily, after SwayFX taught me compositor scripting
      • DeepSeek (new) — an LLM I keep on a short leash: it drafts and reviews, a human decides, and nothing it writes ships unread

      🌐 Platforms & Delivery #

      • Self-hosted Woodpecker runners on the same VPS (moved in) — CI that never leaves infrastructure I control

      ⚙️ Practice & Craft #

      • Server-side rendering over client-side JavaScript (moved in) — pages that work before, and without, a megabyte of framework
      • This very site as a single Org tree (moved in) — prose, build script and metadata in one plain-text source
      • Parsing Expression Grammar in Scheme with (ice-9 peg) (moved in) — how OrgWebAlchemy turns Org into HTML without a parser generator

      🔍 Assess #

      🧬 Languages #

      🧰️ Tools & Environment #

      • Forgejo — a self-hosted forge for code I want to keep closer than Codeberg’s public instance
      • Guix Home — one declarative description of the machine I actually work on

      🌐 Platforms & Delivery #

      • Guix System images on AArch64 (moved in) — a machine I can describe, build and roll back, on hardware that is not x86
      • Guix System as the whole server, not just the toolchain

      ⚙️ Practice & Craft #

      • Property-based testing — describing the invariant instead of the example
      • Reproducible CI with `guix time-machine`

      🗑️ Deprecate #

      🧬 Languages #

      • Haskell (moved out) — as beautiful and powerful as it is, it’s simply too complex for 9/10 use-cases
      • Scala
      • Common Lisp — rather use Scheme if possible
      • TypeScript

      🎨 Frameworks & UI #

      • Svelte
      • Servant (Haskell), API as a type
      • ZIO (Scala)

      🗃️ Data & Storage #

      • MySQL

      🧰️ Tools & Environment #

      • Jenkins (moved out) — shared-library pipelines and Groovy DSLs, traded away for a thinner agent

      🌐 Platforms & Delivery #

      • Amazon AWS