System Overview
A computational printmaking suite featuring an interactive browser studio built in TypeScript and React, alongside a custom Python GIMP 3.0 plugin for studio pre-press preparation. Translates continuous-tone imagery into discrete K-Means ink swatches, applies edge-preserving box blurs for carving gougeability, blends mother-color undertones for ink harmony, and generates automated reduction carving instructions.
The Happy Accident Behind "View From A Distance"
Sometimes in computational printmaking, a software bug yields an unexpected masterpiece. While developing the GIMP 3.0 Python plugin (prep_transfer_cumulative.py), a byte-mapping bug falsely interpreted raw sRGB pixel arrays directly as CIELAB [L*, a*, b*] coordinates before running K-Means clustering and converting back to RGB space. Rather than corrupting the image, this happy accident generated the surreal, hyper-vibrant ink palette used in the physical reduction edition View From A Distance.
๐ Select ๐ฎ Serendipitous False CIELAB ("View From A Distance") in the studio toolbar below to experiment with this exact color palette transformation live!
Interactive Browser Quantization Studio
Upload custom image artwork or test sample presets to experiment with palette reduction, directional carving blurs, mother-color undertones, step-by-step reduction layer accumulation, and automated carving guidesโrunning live directly in the browser.
Quantization & Cumulative Transfer Engine
๐ก Long-press on mobile or right-click on desktop to save/copy image, or click Save Image.
Carve away all paper-white highlight areas on the un-inked linoleum block before printing Pass 1.
Physical Prints Preprocessed with Image Quantization
Explore physical reduction linocut editions pressed in the studio using palette layers and carving scripts calculated by this computational engine.
Onto to the Next2026
ed. 6Reduction Linocutยท8"x8"ยท4"x4"
"I've had the idea of a disembodied head leaning against an arm, as a print, for quite a while. This is just another interpretation of that using the same Blender model as Righty, another skeletal print of mine, but with the skull included."
Strawberries + Cream2026
ed. 12Reduction Linocutยท8"x8"ยท4"x4"
"Based on a cake that I made for my brother's birthday. It was a strawberry poke cake."
Bottles2026
ed. 12Reduction Linocut
"A companion piece to "Bottle Caps", these are the bottles that I had in my recycling when I thought of doing this print. Think of it as a snapshot of what I was drinking around the time of this print."
Bottle Caps2026
ed. 6Reduction Linocut
"A collection of bottlecaps that I had inadvertently kept around on my desk. I accidentally started to carve away a section that was supposed to remain for the final layer, and had to quickly adapt the print to remaining piece of that section. Small lesson in paying closer attention, dealing with what has happened, and adapting the best I can to the circumstances."
Isle of Reflection2026
ed. 9Reduction Linocut
"A recreation of a small isle of the coast of Kodiak, Alaska."
View From A Distance2026
ed. 9Reduction Linocut
"This print came together as an accident. In the course of quantizing the image for better understanding of how it would look as a simplified relief cut, I accidentally translated the dark color of night into the CIELAB color space and ended up with the vibrant pink and teal colors seen in the finished linocut. I thoroughly enjoyed creating the flowing shapes and seeing the final product come together, even with the middle layers where I lost the vision of the final product."
Nora2025
ed. 7Reduction Linocut
"An 8-layer reduction of my favorite dog in my immediate family, my own dog, Nora. This is the final print in my series of dogs in the family, after completing Ducky for my brother, Cash for my other brother, and Whiskey, my parents dog. A defect in the linoleum led to white dots appearing in each of the prints, a defect that I learned to accept."
Source Code & Repository
Inspect repository commits and architecture breakdowns.