VR

uses

What I use

These are the tools I actually reach for. Not everything I've ever installed — the things that earn their place every day.

Machine

Primary machine is a ThinkPad running Linux. The keyboard matters — I've spent enough time on bad keyboards to know that the one hour per day I would otherwise spend fighting it compounds into something worth fixing. ThinkPad keyboards have a specific feel that I find hard to describe and difficult to give up.

Editor and terminal

Editor is Neovim. I moved from VSCode a couple of years ago and haven't found a reason to move back. The configuration is mostly LSP-based — I want autocompletion and type-checking to work correctly; I don't need the editor to think for me beyond that. Dotfiles are on GitHub.

Terminal is Alacritty with zsh. Prompt is minimal — current directory and git branch when relevant, nothing else. I find rich prompts cognitively noisy.

Fonts everywhere: Geist Mono in the terminal and editor. Geist Sans in the browser where I control it (which is this site). The monospace choice is partly aesthetic and partly practical — Geist Mono has excellent character disambiguation, which matters when you're reading error messages.

Profiling

For Go: pprof almost immediately. The setup cost is lower than I expected when I first used it, and the flame graph output in the web UI is good enough that I've stopped reaching for alternatives. For understanding runtime behavior — goroutine counts, heap allocation — theruntime/trace package gives you a more complete picture.

For Python: py-spy for sampling profilers. For memory specifically, tracemalloc when I need to find where allocations are coming from and glibc arena behavior is suspected.

Databases and infrastructure

PostgreSQL for anything that needs to be right. Redis when I need fast ephemeral state or pub/sub. I use pgx for Postgres in Go — it's the driver with the most direct mapping to the PostgreSQL wire protocol, which matters when you're trying to understand what's actually happening at the database layer.

Docker for local development. For anything beyond a single service, Kubernetes — not because it's the simplest option but because it's the option that fails in predictable ways. Prometheus and Grafana for metrics; the stack is heavy but the query language for Prometheus is worth the investment.

Reading

RSS in Newsboat (terminal-based reader). My unread count is permanently over 200 and I've made peace with that. The feeds I actually read: the LKML digest, Hacker News daily best, a handful of systems-focused engineering blogs, and the ACM Queue RSS for academic-adjacent pieces that don't require journal access.

For papers: the arXiv RSS for cs.DC (distributed computing) and cs.OS. The hit rate for genuinely interesting papers is low; the ones that hit are worth it.

Version control

Git with no GUI. The staging index is conceptually important enough that I want to work with it directly — staging hunks with git add -pis slower than git add -A and worth every extra second. My git aliases are opinionated; the useful ones are git lg for a one-line log andgit fixup for amending the most recent commit without changing the message.