Web Portfolio
Websites, apps, browser extensions, and utilities designed and built for clients and personal projects.
Client Work
MUSAY
Lead Engineer
I’m the lead engineer at MUSAY, a platform that helps people discover live events at museums, music venues, and other creative spaces. I combine hands-on software development with technical leadership, working with the team to build and improve the product. I maintain and develop the Framer website and the React Native iOS and Android app, and I have built many internal web tools for the team.
React Native, Framer, internal web apps
Berkeley Disaster Preparedness Neighborhood Network (BDPNN)
Developer & Site Administrator
I rebuilt the Berkeley Disaster Preparedness Neighborhood Network (BDPNN) website with a custom Next.js frontend, focusing on performance, mobile usability, and clear navigation. WordPress remains the content management system, so other administrators can continue updating pages through a familiar interface. I also support ongoing maintenance, content updates, and website administration.
Next.js, headless WordPress (CMS), WPGraphQL
Everyday Climate Champions
Developer & Site Administrator
I built a custom Next.js frontend for Everyday Climate Champions, a local Bay Area podcast, focusing on performance, mobile usability, and clear navigation. The site retains WordPress as its content management system, allowing administrators to publish episodes and update content through a familiar editing interface.
Next.js, headless WordPress (CMS), WPGraphQL
Orcasound
Lead Developer, Open Source
I’m a lead developer on Orcasound’s collaborative, open-source website project. Alongside coding and building features, I advise on technical decisions, help prioritize work, and assign tasks to other developers, supporting contributors and helping the team move the project forward.
Next.js
GitHubApps
Websites
Estuary Digital
Immersive 3D art gallery — 320 works displayed across two environments: a wooded grove with easels and ruins, and an island gallery surrounded by ocean. Procedural terrain, atmospheric lighting, and spatial audio. Three.js, vanilla JS.
Low CFG online show for The Wrong Biennale 2025
Curated online art exhibition with nine participating artists exploring AI image generation at low guidance scale. Built with Next.js.
3D Gallery
Draw a 2D floor plan and walk through it as a first-person 3D gallery. Built with Three.js and React.
Artnow.world
Artist portfolio platform with individual profile pages and curated collections. Next.js and Vercel.
Mythosphere
AI-generated encyclopedia of world mythologies — hundreds of cultures, deities, and traditions. Next.js with dynamic content generation.
Random Wikipedia
10 random Wikipedia articles at a time. Quick way to discover something new.
Streetview Tourism
Curated collection of interesting places around the world via Google Street View.
Emoji Lenormand
Emoji-based Lenormand card readings. Generates random spreads with interpretations.
Online Art Gallery
Minimal gallery site for displaying recent artwork in a clean grid layout.
Chrome Extensions
Selective Dark Mode
Enable dark mode for specific websites
Tab Storage
Save, organize, and restore browser tabs
Simple Tab Sorter
Reorder tabs alphabetically
Tab Memory Sorter
Reorder tabs by memory usage
Word Replacer
Replace words on the current page
Random Text Replacer
Replace text with random characters
Utilities
Timezone Globe
Every IANA time zone plotted live on a 3D globe with current time, UTC offset, DST status, and searchable sidebar. Three.js, React.
Image Painter
Paint using a source image as a brush
Hex Color Permutations
Generate color permutations for a hex value
Word Explorer
Discover and build words from a dictionary