Repair tech
who vibecodes.

I'm Spaced Out. I build useful tools and port games to hardware they were never meant to run on. Local-first, documented, and checked against the real thing.

Latest from the bench: StreamGuard v0.3.3, a Twitch ad shield that runs in the browser.

What's the problem?

Here's one from the bench. Pick the problem closest to yours to see the others.

Choose a problem

StreamGuard

Problem
Twitch stitches ads into the live playlist. A normal blocker leaves a black hole where the ad was.
The build
Hook the player before it starts, read the ad markers, and swap to a clean backup feed. If there isn't one, blank the ad segments locally.
Status
v0.3.3 · Chrome & Firefox · MIT
Read the StreamGuard job ↓

SVR 2011 on Switch

Problem
WWE SmackDown vs. Raw 2011, stuck on the Xbox 360 it shipped on.
The build
Statically recompile the PowerPC code to C++, build it for the Switch with ReXGlue and libnx, then replace the renderer path that can't keep up.
Status
33–35 fps in-ring · source-only builder
Read the SVR 2011 job ↓

LapVoice CLI

Problem
You finish a lap and still don't know where the time actually went.
The build
Compare every lap to your best of the session, find the loss, and say it out loud, with the model running on your own PC.
Status
Python · MIT · no account
Read the LapVoice job ↓

Repair Bench

Problem
Tickets, photos, parts and invoices living in five different places.
The build
One phone-friendly work order app with a real status workflow, photo compare, parts stock and card payments. Each shop runs its own copy.
Status
Next.js + Supabase · v1.0.0
Read the Repair Bench job ↓

Choose another problem

Selected work

Four jobs, in full. The short version is above; here's what was actually wrong.

StreamGuard

A Twitch ad shield that runs entirely in your browser.

Twitch stitches ads into the live HLS playlist, so a normal blocker can leave you staring at a black hole. StreamGuard hooks the player before it starts, reads the ad markers, and asks Twitch for a clean alternate feed. If every feed is ad-laden, it blanks the ad segments locally and keeps their audio and video out of the decoder. No proxy, no account, no telemetry.

Platform
Chrome, Edge, Brave, Firefox 142+
Status
v0.3.3, November 2026
Licence
MIT
Built with
TypeScript, Manifest V3
The StreamGuard popup during a live break: shield active, 8 ad breaks handled, clean backup stream on. The StreamGuard popup with no Twitch tab open: shield idle, 0 ad breaks.
The real popup: a live break on the left, the no-tab state on the right. The real popup during a live break.
The WWE SmackDown vs. Raw 2011 title screen running on a Nintendo Switch, with the on-screen overlay reading 60 fps. The SVR 2011 match select screen on a Nintendo Switch, showing Kane versus Hurricane and the play options.
The title screen and match select, running on hardware. The overlay reads 60 fps in the menus; in-ring is 33–35. Screenshots: Spaced Out.

SVR 2011 on Switch

WWE SmackDown vs. Raw 2011, running natively. Not an emulator.

In-ring, as tested

33–35 fps

Stock33
Overclocked35
Menus60

deko3d · 720p · Switch 1

The Xbox 360 version's PowerPC code is statically recompiled to C++ with ReXGlue, then built for the Switch with devkitA64 and libnx. The first path ran through Mesa's NVK; the deko3d branch does the same 720p frame with less overhead. In-ring is 33–35 fps, menus are 60, and the public release is a source-only builder. You bring your own copy of the game.

Target
Nintendo Switch 1, Atmosphère
Renderer
deko3d / Mesa NVK
In-ring
33 fps stock, 35 fps overclocked
Release
deko3d-v2.1.8, November 2026

LapVoice CLI

A lap coach that never leaves your PC.

After each lap, it compares you to your best lap of the session, finds where you lost time, and says it through your speakers. The model runs locally with Ollama; there is no account, API key or subscription. Without Ollama, the built-in template tips still work. The desktop app adds overlays, a track map and movable widgets; this repo is the free command-line coach.

Platform
Windows 10/11, Python 3.10+
Model
Ollama, running locally
Licence
MIT
Demo
--demo with simulated laps
Lap 14 +0.214
“You're braking about eight metres early into Turn 4. Pick the throttle back up sooner.”
Best 1:32.204 This lap 1:32.418

Local model · Ollama · no account

Example tip. Your lap times will differ.

Repair Bench

Ticket 1042

Waiting on parts
Customer
J. Rivera
Device
Switch OLED
Issue
No charge / USB-C port
Estimate
$85
Latest note

Port replaced. Battery holds. Running a 24-hour charge test before pickup.

Customer updated by text 2:14 PM
Example work order. Names and devices are made up.

Repair Bench

Work orders for game console repair shops.

Tickets, customers, devices, photos, parts and invoices in one phone-friendly app. Each shop runs its own copy, with a customizable status workflow, before/after photo compare, low-stock flags, Stripe card payments and email or text updates. Built for the way a repair bench actually works, not the way a SaaS demo does.

Built with
Next.js 15, React 19, Supabase
Payments
Stripe
Updates
Resend, Twilio
Release
v1.0.0

How I work

Repair work teaches a simple order: hear the symptom, reproduce it, find the actual fault, then write down what you did so the next person can follow it. I build software the same way.

That's why the README is part of the product. If you can't install it from the instructions, it isn't finished. StreamGuard ships with a full install and troubleshooting guide. SVR 2011 ships as a builder because the game's code isn't mine to distribute. Repair Bench ships with a setup script and a paste-the-SQL route for people who don't live in a terminal.

I like tools that are local-first, small enough to understand, and honest about their limits. No account if I can avoid it. No telemetry. If it needs a server, it should be your server.

I'm a vibecoder at the forefront, which is a fancy way of saying I use every tool available and then check the work. The bench keeps me honest: the console either boots or it doesn't.

Spaced Out

Repair technician, vibecoder, game enjoyer.

Current toolbox: TypeScript, Python, C++, Next.js, Supabase, Ollama, ReXGlue, and a soldering iron that has seen things.

Got something in mind?

Tell me what you're trying to build, port, or unstick. I'll tell you if it's a tool, a port, or a good excuse to take it apart.

spacedoutbeard@gmail.com

No form, no newsletter. Just email.

Or find the code on GitHub ↗.

Ports, tools, weird hardware, and jobs that start with “this shouldn't be possible.”