More projects are at github.com/osteele, and observablehq.com/@osteele.
Web & Publishing
Web Publishing & Documentation
Subdomain Router
A Cloudflare Worker for path-based application routing, enabling multiple applications to be served under different paths of a single domain.
Language Learning
Language Learning Tools
Machine Embroidery
Machine Embroidery Tools
Classroom Tools
Teaching & Course Management
Map Explorer
Interactive visualization of the map function in Arduino, Processing, and p5.js.
Multiclone
Fast tool for cloning all forks of a repository or GitHub Classroom assignments.
nbcollate
Combines multiple student Jupyter notebooks into a single organized notebook.
Assignment Dashboard
Dashboard for tracking student Jupyter notebook submissions on GitHub.
LLM Tools & Libraries
Large Language Model Tools
Claude Chat Viewer
View Claude chat conversations from exported JSON files. Copy the chat as RTF; download a zip of all the artifacts.
Claude Artifact Unpacker
Unpack and organize multi-file projects from Claude's Artifacts.
Travel Photo Explainer
AI-powered tool that explains the cultural and historical significance of travel photos.
Prompt Matrix (JS)
JavaScript library for expanding prompt matrix strings.
p5.js Tools & Libraries
p5.js Development Tools
p5 Server
Command-line tool that runs p5.js sketches with live reload and automatic library inclusion.
P5 Server VSCode Extension
Create and run p5.js sketches within Visual Studio Code with integrated development server and browser.
p5.layers
Simplifies use of createGraphics and p5.js Renders objects for drawing layers.
p5.rotate-about
Adds rotateAbout() and scaleAbout() functions for rotating and scaling around a point.
p5.vector-arguments
Modifies p5.js Shape functions to accept p5.Vector instances as arguments.
Physical Computing
Microcontroller & Sensor Tools
IMU Client Examples
Examples using wireless IMU data to animate 3D models and create data visualizations.
Legacy Libraries
Historical JavaScript & Ruby Libraries
Functional JavaScript
ArchivedA library for functional programming in JavaScript that defines standard higher-order functions and utilities for partial function application and function-level programming.
Sequentially
ArchivedA library of temporal and frequency adverbs for JavaScript, providing methods for deferred or periodic execution and function call throttling.
Fluently
ArchivedFluent programming (chained method calls) for JavaScript.
ROpenLaszlo
ArchivedA Ruby interface to the OpenLaszlo compiler for integrating OpenLaszlo development into Rake or Rails applications.
OpenLaszlo Rails Plugin
ArchivedA Rails plugin that makes it easy to use OpenLaszlo client-side applications with Rails.
Collections JS
ArchivedFramework-independent JavaScript collection methods.