Building reliable systems under real constraints.
I've spent 8+ years building backend systems across fintech, nonprofit tech, and B2B SaaS, at companies like GoFundMe, GÜENO, Kreitech, and ChimiChurri. Most of my work has been in Java, Kotlin, and TypeScript, usually with PostgreSQL underneath.
I approach engineering with a bias toward action, but not recklessness. Ship early, iterate based on real feedback, and never let perfect be the enemy of deployed. But speed without discipline is just chaos. Every system I build has proper security, testing, and observability from day one.
Working across different domains taught me that good engineering principles transfer: type safety, defense in depth, designing for failure modes, and understanding the business context behind technical decisions. The problems change. The discipline doesn't.
I don't just build what's specified. I question requirements, propose alternatives, and optimize for long-term maintainability over short-term convenience. Technical decisions are organizational decisions. Infrastructure choices affect team velocity, cognitive load, and how quickly you can respond to market changes.
Shipped highlights
nest-tenant: Published to npm
Konduit: Open Source
GoFundMe Hackathon Winner
Automated Nonprofit Verification Pipeline
How I Work
I bias toward boring technology until scale forces otherwise. Postgres, Redis, and monoliths solve most problems. Microservices, event sourcing, and novel databases are solutions to specific constraints, not default choices.
See: nest-tenant
Infrastructure decisions are organizational decisions. Choosing a monorepo vs multi-repo, monolith vs microservices, or sync vs async affects team structure, deployment velocity, and cognitive load. Technical choices have human consequences.
I design for failure modes before happy paths. What happens when Redis is down? When a migration fails halfway? When a user bypasses the UI? Systems that only work under ideal conditions don't work.
Past work with
Toolbox
TypeScript, JavaScript, Java, Kotlin, Next.js, React, Node.js, NestJS, Spring Framework, PostgreSQL, MongoDB, Redis, Drizzle ORM, AWS, testing (Jest, Vitest, Playwright), CI/CD, Docker, monorepo tooling (Turborepo, pnpm workspaces), infrastructure fundamentals. And a lot more.