Blog
Building a contentEditable from scratch
2 min readMar 12, 2026
How I replaced a native textarea with a contentEditable div to support inline ghost text, custom caret positioning, and autocomplete overlays without fighting the browser.
DOMTypeScriptBrowser APIs
Why I switched to Base UI
2 min readFeb 24, 2026
Radix served me well for years, but the render prop composition model in Base UI finally gave me the control I wanted over styling and behavior without wrapper component bloat.
ReactBase UI
Streaming HTML parsing with Web Streams API
2 min readFeb 8, 2026
Piping a fetch() response directly into htmlparser2 using WritableStream — what I learned contributing the WebWritableStream adapter upstream.
Web StreamsOpen SourceNode.js
My open source contribution workflow
2 min readJan 19, 2026
The system I use to find meaningful issues, understand unfamiliar codebases quickly, and write PRs that actually get merged — without burning out.
Open SourceWorkflow