I design tools
people actually learn from.
Most AI tools try to make everything instant. I do the opposite: I design interfaces that help people understand what the system is doing and stay in control of the outcome. I call this productive friction. It works in enterprise dashboards, generative art tools, and everything in between.
Productive Friction
Every AI tool wants to be faster. But speed without understanding creates users who can't tell good output from bad. I design moments that slow things down just enough for people to think, check, and learn. The result is tools that actually build skill over time, not just dependency.
Before the system acts, give people a moment to review what's about to happen. Not a confirmation dialog. A genuine checkpoint where they can catch assumptions early.
ReflectionShow the full guidance when someone is new, then gradually pull it back as they get comfortable. The interface teaches first, then trusts.
LearnabilitySet boundaries that channel creativity instead of limiting it. Pair every constraint with a clear undo path so people feel safe experimenting.
ReversibilityEnterprise Product Design
Redesigning complex native apps where small UX decisions have outsized business impact.
- Problem
- Users managed one security system across 3 separate apps. Most churn happened right after storage limits hit, when the upsell moment felt hostile.
- What I shipped
- Unified native dashboard with lifecycle-based upgrade triggers. Instead of cold-pushing upsells, I intercepted users at natural friction points like storage full or new device added. Built the component library in Figma and handed off to 2 iOS + 2 Android engineers.
- Key decision
- Killed the "upgrade now" modal. Replaced it with an inline storage meter and contextual prompt. Engineering pushed back on the extra state tracking, so I scoped it to 1 sprint by reusing the existing usage API.
Creative Tools & Computational Culture
Building tools where the interface itself teaches you how the system works.
- What I built
- A dual-deck DJ sampler that runs entirely in the browser. No backend, no plugins. Client-side onset detection slices any track into 16 playable pads automatically. Sub-3ms audio latency by pre-decoding full tracks into AudioBuffers.
- Key decision
- Traded memory (~10MB/min) for instant pad response by decoding entire tracks upfront instead of streaming. The <audio> tag added 50ms of seek delay, which is unacceptable for a musical instrument.
- Design language
- Modeled after Pioneer CDJ and Teenage Engineering OP-1. Brutalist hardware aesthetic with a 2-color system (red + amber on black). Every control maps to a physical metaphor: jog wheels, crossfaders, transport buttons.
- What I built
- A generative design tool that teaches computational pattern-making through progressive scaffolds. The guidance withdraws as users gain confidence. Shipped as a standalone web app with plans for university workshops at Fu Jen Catholic University.
- Key decision
- Added deliberate friction: before generating a pattern, users set constraints manually (color count, symmetry axis, thread density). Slowing the "make" step means users learn the system, not just the output.
Growth & Conversion Design
Sometimes the best way to convert users is to slow down and help them understand what they're buying.
- Problem
- 80% drop-off in a 1-click checkout flow. Analytics said users left at "confirm purchase." Usability tests revealed they were anxious about device compatibility. Speed wasn't the issue; confidence was.
- What I shipped
- Replaced the fast checkout with a 3-step compatibility check. Added a device-scan screen and plain-English confirmation of "your phone supports eSIM." Slower flow, but users understood what they were buying before paying.
- Key decision
- PM wanted to keep 1-click and add a tooltip. I tested both. The 3-step flow won by 25 points on conversion. We shipped it in 2 weeks with existing APIs.
The Agent UX Wind Tunnel
Generative Prototypes & Data Vis
Sketches built with p5.js, each one exploring a different interaction pattern or data visualization idea. Use the sliders above to change the global parameters.
Thinking Out Loud
Notes on productive friction, creative tools, and what happens when AI meets culture.
Request Access ↗
When AI tools optimize for speed, they hollow out the thinking that makes the work valuable in the first place.
How do you design AI systems that respect the cultural knowledge they're trained on? Notes from weaving, calligraphy, and material archives.
What I learned about creative constraints from building a computational weaving tool.