The tools I actually reach for, on the machine I’m actually sitting in front of. Updated when the setup changes, not sooner. Inspired by uses.tech. For what I’m actively focused on this month, see /now/.

Machine

  • Apple silicon Mac, macOS 15 Sequoia.
  • Deliberately unopinionated about laptop skins, keyboard tenting, and monitor arm mounts. Whatever’s on the desk this month.

Editor

  • Neovim with Yoda — my own modular distribution. Every piece under the hood (window management, logging, diagnostics, terminal, adapters) is its own installable plugin, so I use Yoda-as-a-whole here and Yoda-piece-by-piece in every other Neovim-adjacent project.
  • vim.pack for plugin management — the Neovim-native option. No lazy.nvim, no packer, no third-party loading wrapper.

Shell

  • zsh — default on macOS since Catalina, no reason to switch.
  • Homebrew for package management (Apple silicon prefix at /opt/homebrew/).
  • GNU Stow for dotfile linking — the ~/.claude/ configuration in ocrosby/claude-config is a Stow package that symlinks its top-level items into $HOME/.claude/.

AI

  • Claude Code as my primary CLI-based coding assistant. This site was built on it; every commit on main has a Claude Code fingerprint somewhere in its authorship.
  • Personal configuration — agents, skills, rules, commands, hooks, output styles — lives in ocrosby/claude-config. Stow makes it portable across machines.

Languages (day-to-day)

  • Go — most of my open-source infrastructure work. See the Code Quality and Distributed Systems pillars for what that looks like in practice.
  • Python — trading tools (Market Bridge, Strike Pilot) and the sports-data pipelines.
  • Rust — reached for when the domain benefits from it. NASM Lint is the current example.
  • Lua — the Neovim plugin surface. Idiomatic Lua, not “JavaScript in Lua clothing.”
  • TypeScript + Next.js — the day job at The Weather Company.
  • NASM x86 assembly — because it stays fun, and because building NASM Lint required understanding a language deeply enough to lint it.

This site

  • Hugo (pinned to 0.160.1 in the Dockerfile and CI).
  • PaperMod theme — kept as a submodule, never edited in place. All customizations live at the site root and shadow the theme’s copies. See .claude/rules/theme-immutable.md.
  • Docker + nginx for local preview and the production image — one multi-stage Dockerfile produces the deployable artifact.
  • Fly.io for hosting — single-region (iad), single machine, Anycast IP.
  • AWS Route 53 for DNS.

Release workflow

Version control & CI

  • GitHub for hosting, PRs, and CI.
  • GitHub Actions for the CI pipeline — Hugo build, lychee link check, markdownlint, and typos on every PR; semantic-release + Fly deploy on main.
  • GitGuardian as the secrets scanner on PRs.

Everything else

What’s not here

Deliberate omissions. If the question is “what keyboard, what mouse, what desk, what headphones” — those change too often to be worth pinning down here. If the question is “what productivity/note-taking app,” I keep that separate: notes live in an Obsidian vault, tasks in the ambient stream of GitHub issues and TODO comments.