I care a lot about scale — not just of systems, but of teams. Helping people grow is honestly the part of the job I enjoy most.
I studied Computer Engineering at three universities in three different countries, and dropped out of all three. Make of that what you will — I like to think the classroom was just never where I learned best.
Most of my real education has come from building things and reading way too much about mobile architecture and UI/UX along the way. I'm deeply invested in the open-source community, regularly contributing to projects that shape the mobile and Dart ecosystem.
Lately I've been steering toward AI engineering: I contribute to Genkit, Google's open-source framework for building agentic apps, and I want to spend more of my time building AI-powered products. I'm comfortable on the backend and web too, with NestJS and Next.js.
Outside of work: I freelance, I'm a father (to one of each), and I paint/draw whenever I get the chance.
- 🏗️ Designing mobile systems that hold up as teams and codebases grow — built for where the product is heading, not just where it is today.
- 🎥 Years spent in Video on Demand, obsessing over the small details that make streaming actually feel smooth.
- 🛠 Flutter and SwiftUI are my daily tools, whichever the project calls for.
- ⚙️ A firm believer in SOLID principles — not as dogma, but because untangling bad architecture later is nobody's idea of fun.
- 🤖 AI-powered products: model-provider plugins, tool calling, and agent/session plumbing in Genkit, and bringing that to mobile and web apps.
- 🧩 Full-stack when the product needs it: NestJS APIs and Next.js front ends alongside the mobile apps.
- 🧑🤝🧑 Leading mobile teams, mostly by trying to be the mentor I wish I'd had earlier on.
- 🌐 Contributing to open-source ecosystems that I believe in — shipping fixes and features that benefit the community.
AI: Genkit — I work on model-provider plugins and the agent/session layer, across the JS, Python and Go SDKs:
- Model plugin: send back empty signed thinking blocks (#6838, merged)
- OpenAI-compatible plugin: keep assistant text alongside tool calls (#6792, merged)
- In review:
deleteSessionfor agents in JS and Go, routing provider betas to the beta API (#6800), and function tools for Antigravity (#6802)
Mobile: Firefox iOS — crash fixes, Redux state architecture, and paying down technical debt in the tab and bookmarks layers:
- [Logins] Fix crash from concurrent
addLogin/updateLogin/verifyLoginscalls (#34973) - [Redux] Adopt the
@Copyablemacro acrossTabTrayState,RemoteTabsPanelState, andTabPeekState(#34838, #34762, #34744) - [Tab Tray] Explicitly unsubscribe from the Redux store on teardown (#35123)
- Reader mode navigation moved onto
NavigationBrowserAction(#35319)
Dart & Flutter: in dart-lang/tools I've landed multiple superclass constraints and cascade helpers for code_builder, setext heading precedence and nested-list fixes in markdown, strictProtocolChecks for json_rpc_2, and PathDependency constraints in pubspec_parse. I also cut memory use when saving Performance data in Flutter DevTools (#10034), with more in review across the toolchain and the Dart SDK analysis server.
I've also sent fixes to Flutter (widgets and tooling), AppFlowy, and sentry-dart, most still in review.
Earlier on Apple platforms: fixes in IINA (PiP sizing on full-screen transitions), CodeEdit, and Brave iOS.
→ Browse everything I've opened or had merged across public repos.
If any of my work has been useful to you, consider supporting it:
You can also use the Sponsor button at the top of this repo, or check CONTRIBUTING.md for other ways to support and connect.
Please feel free to clone/fork projects, raise issues and submit PRs if you think something could be better.
Ask me anything I guarantee a great conversation
or get in touch





