/uses

The pages I myself read most, on other people's blogs, are their /uses pages. So here's mine. Inspired by uses.tech, kept honest.

Last updated: a month or two ago. If something here is out of date, it probably means I tried something else and went back. I'll get to it.

Computers

laptop
ThinkPad X1 Carbon Gen 11, i7, 32 GB RAM, 1 TB NVMe. Bought refurbished. The keyboard is the only thing I love unconditionally. (I tried a Framework 13 for six months. The hinge was wrong for me.)
desktop
A boring tower. Ryzen 7700, 64 GB ECC, two NVMe drives in a btrfs RAID. Mostly used as a build machine + emacs daemon.
homelab
MikroTik CCR2004 doing routing, three Lenovo M920q tinies running Proxmox, one HP Microserver Gen8 doing slow storage. See the post.
monitor
Dell U2723QE, 27", 4K, USB-C dock. Single monitor on purpose — tried two for a year and missed the focus.
keyboard
Custom Tofu60. Cherry MX Browns currently, lubed badly by me last autumn. I will probably swap to silent linears in the spring. I always say that.
mouse
Logitech MX Master 3S. The horizontal scroll wheel does the same thing as the vertical scroll wheel, which feels like a bug, but it's fine.
phone
Pixel 8 with GrapheneOS. Vanilla. No banking apps, on principle.

OS & daily software

os (laptop)
Arch Linux. sway, foot, fish. I keep meaning to try Hyprland. I never do.
os (desktop)
NixOS, after a year of regret and a year of love. See the post.
os (servers)
Debian stable. Boring on purpose. unattended-upgrades is a feature.
editor
Neovim with lazy.nvim, lsp-zero, telescope. About 600 lines of Lua. I run :checkhealth once a quarter and pretend the warnings aren't there.
terminal
foot on Wayland, kitty on macOS when I'm forced. tmux always. zellij tried, did not stick.
shell
fish for interactive, bash for scripts. I will die on this hill.
notes
Plain markdown in a git repo. chezmoi syncs them. I tried Obsidian. I tried Logseq. I came back.
calendar / mail
Fastmail (paid). aerc when I want to feel virtuous.
browser
Firefox with uBlock Origin and multi-account containers. Chromium for things that don't work in Firefox, which is mostly Google Meet.

Languages I reach for

go
For most services and most CLI tools. Boring on purpose. If there's a "right answer" to "what should I write this in", that's usually Go for me.
rust
When I need Drop to mean something, or when memory layout matters. Mostly: the kernel-adjacent stuff.
python
For one-off data wrangling. I use uv now and it's the best thing to happen to Python in a decade.
bash
For scripts under 100 lines. After 100 lines, it should have been Go.
sql
Postgres dialect. I write a lot of it. I don't apologize for it.

Infra-shaped things

  • Postgres for everything until it isn't. ClickHouse when Postgres finally says no.
  • Redis for ephemeral state, never for persistence.
  • NATS over Kafka for the workloads I build. Faster to set up. Easier to reason about.
  • Caddy at the edge for personal stuff, nginx for work stuff.
  • Tailscale for the homelab. WireGuard directly when I want to know what's going on.
  • Prometheus + Grafana + Loki. I keep evaluating Mimir/VictoriaMetrics. The current setup keeps winning.

Outside the screen

  • Kalita Wave + a 1zpresso J-Ultra. Most days. The Chemex on weekends.
  • A 2014 Brompton M6L. Stickered to the point of being identifiable.
  • A Yamaha P-45 I'm bad at. Improving slowly.
  • A film camera (Nikon FM2n) I take out maybe twice a year.

What I don't use: cloud IDEs, "AI pair programmers", VSCode (anymore), anything Electron except Slack (and only because of clients), zsh (sorry), Twitter/X.