I build software, and I have spent three years on the other end of the support queue.

Most of what I make is self-hosted: things you run yourself rather than rent. The largest is a music server that ships as a web app, a desktop app, an Android app and a TV interface from one codebase. Before I wrote software for a living I answered the phone when other people’s software broke, which is why a bug report from me arrives with the request, the response and the steps to reproduce already attached.

  • HDASH
  • Prospector
  • MAQR
  • Sonora
  • tcgplayer-quick-match
DecJanFebMarAprMayJunJulAugSep
One row per repository, one bar per week, Nov 2025 to Sep 2026. 958 commits, read out of the git histories. The busiest week was 186.

Tijuana, Mexico. Pacific time all year, Spanish and English both native, remote work only.

Work

Sonora on a phone, playing a different album whose cover is orange. The background, progress bar and play button have all turned orange to match.

Sonora

A self-hosted music server. Point it at a folder, stream your library anywhere.

278commits

5 weeks, busiest week 186
Jun 2026–present
Technical lead

One codebase ships four ways: an installable web PWA, an Electron desktop app with tray and media keys, an Android shell using native Media3/ExoPlayer, and a 10-foot TV interface.

HTTP range streaming so seeking is instant, with on-the-fly ffmpeg transcoding behind a warm cache. Full-text search across artists, albums and songs runs on SQLite FTS5.

A tap-to-sync lyrics tool: play a track, tap each line on the beat, and it writes timed LRC files. Most servers can only display lyrics. This one lets you make them for the songs the databases missed.

One codebase
Web
Installable PWA, works offline
Desktop
Electron, tray and media keys
Android
Capacitor over Media3/ExoPlayer
TV
10-foot interface

The player repaints itself from whatever album art is loaded. Lyrics advance in time with the track, and the visualiser reacts to the audio.

  • Fastify 5
  • React 19
  • TypeScript strict
  • SQLite FTS5
  • ffmpeg
  • Electron
  • Capacitor
  • Docker
  • Vitest

Source is private for now. A packaged release is the next step.

MAQR

My studio. Websites and internal tools for businesses in Tijuana.

78commits

2026–present
Founder

I own the whole loop: finding the client, the pitch, the build, the deploy, and the support afterwards. The first two clients came from cold outreach I did myself.

The work splits three ways, and most clients start with one: being found (sites, Google Business, local SEO), being served (booking, WhatsApp, English versions), and being run (the internal tools a team uses daily).

L’Aesthetic Medical is live. It is a Next.js site for an aesthetic-medicine practice, in Spanish, built mobile-first around a WhatsApp booking path. A rebuild for CIPAG Clinic is in progress.

L’Aesthetic Medical, live at laestheticmedical.com. The clinic’s own photography, the tour, and the treatment list opening in place rather than sending anyone to another page.
  • Next.js
  • TypeScript
  • Tailwind
  • Vercel
  • Local SEO

Prospector

Finds local businesses on Google Maps, ranks them, drafts the message, and tracks what happened after.

487commits

20 weeks, busiest week 123
May 2026–present
Solo, and the only user is me

Leads come out of the Google Places API by category and city, paginated to the sixty-result ceiling Google puts on a text search. Every run is kept, so a city can be re-run later without starting from a blank page.

A lead is scored before anyone writes to it: rating and review count, whether it has a website and how good that website is, how active its social accounts are, how many photos the listing carries.

Openers are drafted by Gemini and go out over WhatsApp through a Baileys bridge. Pasting the reply back stamps a touchpoint and moves the lead along the board. There is a table of which opener actually gets answered, which is the part that changed how I write them.

  • Next.js 16
  • React 19
  • Drizzle
  • Postgres
  • NextAuth
  • Baileys
  • Google Places API
  • Gemini

Source is private. It is the studio’s own tooling.

HDASH

A household operations dashboard: chores, groceries, money, calendar.

106commits

33 weeks, busiest week 34
Nov 2025–Jul 2026
Solo, both sides of the API

ASP.NET Core 9 minimal APIs with Entity Framework Core and JWT auth, behind a Next.js 16 and React 19 front end. I designed the data models and the endpoints, so the contract was mine to get right rather than inherited.

Interest-aware debt balances with an avalanche and snowball payoff simulator, and expense splitting proportional to income.

Web push over VAPID fires on real events rather than a polling loop. Households are multi-tenant, joined by invite code.

  • ASP.NET Core 9
  • Entity Framework Core
  • Next.js 16
  • React 19
  • SQLite
  • JWT
  • Web Push

tcgplayer-quick-match

Keyboard-driven catalog matching inside someone else’s production app.

A zero-dependency userscript for the TCGplayer Seller Portal, built by reading a production front end in the browser and working with whatever was actually there.

9 commits in 2026. JavaScript, Userscript, Browser DevTools.

Support work

Three years of live technical support, and it is the reason the code is any good.

Remote, in English, for customers in the United States. It is half of what I do.

Telvista

Technical Support Representative, Verizon

2022–2024

Fully remote. Diagnosed service and device faults live, in English, for customers across the United States who could not describe what was wrong.

Integon

Customer Service Representative, Allstate Roadside

2025

Fully remote. High-volume dispatch for policyholders stranded mid-journey, where a slow reply has an immediate cost.

TaskUs

Sales Representative, LegalZoom

2024

Ran the full customer record in Salesforce: lead capture, case notes, pipeline, disposition.