The Crit is my biggest project — a critique product built from years of teaching design.
You should not have to be enrolled in my class to have access to quality critique. The review is the front door: paste a URL or upload images, get strengths, issues, and prioritized fixes fast enough to keep the file open. But the real product is the learning system around it.
My thesis: as AI makes it easier to generate interfaces, design judgment gets more valuable. Principles, design thinking, and taste matter more when the internet is full of plausible screens made quickly. The scarce skill is knowing what is clear, useful, and worth shipping.
There are real critique examples so designers can see what good feedback sounds like. There are articles and resources for building judgment. There are tools for the practical moments around the work — resume review, case study builder, font pairing — because designers need more than one critique. They need language, examples, and repeatable ways to make better decisions.
Built on Next.js + Claude + Stripe + Supabase. Every craft decision earns its place — concrete examples before conversion, no "learn more" CTAs anywhere, serif type and a warm palette because SaaS sans doesn't fit the work.
The score is probably the least interesting part of the critique.
What people actually want is the sharp part. What's off. Why it matters. What to fix first.
A number looks clean in the UI, but it's rarely the thing that builds trust. The useful part is the note that makes you reopen the file.
#the-crit#product
Thought
A lot of legacy software does not need a total reinvention. It needs taste, restraint, and a better visual system.
The hard part is not making it look new. The hard part is making it feel current without breaking the habits people rely on.
#ui#productdesign
Build
Rebuilt Pixel Lab from scratch for v2 — all client-side, your image never hits a server. Canvas API does the heavy lifting.
The real upgrade is Floyd–Steinberg error diffusion. Hard palette quantization without dithering gives you flat color bands; with dithering you get expressive gradients from just 4 colors — Game Boy greens that actually look like photography.
9 palette presets, color levels that always posterize before palette snap, compare-original toggle, quick recipes. Started because I needed Game Boy greens fast.
AI is great at getting you moving. It is not great at taste.
It can help you ship faster, write faster, test faster. But knowing what to keep, what to cut, and what feels slightly off still takes judgment.
That part is annoyingly human.
#ai#design
Build
DriftKit is a motion-first component library — every interaction starts from spring physics (mass, stiffness, damping) instead of CSS easing curves. Easing flattens velocity; springs have weight.
52 components across two tiers. Showpieces (magnetic dock, cursor glow, digit roll, jelly hover) and Standard UI (buttons, inputs, tabs, dialog, accordion) with motion baked in. Zero install — copy-paste React with just two deps: React and Framer Motion.
Built it to teach students how spring animations actually work. Turned out everyone wanted the presets without the lesson.
Good product design is often just complexity management in a nice outfit.
A lot of the job is deciding what gets emphasized, what gets hidden, what can wait, and what needs to feel obvious right away.
Not glamorous. Very important.
#ux#productdesign
Thought
Most people know when something feels off. Fewer people can name why.
That's the part I'm most interested in — in teaching, in critique, and in product work.
Taste is useful. But taste with language is where things actually start improving.
#designcritique#teaching
Thought
I trust live products more than polished case studies.
A real thing with users, edge cases, ugly constraints, and a weird bug backlog tells me more than a perfectly lit deck ever will.
The work is more honest when you can actually click it.
#portfolio#productdesign
Thought
I teach design classes every term and I don't have a case study portfolio.
My case studies are the products themselves.
The irony isn't lost on me. 🫠
Build
Font Pairing Tool lives inside The Crit — 20 Google Font pairings, previewable with your own copy, CSS you can copy and paste.
The hard part wasn't the pairings. It was the framework for picking them. Most pairing guides lean on pattern ("serif + sans") or taste ("this looks nice") — neither helps a junior designer decide. So I grouped them by function: editorial, UI-safe, expressive, neutral. The choice leads with intent, not category.
#the-crit#typography#tools
Shipped
FFSF is a listing site for family-friendly SF spots — 230 places across 36 neighborhoods, curated with real photos and tags for age range, indoor/outdoor, weather-friendliness.
Built on Next.js + Supabase + Puppeteer for photo scraping. Server-rendered so listings show up for the real search queries parents actually type. I just garden occasionally. 🌱
Grading thousands of student assignments taught me more about design than a decade of practice.
You see every mistake. Every font crime. Every "I did this because I didn't know what else to do."
And then you see the ones who just get it, and it reminds you why you teach.