Personal website ↗ · Open-source work ↗ · Say hello ↗
I build web applications, developer tools, and practical AI workflows. Mostly TypeScript, with a soft spot for clear APIs and the small details that make software easier to use.
I like understanding a system before changing it, keeping the implementation simple, and leaving a regression test for the next person who finds that edge case.
- Thoughtful interfaces — accessible, dependable experiences with React and Vue.
- Tools for builders — type-safe APIs, reliable workflows, and less friction between an idea and a working product.
- Practical AI — agents and integrations that do something useful.
TypeScript / JavaScript / React / Vue / Node.js / Vite
I contribute by tracing bugs, tightening types, and making everyday tools a little more reliable.
| Project | Contribution | Merged |
|---|---|---|
| rollup/rollup | #6593 · Close bundles in the Gulp examples | 2026-10-22 |
| rollup/rollup | #6592 · Preserve native module load errors | 2026-10-22 |
| pnpm/pnpm | #17146 · fix(pack): expand numeric brace ranges | 2026-10-20 |
| rollup/rollup | #6588 · Match stateful external regular expressions consistently | 2026-10-19 |
| rollup/rollup | #6587 · Fix transform diagnostics at position zero | 2026-10-19 |
| vuejs/devtools | #1168 · fix(codec): preserve sparse array slots in state previews | 2026-10-19 |
Public upstream contributions · Dates in UTC+8 · Updated daily · View all merged PRs ↗
Build with intent. Leave it clearer.



