Projects & open source
Things I've built
I start most projects by asking what they're actually trying to do, then build the simplest version that genuinely solves it. 25 of them live here: tools, small libraries, and a couple of games. Almost all are zero-dependency and free.
Browse by format
The side doors.
Some work makes more sense grouped by shape than date. These indexes collect packages, extensions, games, experiments, CodePen sketches, and editor tools.
tailwindcss-visibility
Tailwind CSS plugin adding content-visibility and contain-intrinsic-size utilities. Unlock browser-level rendering optimizations with a single class.
View sourceSave Image As
Chrome extension that adds right-click image saving with full format control. Convert to PNG, JPG, WebP, AVIF, GIF, or PDF directly from any webpage.
View sourcecreate-vvv
Production-ready Vue 3 + Vite + Vercel project scaffolder. One command creates a full-stack app with Tailwind CSS v4, Pinia, Vue Router, serverless API routes, and automated formatting.
View sourceFlorida's Scenic Byways
Every one of Florida's 37 designated scenic byways plotted on a single interactive map. Navigate by region, explore points of interest, and use it offline as a Progressive Web App.
Open projectStrayPath
Trip discovery app that finds scenic routes, small-town stops, parks, overlooks, and odd roadside detours near a route.
Open projectsmawl URL Shortener
A simple, self-hosted URL shortener with short link generation and no external service dependencies.
View sourcereQuery
Reactive state and declarative DOM binding for jQuery — no build step, no virtual DOM, no component model.
View sourceWordleish
A browser-based Wordle-style word guessing game with three difficulty levels, unlimited play, stats tracking, daily streaks, and social sharing. Built with Vue 3.
Open projectVisual Chromatics
Extract dominant colors from any image and export palettes as CSS custom properties, JSON, or hex codes. Runs entirely in the browser.
Open projectUtilityHelpers
80+ JavaScript utility functions for arrays, strings, objects, DOM, validation, and performance. One import, zero dependencies. Available via CDN or npm.
View sourceTetrish
A guideline-compliant Tetris clone built with vanilla JavaScript. Full SRS rotation with wall kicks, 7-bag randomizer, T-spin detection, lock delay, back-to-back bonuses, and mobile touch controls.
Open projectTailwind Hue Theme
A Tailwind CSS v4 plugin that remaps your entire color palette to perceptually-uniform OKLCH values controlled by a single CSS custom property.
View sourceStorageManager
Wraps localStorage and sessionStorage with TTL expiration, LZString compression, namespacing, batch operations, and cross-tab sync.
View sourceSaltyKeys
Client-side API key obfuscation for CodePen projects and public demos. Uses a salt-based reversible encoding to keep credentials out of plain-text source views without requiring a proxy server.
View sourceRoute Hub
Multi-stop trip planner for the browser. Add stops, sort by proximity, then hand off the optimized route to Google Maps.
Open projectResourceLoader
A lightweight, zero-dependency JavaScript library for dynamically loading scripts, styles, and other resources through a unified Promise-based API.
View sourceRepoWidget
Zero-dependency widget that renders live GitHub repo cards on any website. No build tools, no framework required. One script tag, one function call.
View sourceParkFindr
Mobile-first web app for discovering parks, playgrounds, and green spaces near your current location. Two map providers, offline caching, and no account required.
Open projectMaths.js
Dependency-free JS math library filling the gaps native Math leaves behind. Stats, number theory, and numeric helpers including avg, median, gcd, clamp, and percentile. Under 1 kb.
View sourceImageProcessor
Browser-based image processing — resize, crop, compress, convert formats, and apply filters without uploading to a server.
View sourceGovernment Design Systems
A curated reference of publicly documented design systems from federal agencies, state and local governments, civic organizations, and international counterparts.
Open projectGetViewport
Lightweight JS utility that bridges CSS media queries and JavaScript. Define breakpoints once. No magic numbers, no resize polling, no duplication.
View sourceEmbedManager
Zero-dependency JS library for lazy-loaded, privacy-respecting embeds. One data-attribute pattern handles YouTube, Vimeo, Spotify, Gists, Maps, and more.
View sourceContrast Check
Chrome extension that shows WCAG contrast ratios inline on hover. Instant AA/AAA pass/fail status and computed colors without leaving the page.
View source