Normal Palette
A color palette generator built around one idea: color comes from somewhere.
Over 120 generation modes pull from the world rather than from algorithms alone — beetle shells, aurora borealis, music scales mapped to a color wheel, world cuisines, geological strata. Most palette tools give you random or harmonious. This one gives you a reason.
Accessibility tools are built into the core workflow — simulate color blindness conditions, check contrast ratios, and design for the full range of human vision without leaving the app.
Export in CSS, SCSS, JSON, Tailwind, Figma, and more. Save to your machine, extract from images, or pick up where you left off — palette history lives in local storage and comes back with you.
Never tracked. No signup. Always free.
Cascadia Basin
A presence page. The background is a slow-drifting static field — analog noise rendered in canvas, scrolling at a pace that feels less like animation and more like atmosphere. It runs continuously without demanding attention.
This isn't a placeholder — it's a decision. Not every business needs a storefront. Some just need a door with a name on it and a way to knock. But front doors can still make an impression.
NCW Fiber
A fiber internet service provider I built to serve North Central Washington on the PUD network. The design goal was a clean, approachable marketing site that reflects the product: straightforward pricing, no contracts, no hidden fees, nothing buried in fine print.
The site leads with both plans and their pricing up front. Copy and layout are built around the things that matter in a small regional market: local ownership, responsive local support, and honest billing. The tone is warm and direct, a small business that doesn't play games with its customers.
Normal Invoice
A single-page invoice generator designed around one constraint: no backend. Form data encodes into a bookmarkable URL on mobile, or saves as a JSON file on desktop, and outputs a client-side professional PDF. Nothing is stored anywhere because there is nothing to store it.
The interface is deliberately minimal. Work Sans keeps the type clean and the muted slate palette reads business but stays uncomplicated. Dark mode follows the OS.
The UX is designed around user control rather than app defined rails. Fields are flexible by intent, blank fields drop out of the PDF entirely, and nothing enforces a specific way of using the form. The app trusts the user.
Data Fall
Drawing from the opening credits of Mamoru Oshii's Ghost in the Shell (1995), the broader cyberpunk visual tradition, and the code rain popularized by The Matrix (1999), Data Fall uses falling script to represent data as environment rather than content.
This project was built to explore the HTML5 Canvas API, using it to drive a full-screen generative animation with independently moving columns, luminous leading points, and glowing trails that fade as they fall. The default magenta palette is a nod to the neon aesthetics of Syd Mead and Blade Runner.
Stream color is user configurable via a color picker that reveals itself in the lower-right corner of the screen.