est. this year · made with robots

TRASHTOOLS

stuff i made with robots.

A pile of small, AI-assisted tools I made in my spare time — ROM wranglers, PDF contraptions, a Dragon Quest X router, and the Rust plumbing underneath. I needed them, so I made them.

the pile

Various tools, assorted condition.

Mostly Rust. One that runs in your browser. All built using copious robot. Maybe useful to others.

lang
kind
state

Stable

retro-junk

rom & disc-image wrangler for 23 consoles

A Rust CLI that analyzes, renames, and scrapes metadata for retro game ROMs and disc images — 23 systems across Nintendo, Sony, Sega, and Microsoft. Streaming CRC32/SHA1/MD5, CUE/CHD/ISO parsing, the works.

  • Rust
  • CLI
  • ROMs
  • hashing
  • No-Intro / Redump
  • CD images
Active

dqx-wayfinder

shortest in-game route across Dragon Quest X

Tell it where you are and where you want to go; it returns the fastest route to actually play — weighted Dijkstra over the whole world, filtered by which content packs you’ve cleared and which Zoom points you’ve registered. Bilingual EN/JP. Runs entirely in your browser.

  • Web
  • Web
  • Dragon Quest
  • routing
  • Dijkstra
  • bilingual
WIP

cardtable

a spatial canvas for your browser tabs

Every tab becomes a Polaroid card — a screenshot — on a pannable, zoomable 2D table. Group cards into hand-drawn chalk blobs, annotate them, and let the tabs you aren’t using sleep to save memory. New tabs arrive as cards in your hand to drop onto the table or into the bin; it replaces your new-tab page, so the canvas is home. Chromium + Firefox (MV3), local-only — nothing leaves your machine. Too useful to call junk.

  • Web
  • Extension
  • browser tabs
  • Chrome + Firefox
  • MV3
  • local-only
WIP

expat-junk

translate PDFs & images in place, yourself

Drag a rectangle over a chunk of text, it finds the words, you click to translate — via Gemini vision or Google Cloud Translation, with a token-saving cache. Resize, rotate, and fix the result in place. The right amount of manual for documents you refuse to pay a pro to mangle.

  • Rust
  • Desktop
  • PDF
  • translation
  • OCR
  • Gemini
Stable

dqx-proton-helper

run Dragon Quest X (JP) on Linux with plain Wine

Helper scripts that set up a Wine prefix, run the DQX installer into it, and launch the game with the handful of non-obvious settings that make gameplay, the launcher’s HTML UI, and in-game FMV cutscenes all work — no Steam, Proton, or Lutris required. (The name’s a fossil: it predates dropping Proton.)

  • Shell
  • Scripts
  • Linux
  • Wine
  • gaming
  • Dragon Quest
WIP

phono-junk

rip, identify, verify & catalog audio CDs

retro-junk’s sibling, pointed at music instead of games: identify CD rips by disc ID against MusicBrainz and Discogs, verify them against AccurateRip, catalog everything in SQLite, and export tidy tagged FLAC with cover art. Built around uncommon and foreign-language discs — Thai, Korean, Chinese, Japanese — where you might not even know how to type the title. CLI + GUI in sync.

  • Rust
  • CLI
  • audio CDs
  • MusicBrainz
  • AccurateRip
  • FLAC
WIP

art-junk

a fast, stylus-first vector drawing app

A cross-platform, GPU-accelerated drawing surface in Rust, built around a retained vector scene graph — strokes are geometry, not pixels, so you can zoom in forever and "100%" means real-world size. Stylus-first: pressure, tilt, honest palm rejection, aiming for 120+ FPS and the closest-to-paper latency feasible. Pre-alpha and hobby-paced.

  • Rust
  • Desktop
  • drawing
  • GPU
  • stylus
  • vector
WIP

block-junk

a voxel world where you tell the guys to build

A voxel-world game in Rust: you don’t place blocks yourself — you direct little guys to build a nice place for them to live. Early days, but the bones are there: a Cargo workspace with engine crates, assets, and room for mods.

  • Rust
  • Desktop
  • voxel
  • game
  • simulation
  • mods
Active

junk-libs

the shared Rust plumbing under the rest of the pile

The reusable building blocks the other tools stand on, carrying no app-specific meaning: CD-image parsing (CUE/CHD/ISO), streaming multi-hashers, checksum descriptors, common I/O traits, and a pure-Rust PDF render core. Boring on purpose — so the tools above don’t have to be.

  • Rust
  • Library
  • crates
  • infrastructure
  • PDF render
  • disc parsing
the bill of goods

Why “trash”?

I call these Trash Tools on purpose. Most of the code was written with an LLM riding shotgun, so by some measures, it becomes “less valuable” as it wasn't hand-made entirely by a human. I get it.

Each tool here fills some need I had — translating documents without paying a fortune, wrangling my retro game collection, impositioning books for printing and binding, navigating an old Japanese MMORPG withough losing my mind. Nearly always, alternatives were expensive, tedious, or just didn’t exist, so I made these instead. AI let me do it in my spare time. The alternative was "no tool gets made." So that was my choice.

The code’s all right there in the repos, robot fingerprints and all. This site is one of them too — same robot, same rules. It's probably not as good or clean as if I'd architected and written them all by hand. But they DO exist, flawed as they are, and for me that means I can get other things done.

So welcome to my trash heap.

— Scott Harper

piler of trash