I design tools
people actually learn from.
Most AI tools optimize for speed. I optimize for comprehension. I design interfaces that help people see what the system is doing, check assumptions, and stay in control of what ships. I call this productive friction, small pauses that help people think, verify, and learn.
Productive Friction
Speed is cheap. Understanding is not. I design small moments that slow things down just enough for people to check inputs, catch errors early, and learn how the system behaves. The goal is tools that make people better over time, not tools that train dependency.
Before the system acts, give people a moment to review what is about to happen. Not a confirmation dialog. A real checkpoint where they can catch assumptions early.
ReflectionShow 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 without blocking 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 plus 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 and AI Interface Design
Building tools where the interface 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 two-color system (red and 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. Guidance pulls back as users gain confidence. Shipped as a standalone web app with plans for university workshops at Fu Jen Catholic University.
- Key decision
- 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 and Conversion Design
Sometimes the best way to convert users is to slow down and help them understand what they are buying.
- Problem
- 80% drop-off in a 1-click checkout flow. Analytics showed users leaving at "confirm purchase." Usability tests revealed anxiety about device compatibility. Speed was not 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." The flow is slower, but users understand what they are buying before paying.
- Key decision
- The 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 learn from? Notes from weaving, calligraphy, and material archives.
What I learned about creative constraints from building a computational weaving tool.