Xavier Ruiz

Software Developer

About Me

Xavier Ruiz

Hi, I'm Xavier and I live in Boston. I currently work in the e-commerce space, building tools to make stores fast, accessible, and well-tested. In my free time, I like to play board games, try new foods, and fiddle with my dotfiles.

I also help run bostonts.club, a monthly meetup for all things TypeScript and web development.

You can reach me at [email protected], or find me on GitHub and LinkedIn.

Projects

  • himalaya-nvim

    February 2026 – Present

    An email client that runs inside Neovim. Threaded message lists, structured per-field search, in-buffer composing with auto-saved drafts, background sync, and an extensible hooks system. Picker integrations (telescope, fzf, native) and a mock mode for trying it without a real account. Heavily modified fork of pimalaya/himalaya-vim with 90%+ test coverage in CI.

    Lua, Neovim, Nix

    https://github.com/xav-ie/himalaya-nvim
  • virtual-headset

    December 2025 – Present

    A virtual HID headset device driver in Rust. Forwards the mic through PipeWire on a keyboard mute toggle and exposes a D-Bus control surface plus a Home Manager module for Waybar integration.

    Rust, PipeWire, D-Bus, Nix

    https://github.com/xav-ie/virtual-headset
  • dots

    September 2023 – Present

    My NixOS configuration and self-hosted homelab. Runs Traefik, Cloudflare Tunnel, and a half-dozen services via quadlet-nix, plus dozens of small per-machine packages I keep tucked away in here.

    Nix, NixOS, quadlet-nix, Traefik

    https://github.com/xav-ie/dots
  • nuenv

    July 2025 – Present

    A Nushell environment for Nix derivations. I forked the original after it went unmaintained to keep it usable and add features like environment binding.

    Nushell, Nix, Bash

    https://github.com/xav-ie/nuenv
  • browser-session-mcp

    April 2026 – Present

    An MCP server that gives each caller an isolated browser session against a shared persistent Chrome, and captures every console + network event to disk losslessly regardless of MCP transport churn. The session is a tool argument, not a transport concept — so sessions survive reconnects.

    Rust, Puppeteer, MCP

    https://github.com/xav-ie/dots/tree/main/packages/browser-session-mcp
  • xnixvim

    January 2024 – Present

    My Neovim config managed entirely through Nix via nixvim. Reproducible across machines, modular, and shaped around how I actually work in TypeScript, Rust, and Lua.

    Nix, nixvim, Lua, Neovim

    https://github.com/xav-ie/xnixvim
  • SpooKeyBoard

    June 2024

    A small Python tool that reads ANSI escape sequences over SSH and replays them as keystrokes on the receiving machine via Linux uinput — essentially a remote keyboard pipeline.

    Python, uinput, ANSI escapes

    https://github.com/xav-ie/SpooKeyBoard

Art and Doodles

  • Smart Rockets

    May 2020

    Little rockets 'learn' to hit a target through a genetic algorithm. Each generation is mutated from the fittest rockets of the last. Adapted from a Dan Shiffman tutorial.

    JavaScript, p5.js

    /projects/smart-rockets
  • Moiré Effect

    August 2018

    Two sets of horizontal lines rotated against each other. The vertical lines that appear are an optical illusion — the Moiré effect.

    JavaScript, p5.js

    /projects/moire-squares
  • Binary Numbers

    March 2019

    A binary representation of a number, with the decimal in the center. Mouse events shift the bits left and right, or you can type a decimal and watch it convert.

    JavaScript, p5.js

    /projects/binary-numbers
  • Pong

    May 2019

    Two-player Pong. WASD for player one, arrow keys for player two.

    JavaScript, p5.js

    /projects/pong
  • Raycasting

    May 2019

    A raycasting demo following Dan Shiffman. Not original work, but a satisfying one to step through.

    JavaScript, p5.js

    /projects/raycasting