Skip to main content
SPROULTECH
Work
Resume
What We Do
Lab
About
Contact
Nate Sproul — all work
All work
25 projects · 3,608 commits · 576,488 lines ·
read it as a resume
Manufacturing ERP
Python
The production system a metals manufacturer runs its floor on, from order intake through to shipping paperwork.
Commits
2,381
Lines
251,377
Files
4,069
spud
Rust
A Minecraft Java Edition client for machines that cannot run the real one. No JVM, no game engine, protocol written by hand.
Lines
41,191
Tests
353
Resident
228 MB
callroster
Python
A call-schedule solver for a surgical group — who works which night, fairly, under real constraints.
Lines
15,206
Tests
131
shoalrun
Python
A rock and shoal hazard map for an unsurveyed Maine lake, built from satellite imagery.
Lines
17,721
Tests
102
Scenes
30
vodcut
Python
Turns a long recording into a tight edit. Local transcription, editorial cut list, frame-accurate render.
Lines
11,081
Tests
358 passing
Cloud calls
None
mason
JavaScript
A bot that queues into a long-running anarchy server, walks a very long way from spawn, and builds procedural geometric statues.
Lines
18,485
Tests
325
Commits
268
loci
Python
Tap code treated as a channel with unequal symbol costs, to find how few taps a word can possibly take.
Lines
8,598
Commits
16
Floor
8.99 taps/word
structdnd
Python
A single-player role-playing game where a language model narrates but never decides anything.
Lines
20,155
Tests
711
Commits
50
scara
Python
A printed four-axis robot arm and the software that drives it — kinematics, path planning, calibration, motion.
Lines
5,046
Tests
148
Target
0.1-0.3 mm
weave
TypeScript
Start a book in English and finish it in another language. Words swap over as you learn them.
Lines
3,439
Tests
42
Commits
18
sandlife
C
A falling-sand sandbox in C where the elements form little ecosystems that live, oscillate or collapse.
Lines
1,862
Commits
11
Elements
8
shellbridge
TypeScript
A command line on a desktop machine, reachable from a phone, with no inbound ports open.
Lines
2,653
Open ports
None
lodestone
TypeScript
A video editor with no timeline. Clips, filters and outputs are objects on an infinite board that you snap together.
Lines
15,218
Tests
328
tvwindow
JavaScript
Turns a TV into a window. A webcam tracks your head and the scene behind the glass moves with you.
Lines
31,755
Commits
22
tvhome
Java
A home screen for an Android TV with four things on it and no advertising.
Lines
33,086
Commits
89
portal
Rust
A Minecraft launcher where you pick a server, not an instance.
Lines
14,354
Commits
19
homestream
TypeScript
A private media server for family, hardened until a non-technical user could not break it.
Commits
239
Files
482
cellpaper
Python
A slime-mould simulation that renders to the desktop wallpaper.
Lines
509
Tests
8
CPU, one core
~3%
athanor
Rust
A solver for Opus Magnum, a game about building chemical assembly machines. The part that exists is the referee.
Lines
7,523
Commits
39
Corpus
4,500
vault
Python
An encrypted store for personal records — medical, financial, legal — that is safe to carry on a USB stick.
Lines
13,568
Tests
422
babel
Python
Two people wear a pair of glasses each and talk in languages they don't share. Each hears the other in their own.
Lines
4,461
Tests
81
factwire
Python
A twice-daily news digest that tries to be neutral by construction rather than by tone.
Lines
2,717
Tests
102
Status
Running daily
chaoslock
Python
Encryption built on a chaotic physics simulation: set the starting conditions from your input, run it, read off where everything landed.
Lines
3,419
Tests
39
sealrender
TypeScript
A vector editor for intarsia — wood inlay — that turns a photo of a panel into a numbered pattern, a cut list, and a DXF.
Lines
6,247
Commits
22
meal-planner
TypeScript
Picks a week of meals against nutrition targets and a budget, then fills a grocery cart with the result.
Lines
7,822
Tests
194
Drag any direction · arrows to pan · click a tile