Skip to main content

$ tree ~/stack --depth 1

The stack, exploded

Four layers, wired together. Copper is the human layer; teal is what the machines run.

Software stack by category

01dev/

Development

Where the recipes get written. Keyboard-first, mono everywhere.

  • Neovim + LazyVim

    daily driver — LSP, treesitter, no mouse

  • VS Code

    fallback for big refactors + Live Share pairing

  • Ghostty + tmux

    GPU terminal; tmux keeps sessions warm

  • TypeScript

    default for web + tooling; strict mode, no any

  • Python 3.12 + uv

    automation, glue scripts, LLM-for-ops runbooks

  • Go

    single-binary CLIs and latency-sensitive services

02infra/

Infrastructure

The cloud edge — reproducible, versioned, and boring on purpose.

  • Terraform

    infra as code; state in a remote backend, PR-reviewed

  • GitHub Actions

    CI/CD — lint, test, build, deploy on merge

  • Ansible

    post-provision config; idempotent playbooks

  • Cloudflare

    DNS, CDN, and Tunnels — no ports exposed

  • Vercel

    this site + a preview deploy per branch

  • Tailscale

    flat mesh VPN; ACLs are the guardrail

03homelab/

Homelab

The rack that never sleeps. Everything self-hosted, everything monitored.

  • Proxmox VE

    hypervisor — VMs for stateful, LXC for the rest

  • Docker + Compose

    one repo of stacks; git is the source of truth

  • TrueNAS (ZFS)

    snapshots + scrubs; the backup you actually test

  • Caddy

    reverse proxy — automatic TLS, a tidy Caddyfile

  • Home Assistant + MQTT

    automations; sensors talk over MQTT

  • Grafana + Prometheus

    dashboards + alerts; a postmortem per pager

04desk/

Productivity

The human layer — notes, focus, and secrets that stay secret.

  • Obsidian

    lab notebook; every project starts as a markdown page

  • Raycast

    launcher, clipboard history, snippet expansion

  • Linear

    one board; issues link straight to the repo

  • Bitwarden

    self-hosted vault; TOTP + passkeys

  • Firefox

    containers per identity, uBlock as the default

  • Flameshot

    screenshots + annotations for the writeups

A compact airflow and temperature sensor mounted inside a homelab rack

$ rack/sentinel --watch

The rack, instrumented.

Airflow → MQTT → Prometheus → an alert budget that stays quiet until it matters.

field render · prototype

$ lshw -short

Hardware on the bench

The metal underneath. Nothing exotic — just gear picked to be quiet, cheap to run, and easy to reflash at 1am.

Physical hardware

The rack

mini-PC cluster + NAS

  • Beelink mini-PCs (N100 / Ryzen) as Proxmox nodes
  • 4-bay NAS, ZFS mirror, nightly snapshots off-site
  • UPS on the whole shelf — clean shutdowns, no corruption

The bench

ESP32 + sensors

  • ESP32 / ESP8266 flashed with ESPHome
  • Breadboard rats-nest: DHT22, PIR, current clamps
  • USB logic analyzer + hot-air station for the weird bugs

The wire

network + workstation

  • UniFi gateway + switch; VLANs isolate IoT from everything
  • 2.5GbE to the desk, 10GbE trunk to the NAS
  • Ryzen 9 workstation, 64GB RAM, dual NVMe
// note

No sponsors, no affiliate links, no “best of” padding. This is what actually runs. When a tool breaks or a better pattern shows up, the swap gets a lab note.