Projects

I used to treat this as the software project index. Most of these are better understood as software studies: tools built to understand a process, prepare a physical output, or test an idea.

The source code matters, but it is not the whole point. Each project should eventually say what made it interesting, what I thought might work, what I learned, and what still needs another attempt.

The broader study frame starts at Studies. The plotter cluster is explained in From Pixel to Pen.

Plotter Toolchain

Tools that turn code, data, and images into physical drawings on paper.

VHS: Vector Handwriting System

Captures real handwriting as replayable vector data. Draw each letter ten times, the system stores the variance and reconstructs text stochastically. The plotter draws it with a fountain pen, and the result is indistinguishable from handwriting.

Read more · Try the Glyph Collector · GitHub

Tracer

A pen-first tracing study for turning reference images into sparse, pressure-aware line data. SVG is the current handoff. The longer path is Tracer capture data into Gantry, then G-code for the plotter.

Read more · Launch Tracer · GitHub

Generative Art

22 algorithms for creating visual patterns from mathematical processes. Flow fields, reaction-diffusion, L-systems, strange attractors, Voronoi tessellations. Each produces clean, layered SVGs optimized for multi-pen plotting.

Read more · Try the Web App · Mobile Studio · GitHub

Primitive

Reproduces photographs as abstract vector art by stacking thousands of semi-transparent geometric shapes via hill climbing optimization. Java port of fogleman/primitive.

Read more · GitHub

CityPlot

Generates SVG city maps from OpenStreetMap data. Streets, buildings, water, parks, railways as separate layers. Scales from coaster to wall poster.

Read more · Try the Web App · GitHub

Vectorize

Converts raster images into clean SVG vector graphics using three pipelines: Canny edge detection for line art, whole-image tracing for posterized color output, and centerline extraction for single-stroke plotter paths. Seven strategies, five presets, interactive GUI.

Read more · GitHub

Gantry

The current plotter toolkit: an all-Java studio that prepares SVGs and images, positions them on the machine bed, generates a command model, reports plot metrics, and streams or exports G-code. It supersedes SVGToolBox and SVG2WaterColor by pulling their useful parts into one workflow.

Read more · GitHub · Releases

PPCT

A small A4 calibration target for comparing pens, paper, plotter settings, and the awkward bits between them. The browser version generates a full labelled SVG or a geometry-only file for plotting onto a printed template.

Read more · Open PPCT · GitHub

SVGToolBox: deprecated

Historical predecessor now superseded by Gantry. Prepared SVGs for pen plotters with palette quantization, fill-to-hatch conversion, path optimization and layer separation. Kept online as a project note.

Read more · Successor: Gantry · GitHub

SVG2WaterColor: deprecated

Historical predecessor now superseded by Gantry. Extended the plotter toolchain from pens to brushes with automatic paint refill scheduling and multi-station management. Kept online as a project note.

Read more · Successor: Gantry · GitHub

Drawing and practice

Ductus

A small offline calligraphy practice app. It scores movement rather than just the final shape, and now has a first Kurrent Basic stem sequence: i, u, n, m.

Read more · Open Ductus · GitHub Pages mirror · GitHub

ClefHanger

A phone-first sight-reading game. Notes move toward a cliff; name the front note before it drops. Current build starts with an untimed Practice mode, tiny lessons, C/D/E first steps, visual correction labels after mistakes, treble, bass, accidentals, chords, a piano strip, note playback, speed, difficulty, and microphone pitch input.

Read more · Play ClefHanger · GitHub

Hardware and recording

Ohrwurm

A small local-first voice recorder. The current Waveshare ESP32-S3 bench prototype records mono WAV files to microSD, replays the latest file locally, and can be pulled into local Whisper without removing the card.

Read more · GitHub

Data and Web

FileFirst

An architecture for managing large digital archives using the filesystem as the single source of truth. Metadata lives next to the files in plain JSON. No database required. Built for archives that need to survive decades.

Read more · GitHub

Pulse of the World

Global metrics as real-time pulses. A birth every 238 milliseconds. A death every 500 milliseconds. Forty-four metrics, each pulsing at the rhythm of its real-world rate.

Read more · Open Pulse of the World · GitHub

Literature Clock

A clock that tells time through literature. Every minute, a quote from a novel that mentions the current time. 1,772 quotes from over 340 books.

Read more · Open Literature Clock · GitHub

Web Games Arcade

Six browser games in neon-retro aesthetic. Vanilla JavaScript, HTML5 Canvas, zero frameworks. Asteroids, Breakout, Tetris, a pipe-routing puzzle, orbital physics, and a falling-sand simulator. Each game runs in under 15KB of JavaScript.

Read more · Play now · GitHub

Accidental Overlord

An isometric dungeon-builder about a farmer, a Turnip Box Heart, and the slow bureaucratic problem of heroes trying to loot the cellar. Current state: playable greybox prototype at /overlord/.

Read more · Play now

Void Crawler

A turn-based sci-fi roguelite aboard EREBUS-7. Current state: playable browser build at /void-crawler/, with 100-level depth, seeded generation, and save/resume work still underway.

Read more · Play now

All source code: github.com/utrost