My Portfolio
I'm a systems architect who sets technical direction across teams. Today I work with the web, backend, app (iOS and desktop), and core teams, aligning them on shared architecture, settling conflicting requirements, and guiding everyone toward one approach so the product holds together.
My foundation is native Apple systems. For over 15 years I've built in Swift, Objective-C, and C++, with a focus on architecture and performance: how software is structured, how it uses memory, and how it stays fast as it grows. I start from OS internals, memory, and data structures, and use that to design shared core engines that every team builds on, from Mac and iOS apps to desktop apps in Rust, command-line tools, and background jobs.
I bring AI into the platform the same way. That covers RAG pipelines with embeddings and vector search, agent workflows with LangChain, LangGraph, and CrewAI in Python and Rust, and on-device models that fall back to simple, predictable rules when the AI isn't sure. I also shape how the teams use AI coding agents and sub-agents in their daily work.
Across the stack I work with AWS, Google Cloud, gRPC, Kafka, PostgreSQL, MongoDB, and Redis, plus web development and Kotlin Multiplatform for iOS and Android. I set up delivery with GitHub Actions, app signing, and Terraform.
I lead through architecture reviews, technical roadmaps, and mentoring engineers across teams. I work with startups, product teams, and enterprises that need someone to own the technical direction of a multi-platform product.
Recent writing
Systems, ops, and blog notes (newest first). All Systems · All Ops · All Blog
- AWS CLI named profiles: switching between IAM users without hitting the wrong account
One IAM user, one access key pair, one named profile. How AWS_PROFILE works, why leftover environment keys take priority, and the one command that stops you from pushing images to the wrong account.
- AWS cost floors: ALB, NAT, ECS Express Mode, and free-tier traps
On a small AWS app, most of the bill is the load balancer and the NAT Gateway, not the t3.small. What changes when you remove them, where ECS Express Mode fits, and why a $0 demo only stays $0 within…
- One desktop app on Mac and Windows: Tauri, Rust, and what I wouldn't do twice
One React UI, one Rust engine, two signed installers. Why we picked Tauri over SwiftUI or Electron, what I'd do differently, and the CI setup that ships to Mac and Windows.
- Kafka in real systems: the event log, consumer groups, and replay
Kafka isn't just a queue. It's a durable event log that lets many systems react, recover, and replay. A small TypeScript example, and what LinkedIn and Uber learned running it.
- gRPC in real systems: contracts, deadlines, and streaming
When one service needs a fast answer from another, gRPC is a strong fit. A small TypeScript example, the mistakes teams make early, and what Netflix and Uber learned at scale.