worked throughout the 500,000-line dashboard migration, shipped the command menu and overview experiences, then moved to authorization for agents
work
this is not every ticket, job, or repository. it is the work that best explains the path from my first lines of code to what i do now, plus the projects that changed what i understood or what i worked on next
the clearest example starts with a tiny Next.js experiment, grows into a React framework, two articles, and a talk, then puts the work in front of Clerk, and next thing i know, we're rebuilding its dashboard without taking it out of production. apparently replacing the wheels while moving is allowed in software. the actual work was making sure Clerk's customers never had to care about any of it. the company now manages authentication for more than 100 million users, so uneventful was exactly what we wanted
from HTNX to R19
HTNX started as a deliberately silly attempt to get an htmx-like experience inside Next.js. it worked, which was enough to get one question stuck in the part of my head that refuses to leave these things alone. i wrote down what happened and kept following it: how much of a React framework could i rebuild myself?
R19 was the months-long answer: a small React framework built from scratch around React 19's server model. getting it to work meant understanding the boundary between React Server Components, server rendering, client bundles, and module graphs, then implementing each piece instead of trusting a framework to hide it. when source stopped being enough, i sent increasingly specific questions to people around React and Next.js; Josh Story and Dan Abramov were especially generous with answers
once it worked, the wrong turns became the backstory, and the actual code got its own walkthrough a week later. Lee Robinson shared the backstory first. Sébastien Lorber featured it in This Week in React, then came back for part two in the next issue. R19 also became a talk, and between that and the posts, the work eventually ended up in front of Clerk
building at Clerk
after joining Clerk, i got involved early in the migration from Next.js's Pages Router to the App Router and stayed with it all the way through. the framework change was the visible part; the difficult part was sequencing a new foundation while normal product work kept landing on the old one
i turned the full sequence into a migration talk and kept the source and notes alongside it. the talk covers the architecture, order of operations, and compromises required to move the product without freezing feature work around it
outside the migration, i worked on the command menu, the waitlist overview, and large overview tables. the command menu is the small detail i cared about disproportionately. people use shortcuts to get out of their own way, so a command menu that is slow or awkward defeats its entire purpose. the walkthrough shows the result. Haamed Bahram was more interested in how it got there, so he invited me to explain everything that went into building it, then shared the conversation
i'm now on a different team, working on how software acting for a person gets enough authority to be useful without making the secure path easy to ignore. my time moves between product decisions, technical proposals, prototypes, and code because every interface eventually has to answer who is acting, what that person allowed it to do, and how anyone can tell what happened afterward. agents, MCP servers, and CLIs keep changing the possible answers, so i keep the faster-moving explanation in now, where it can change with them
making the work fit on stage

Front in Floripa, photo 1 of 13
Codecon Summit, photo 2 of 13
Front in Floripa, photo 3 of 13
Codecon Summit, photo 4 of 13
Front in Floripa, photo 5 of 13
Codecon Summit, photo 6 of 13
Front in Floripa, photo 7 of 13
Codecon Summit, photo 8 of 13
Front in Floripa, photo 9 of 13
Codecon Summit, photo 10 of 13
Front in Floripa, photo 11 of 13
Codecon Summit, photo 12 of 13
Front in Floripa, photo 13 of 13
the R19 talk tried to make React 19 less magical by building a working framework in 99 lines, then tracing the two servers, payload, and references underneath it. the server components talk started one level earlier: why some components belong beside state in the browser, others belong beside data on the server, and how React makes both answers coexist. the dashboard migration talk had to compress more than a year into the decisions that mattered: why we migrated, how both routers stayed alive during the rollout, and what changed once real users reached it
the chronology
took on larger, more ambitious storefront projects, then built Quix after the VTEX IO development loop started getting in the way. other developers started using the faster Rust experiment too, and later i led a four-person team to first place at the 2023 VTEX hackathon
web developer
,
moved from learning VTEX to owning storefront work across its microservices and microfrontends
web development intern
,
learned VTEX while contributing to real ecommerce storefronts, then entered my first hackathon and finished second with the team
most of this work sits somewhere between a small product detail and the system that makes it possible. i like being close enough to care about both, then staying with the problem until it makes sense to the person using it and to the people building it with me. i would be very happy if the next project started somewhere around there too
the dates explain when each job happened. the projects do a better job explaining how one led to the next. there is more about me, where i mostly stop talking about job titles


