slug: uses
translates: uses
lang: en
title: "satyrs.eu/uses"
pageCreated: "2025-04-05"
pageUpdated: "2025-05-28"
extends ../../views/layout.pug
append presets
- hasSidenotes = false
append cosmetics
link(href="/uses/uses.css" rel="stylesheet")
block header
div.section#header
h1 satyrs.eu/uses
block content
div.section
p I’ve put this off for long enough, so here’s a page all about the plumbing and machinery that makes up the tech stack of this site. Be warned: nerd shit ahead!
div.section
h2 On-prem: #[code persepolis]
p This site is hosted on #[code persepolis], a beat-up old Dell laptop running #[a(href="https://linuxmint.com/") Linux Mint] that i keep tucked away in a drawer. It uses #[a(href="https://nginx.org/") Nginx] as a reverse proxy to redirect to the server itself, which is a #[a(href="https://nodejs.org/en") Node] and #[a(href="https://expressjs.com/") Express.js] affair. Pages are mostly written in #[a(href="https://pugjs.org/api/getting-started.html") Pug], a syntactic sugarfest of a language that compiles down into good ol’ #[+sc("HTML")]. The venerable (and public domain!) #[a(href="https://www.sqlite.org/") Sqlite] serves as a database.
figure
img(src="/uses/garden-ui.png" alt="My writing setup for The Garden")
p Posts on #[a(href="/garden"): i The Garden] are authored in a custom #[+sc("CMS")] (shown above), usually in #[a(href="/source/for/app/rubric.js") Rubric], a home-grown alternative to Markdown. The actual writing process mostly takes place on the über-minimalist #[a(href="/write") Dotpad 9000], created out of frustration with having to look at all the bells and whistles of normal text-editor apps. Interaction between the server and the author is mediated by #[a(href="https://htmx.org/"): +sc("HTMX")], because i’m too grug-brained to understand React.
div.section
h2 Off-prem: the internet
p The domain #[i satyrs.eu] is registered with #[a(href="https://www.gandi.net") Gandi], a French domain-name agent. I think they got bought out a while ago, so i don’t know if i’d still recommend them today, but i’m too lazy to switch. Emails are handled by the German #[a(href="https://tuta.com/") Tuta], which prides itself on encrypting everything (and thereby making it bloody impossible to use an external client), and the lock in your browser is secured by the San Francisco–based #[a(href="https://letsencrypt.org/") Let’s Encrypt].
div.section
h2 On-prem: #[code vindolanda]
p But enough about that. The real action happens at my desktop, #[code vindolanda]. I don’t remember exactly what i put in it when i built it, but it’s got an Nvidia graphics card, a lovely #[+sc("RGB")]-free wooden #[a(href="https://www.fractal-design.com/products/cases/north/north/chalk-white/") North case] by Fractal Design, and runs (again) Linux Mint on the inside. Hooked up to it are two monitors — portrait on the left, landscape on the right — a Logitech mouse, and a cheapo pink-and-white Sunsonny mechanical keyboard, because once you clack, you never go back.
figure
img(src="/uses/vscode.png" alt="My setup for VS Code")
p Programming is done in #[a(href="https://code.visualstudio.com/") VS Code] (setup shown above), with the warm hues of the #[a(href="https://github.com/sainnhe/gruvbox-material-vscode") Gruvbox Material] theme and sensible serifs of #[a(href="https://indestructibletype.com/Drafting/") Drafting* Mono]. Graphics for the site are made in Gimp, the standard on Linux, but i miss my old go-to #[a(href="https://getpaint.net/") Paint.net] more with each passing day. #[a(href="https://inkscape.org/") Inkscape] gets a look-in for vector assets, too, though they’re comparatively rarer.