The rig — what I actually use to build things.

Every developer-portfolio uses-page reads like a wishlist. This one is the actual machine. If you see something here, it’s because I’ve sat in front of it and shipped something with it — not because the marketing site said it was good.

Workstation

  • Custom Windows 11 desktop, RTX 3090 (24 GB)

    The whole reason this site mentions “local-first AI” without laughing. The 24 GB of VRAM is enough to run Gemma-class 26B quants alongside ChromaDB, Whisper, and a Stable-Diffusion-shaped workload at the same time. Most of my projects assume this GPU is sitting there.

  • MacBook (1 TB), the road machine

    On-demand, mostly for working on the deck or out of the house. Talks to the desktop over a Tailscale mesh — Syncthing keeps ~/developer/dev in sync with C:\Dev, and rclone-over-SSH mounts the Windows disk at ~/MountedDev for the bigger files Syncthing skips.

  • Tailscale, the glue

    Every box I own is on the same tailnet. The Windows file server runs rclone serve sftp on a Tailscale-only address; nothing is exposed to the public internet. Best “it just works” software I’ve adopted in years.

Dev tools

  • VS Code + Claude Code

    Editor is VS Code. The agentic layer on top is Claude Code. It also drives every LLM call inside Job-Shorts via a subprocess — that's how I get 42 chapters rendered without paying per-token fees.

  • PowerShell + Bash

    PowerShell for native Windows things, bash for everything POSIX-shaped (Git Bash on Windows, real bash on the Mac). Both running through Windows Terminal with a JetBrains Mono / Fira Code stack.

  • uv, Ruff, ESLint + Prettier

    uv for Python env / package management — fast enough that it stopped being something I think about. ruff for lint + format because the <100 ms feedback loop changes the shape of how I write Python. ESLint + Prettier on the TypeScript side.

  • GitHub + Vercel

    Code on github.com/Raymondriter. Sites on Vercel (this one included). Six Python packages on PyPI.

AI runtime

  • LM Studio at localhost:1234

    Default endpoint for every project that needs an LLM. Currently running a Gemma-4 26B quant most days. The OpenAI-compatible API means every project can point at http://localhost:1234/v1 and not care that it's local.

  • ChromaDB

    Vector store for GBC-AI, LTVRAG, and a couple of other RAG projects. Persistent on disk, fast enough on a single thread that I've never needed to scale it out.

  • faster-whisper (large-v3-turbo)

    STT for both GBC-AI (offline sermon transcription) and LTVRAG (real-time voice). The turbo variant is fast enough to feel responsive without the accuracy fall-off of the smaller models.

  • ComfyUI + LTX 2.3 + F5-TTS

    Image and video gen for Job-Shorts. ComfyUI for the graph execution, LTX 2.3 for actual video synthesis, F5-TTS for narration. All local — no SaaS in the loop.

  • YOLOv8 + Moondream2

    Vision stack for rsbot and The Visual Bridge. YOLO trained on my own gameplay screenshots, Moondream2 as the “describe this scene” fallback when YOLO is unsure.

Web stack

  • Next.js (this site, jacecrm, helpmetopray, RayFitnessPal)

    App Router everywhere new. MDX for blog posts. Tailwind for styling. next/og for the terminal-themed OG cards you see when you share these pages.

  • FastAPI for Python backends

    GBC-AI, LTVRAG, sportbetting, ai-world — all FastAPI. Async, typed, fast, and never gets in my way.

  • Supabase + Firebase, depending

    Supabase for new projects (Postgres + Auth + Realtime + Edge Functions). Firebase for legacy projects already on it. helpmetopray.org is the cleanest example of the new pattern.

Out of the room

  • Traeger pellet grill

    Doesn't technically run code, but it's on the rig list because the peppered beef jerky it makes on a 4-hour 180° smoke is genuinely better than anything I can buy. Eye of the round, hand-sliced, Dragon's Milk stout in the marinade.

  • Grace Bible Church

    The reason GBC-AI exists. Years of sermon archive, finally queryable.

  • Family

    My wife steers half my project list. My son Jace has his own CRM because he wanted free swag. They are the actual reason most of this exists.