Xavier Ruiz

Software Developer

Posts

  • Hello, world!

    May 21, 2026

    Hooray! My first post!

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

  • scribe

    June 2026 – Present

    Meeting notes without the notetaker bot. scribe captions your Google Meet and Zoom calls live and names every speaker, running on hardware you already have: any NVIDIA GPU or an Apple silicon Mac. Your audio never leaves your network, every meeting stays searchable, and your AI agents can read and search transcripts over MCP. It doubles as an OpenAI compatible speech to text API and a Home Assistant voice backend.

    Technologies: TypeScript, Python, Parakeet, MCP, Nix

  • divvy

    October 2026 – Present

    Split groceries, utilities, and dinners with the people you live with, and always know who owes whom. Snap a receipt and AI fills in every item, then split each one evenly, by percent, by shares, or to the exact cent. Deploy your own with one click on Cloudflare, where a whole household fits in the free tier: no ads, no subscription, and nobody else holding your data.

    Technologies: TypeScript, Astro, Cloudflare Workers, Durable Objects, Workers AI

  • Tetherbug

    October 2026 – Present

    Apple's Instant Hotspot, for an Android phone and a Mac. When your Mac loses Wi-Fi, it asks your phone over Bluetooth to turn on its hotspot, no root needed, and the hotspot shows up just like an iPhone's: the Personal Hotspot link icon, a metered connection, and the usual auto join rules. Comes with a native Mac app, a CLI, and a SketchyBar widget.

    Technologies: Kotlin, Swift, Bluetooth LE, Shizuku, Nix

  • ream

    June 2026 – Present

    Your everyday PDF chores in one private web app: compress, merge, split, reorder, turn images or Office documents into PDFs, and pages into images. Results chain straight into the next tool, so you can convert a Word file, shrink it, and split it without downloading in between. Deploy your own with one click on Cloudflare or run it anywhere. Your files never leave your machine or your Cloudflare account, and nothing is kept after the response.

    Technologies: Go, Astro, TypeScript, Cloudflare Containers, Docker

  • Muscat

    July 2026

    Every reroll draws a brand new board for the Muscat board game in my own medieval art style: a 12×18 inch poster, generated as SVG right in your browser and exported print ready at 300 DPI. One random seed decides the whole board, and terrain like water, lava, and grass is built from Voronoi regions and rendered live with WebGPU.

    Technologies: TypeScript, WebGPU, WGSL, SVG, Canvas

  • himalaya-nvim

    February 2026 – Present

    Read, search, and write email without leaving Neovim. Threaded inboxes, per field search, drafts that save themselves, and background sync, with telescope, fzf, or native pickers. A heavily reworked fork of pimalaya/himalaya-vim with over 90% test coverage, plus a mock mode so you can try it without an account.

    Technologies: Lua, Neovim, Nix

  • virtual-headset

    December 2025 – Present

    A mute button for any microphone on Linux that Zoom and Google Meet actually respect. It shows up as a real USB telephony headset, so muting from your keyboard, status bar, or browser toolbar stays in sync with the call's own mute button, both ways. It starts muted so you're never live by accident, and ships with NixOS and Home Manager modules.

    Technologies: Rust, PipeWire, D-Bus, Nix

  • 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.

    Technologies: Nix, NixOS, quadlet-nix, Traefik

  • xav-ie/nuenv (opens in new tab)

    nuenv

    July 2025 – Present

    Build your Nix derivations with Nushell instead of Bash. This fork picks up the original after it went unmaintained, keeping it working and adding features like environment binding.

    Technologies: Nushell, Nix, Bash

  • browser-session-mcp

    April 2026 – Present

    Give every AI agent its own long lived browser session in one shared Chrome. Sessions are addressed by an id passed with each call, so they survive reconnects and even MCP server restarts. A separate daemon records every console and network event to disk, and the stack is tuned to drive real sites without tripping bot checks.

    Technologies: Rust, CDP, MCP

  • image.nvim

    June 2026 – Present

    Real images inside Neovim that stay sharp in tmux and over SSH. This fork of 3rd/image.nvim fixes the flicker, tearing, and vanishing images you get upstream when you scroll or switch tmux windows.

    Technologies: Lua, Neovim, Kitty Graphics, tmux

  • 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.

    Technologies: Nix, nixvim, Lua, Neovim

Open-Source Contributions

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.

    Technologies: JavaScript, p5.js

  • 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.

    Technologies: JavaScript, p5.js

  • 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.

    Technologies: JavaScript, p5.js

  • Pong

    May 2019

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

    Technologies: JavaScript, p5.js

  • Raycasting

    May 2019

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

    Technologies: JavaScript, p5.js