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.
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.
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.
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.
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.
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.
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/.
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.
All source code: github.com/utrost