Not just an engineer.
A builder with taste.
I started writing Android apps in Java in 2012, back when smartphones were still surprising people.
Over 13 years I've worked across most of the stack: native Android and iOS, then React Native, then full-stack web with React, Next.js and Node, and more recently backend services in Python with FastAPI. In 2025-26 I built LLM-backed features on Azure OpenAI: a document RAG proof-of-concept with PII redaction ahead of the model, and integrations with three agent platforms behind a single orchestration layer.
What the mobile decade left me with is a habit of building inside constraints. You can't hot-fix a released app, so backward compatibility stops being optional. And you build for the device you're given. On one backend service, thread count and batch size are configurable across App Service tiers, so it runs on the cheapest one that meets the workload.
I'm now going deeper on the reliability side of AI systems: evaluation, retrieval correctness, and cost.
Performance is a feature
Fast and fault-tolerant by design, not by accident. Most of the wins I've had came from measuring the slow path first rather than guessing at it.
AI as core, not garnish
When I use an LLM I want it doing real work: retrieval that returns the right document, redaction before the prompt, a real interface behind it. Not a chatbot wrapper slapped onto an existing product.
User instinct from mobile
13 years shipping to real users gives you a lens most backend engineers never get. I never forgot who's on the other end of the API.
Honest evolution
Android in 2012. Retrieval systems in 2026. I go deep on what's next but I don't abandon what still works.