Poway Unified School District — Open Coding Society
Systems Engineering Intern
Jan 2025 – Aug 2025
San Diego, CA
Hired by my Computer Science teacher to build and run the infrastructure behind Open Coding Society, a platform supporting 200+ students across three CS courses (CSSE, AP CS Principles, AP CS A) at Del Norte High School. I led a 5-person engineering team as the primary technical liaison between the students building it and the teachers relying on it.
Equal access, regardless of hardware
Not every student has a laptop that can run a full dev environment. I deployed KASM cloud workspaces — Ubuntu, Kali Linux, and Debian VMs, backed by S3 for persistent storage — so a student on a Chromebook gets the same VSCode-plus-terminal environment as a student on a MacBook. 20-30 concurrent users at peak.
Migrating a live domain without breaking anything
The platform moved from a legacy domain to opencodingsociety.com — 25-30
production subdomains (KASM, Spring and Flask backends including
crosswise.opencodingsociety.com, dozens of student project subdomains) via
AWS Route 53, with SSL/TLS renewal handled through Certbot. The requirement
that made this hard: keep HTTPS working across every service through the
whole migration, for 200+ active users, with planned but minimal downtime.
The part that didn’t go perfectly
Production databases lived on separate EC2 instances from the applications using them — SQLite databases with binary assets (images) tied in by foreign key, spread across 30-40 student project groups. I wrote Python and Bash tooling for bidirectional migration between local dev and production. During one of those migrations, I accidentally deleted a production database. I recovered it and rebuilt the migration scripts with real access controls afterward — authentication requirements and execution permission limits specifically designed to prevent both unauthorized data extraction and the kind of mistake I’d just made. It’s the incident I’d point to if asked about handling something going wrong in production.
Teaching the workflow, not just building it
Half the job was making sure the platform survived past my internship: two 2-day sessions (16 contact hours total) training 8 district teachers on Flask, Spring, Docker, and GitHub-based project workflows, so the “world-ready” tooling actually got adopted into the curriculum rather than staying something only I understood.