I build
products,and the toolsbehind them.
- Currently
- Staff Software Engineer at Airbnb, leading the CRM platform
- Previously
- Founding Product Engineer at Brightwave; led a team of 13 at Meta
- Building
- A programming language, memory for AI agents and an app for runners
Projects
On the side, in 2026
-- examples/concurrent.silt let ch = channel.new(10) let producer = task.spawn { -> channel.send(ch, "hello") channel.send(ch, "from") channel.send(ch, "silt") channel.close(ch) } let consumer = task.spawn { -> -- receive until closed }
$ silt run concurrent.silt hello from silt
Fig. 1, silt silt-lang.com - sediment store \"The user prefers pnpm over npm for all JavaScript projects"
- sediment store \"Deploys go to Vercel; the production branch is main"
- sediment store \"Run cargo clippy before opening a pull request"
- sediment store \"Write commit messages in the imperative mood"
- sediment store \"The staging database is reset every night"
Which package manager should I use?
- 0.41 The user prefers pnpm over npm for all JavaScript projects
- 0.39 Deploys go to Vercel; the production branch is main
Fig. 2, sediment sediment.sh - Show debrief on the stage
03
debrief
A written note after every run, with every number checked against your data.
Tempo run, July 10, 2026
On pace, it landed almost exactly where your history says it should, averaging 5:25/km. What didn’t match was the cost: average HR ran at 102% of threshold, and decoupling came in at 7.1%. Same pace, higher strain: that points straight at the weather, with a dew point of 22.4 °C. It lines up with your own pattern too: against the same route four days ago in cooler air, you actually ran faster today (-11 s/km), but decoupling jumped by nearly ten points relative to that day.
Every number checked against your watch file
Fig. 3, debrief debrief.fit
Experience
17 years, since 2009
- 2025–now Airbnb Staff Software Engineer Lead the CRM platform and the Community Center, where hosts ask questions and help each other.
- 2023–2025 Brightwave Founding Product Engineer Led UX engineering for agentic AI tools that research large data sets, from product strategy to interface engineering and user research.
2015–2023 Meta Staff Software Engineer Instagram and Facebook: led a team of 13 on VR and wearables, and grew Today In to 3M+ daily users.6 highlights, Instagram and Facebook
Instagram
- Brought VR and wearables to Instagram, including Meta Gallery storage, the Ray-Ban | Meta launch and live streaming from the glasses.
- Unified sharing infrastructure across Meta's apps.
- Built curated shopping collections and the tools to curate them.
Facebook
- Built Today In, a local news product, in the US and Australia, and grew its team from 4 to 23 engineers.
- Helped launch Facebook News.
- Scaled personalized video generation from 100k to 3M+ videos a day, and built its editor in React and React Native.
- 2014–20152014–15 AKQA Senior Web Developer
- 2012–20142012–14 SinnerSchrader Frontend Engineer
- 2009–20122009–12 DotsUnited Web Developer
Open source
From 2011 to 2013, still in use
2,902 stars on GitHub, about 1M downloads a year
easy-pie-chart
2,058 stars, about 1M downloads a year
Animated pie charts for single values.
Fig. 4, easy-pie-chart vintageJS
844 stars
Vintage photo effects, rendered in the browser.
Fig. 5, vintageJS mocha-given
12k downloads a year
Given, When, Then syntax for Mocha tests.
// counter.spec.jsdescribe("a counter", () => { Given(() => { this.n = 24 }) When(() => { this.n++ }) And(() => { this.n *= 2 }) Then(() => this.n === 50)})
$ mocha --ui mocha-given a counter ✓ then this.n === 50 1 passing
Fig. 6, mocha-given