Leonardo Nguyen
Software engineer · systems, cloud, full stack · San Diego, CA
Builds systems end to end and cares most about the seams: Rust and C++ at the bottom, React and Next.js at the top, and the queues, workers, pipelines, and deploys in between. Everything on this site is live and open to inspection.
Projects
Argus
A hundred-eyed scanner for phishing links and malicious files.
pipeline · 2026 · distributed systems · fullstack
A URL and file analysis service built as a pipeline of independent checks: URL normalization and de-obfuscation, redirect-chain following behind an SSRF guard, look-alike domain scoring, and file inspection in an isolated worker. Each check emits weighted signals and a scoring layer combines them into an explainable verdict, served by a Fastify API, a CLI, and a Next.js dashboard with SQLite-backed history.
Built with TypeScript, Next.js, Node.js, Fastify, SQLite, Docker
Tartarus
A sandbox that safely runs hostile code, and dares you to escape it.
platform · 2026 · systems · infrastructure
A multi-tenant code execution service. Untrusted Python and JavaScript run as WebAssembly under wasmtime with no network, no host filesystem, and hard CPU, memory, wall-clock, and output limits. A Rust gateway, queue, and worker pool on Fly.io feed a Next.js IDE with a Monaco editor, a syscall-style trace of every run, and an Escape Arena that invites you to break out.
Built with Rust, WebAssembly, wasmtime, Axum, Next.js, Fly.io
StatJack
Blackjack, but every card is a country.
data · 2026 · fullstack · data pipeline
Country blackjack. Every card is a real nation, its value a real World Bank statistic, and each table has its own bust target derived from the data. A build-time pipeline pulls the World Bank Indicators API, normalizes twelve indicators into playable values, and bakes the snapshot into a self-contained static app with a live 3D globe on the felt.
Built with React 19, TypeScript, Three.js, Node pipeline, World Bank API
K.O. Rush
A fast Pokémon damage-calc arcade game.
game · 2026 · frontend · game logic
One decision under a shrinking clock: out of four real attacker and move combos, which one is guaranteed to KO the target? Built on the real type chart and deterministic level-50 damage math, with a seeded encounter generator that tunes the decoys wave by wave so exactly one answer crosses the line, and it's learnable.
Built with React 19, TypeScript, Vite, Game logic, PokéAPI
Mr. Henderson
A C++ chess engine with a personality.
engine · 2026 · C++ · performance
A from-scratch C++ UCI chess engine: iterative-deepening alpha-beta with quiescence search, a transposition table, and full legal move generation. Compiled to WebAssembly and running in a worker, he is the opponent on this laptop's screen.
Built with C++17, WebAssembly, UCI Protocol, Alpha-Beta, CMake, lichess-bot
About
- Education
- UC San Diego · B.S. Math-CS, EE minor · 2028
- Currently
- Software Engineer (Full Stack), Mesa College · seeking SWE internships
- Languages
- English · Vietnamese
- Focus
- Distributed systems · cloud infrastructure · performance
Skills
Systems · cloud · full stack
Languages
- C++
- Rust
- TypeScript
- JavaScript
- Python
- Java
- SQL
- Bash
- PowerShell
Systems & Infrastructure
- WebAssembly
- WASI
- wasmtime
- Docker
- Linux
- Fly.io
- Vercel
- Render
- AWS EC2
- AWS S3
- API Gateway
- EventBridge Scheduler
- AWS Amplify
- Upstash Redis
- Neon Postgres
- GitHub Actions
- Cron jobs
- TCP/IP
- DNS
- HTTP/S
- TLS
Backend & Data
- Node.js
- Fastify
- Axum
- REST APIs
- WebSockets
- Queues & workers
- PostgreSQL
- SQLite
- Supabase
- Schema design
- Parameterized queries
- Caching
- Build-time data pipelines
- World Bank API
- PokéAPI
- Riot API
- NextAuth
- bcrypt
- Zod
- Structured logging
Frontend
- Next.js
- React 19
- Vite
- Three.js
- Canvas 2D
- Tailwind CSS
- Framer Motion
- Monaco editor
- Responsive UI
- Accessibility
Engineering Practice
- Testing
- CI/CD
- Code review
- Threat modeling
- Sandboxing
- Security headers & CSP
- Technical documentation
- Git
Contact
Open to software engineering internships and new-grad roles, and to anyone who wants to talk about systems. The inbox is always open.