Web Development

Combining technology, creativity, and useability to help people in big and small ways.

Current Toolkit

HTML CSS JavaScript TypeScript Svelte Three.js Threlte RxJS React Angular Node Express

Deep Space Network (DSN) Live

Monitor connections between NASA/JPL and interplanetary spacecraft missions in real time.

Svelte TypeScript Netlify

Built as an experiment to learn more about Svelte, DSN Live displays actual data from NASA's global network of radio antennas communicating with spacecraft throughout the solar system. The site uses a mix of styles from IBM's Carbon Components and custom CSS. Users can learn more about specific spacecraft connected with each dish, enabled by a custom data structure mapping spacecraft to external URLs.


Create beautiful shader materials in the browser and generate your JavaScript. Powered by lamina.

SvelteKit TypeScript Three.js Threlte RxJS Vercel

Spatula is a visual editor for building shader materials with lamina. It provides a visual editor and generates the JavaScript for your material. You can use that code as a material in any project that uses lamina and Three.js.


Custom stores to compose tweened motion sequences over multiple steps.

Svelte TypeScript NPM semver

svelte-sequence is an NPM package that provides a custom tweenedSequence store, a custom stopwatch store, and a custom timer store. All of which are utilities that make it easier to coordinate execution of tweened values.


Configure stores for keyboard inputs and events in any Svelte app.

Svelte TypeScript NPM semver

svelte-kbc is an NPM package that provides a config-based keyboard and event stores using Svelte context. I was tired of repeating the same code for setting up keyboard event handlers, so I made svelte-kbc to make things easier!


Fusing Svelte and RxJS with simple actions and pipeable stores.

Svelte SvelteKit TypeScript RxJS NPM semver Netlify

Combining two of my favorite tools (and learning how to publish an NPM package), svelte-fuse-rx has two primary utilities: an enhanced writable store that can use RxJS operators via pipe, and simple svelte actions for common RxJS use cases like debouncing an input.

Enrichment Calculator

A modern gas centrifuge enrichment calculator.

Svelte Netlify

Instantly see how gas centrifuge enrichment variables change under different scenarios by isolating SWU, Feed and SWU, Product and SWU, or Feed and Product. Svelte's reactive statements make complex formulas easy to bind together with HTML inputs.


[Work in Progress: converting to Threlte v6]

SvelteKit TypeScript Three.js Threlte Vercel

An open source portfolio of 3D scenes, experiments, and prototypes.


A simple Islamic prayer times app.

Angular Material TypeScript Firebase RxJS PWA

Falah, which means 'success' in Arabic, is a prayer times Progressive Web App (PWA) that uses browser geolocation - with permission - to display the 5 daily prayer times for Muslims. While simple to use, the app was my introduction to basic RxJS and reactive programming in Angular.

SC3 Lab

[DEPRECATED] - Experiment, learn, and generate code for 3D scenes in the browser with Three.js and svelte-cubed.

Svelte TypeScript Three.js svelte-cubed Netlify

A visual editor for building 3D scenes and generating svelte-cubed code. SC3 Lab can help you quickly setup a scene and share the code via Svelte REPL, experiment with different light and material combinations, or test glTF model animations.