Hantamap

Problem: outbreak-related reporting is scattered across official advisories, health-system updates, and news coverage, and the same event often gets re-reported as if it were several. Built: an independent, static, low-cost data visualization platform that clusters 2026 hantavirus-related reports into canonical events and plots them on an interactive map, with a "Risk Lens" for contextualizing clusters by geography and time. Key decision: reports are kept separate from events — articles are treated as evidence, not as case counts — so the same event covered by five sources doesn't get counted five times. Built and maintained entirely outside of work; it's an experimental prototype, not an official public-health source.

tf2cdk

Problem: teams standardized on Terraform often need an AWS CDK starting point — hand-translating resources and their cross-references is slow and error-prone. Built: a Python CLI that parses .tf files and emits a complete, compilable CDK TypeScript stack across compute, storage, networking, security, and messaging. Key decision: cross-resource references are resolved automatically, so aws_kms_key.app_key.arn becomes appKey.keyArn in the generated stack instead of a manual find-and-replace.

Cloud Engineer Portfolio

Problem: wanted a personal site that also works as a live, verifiable demonstration of container-based AWS delivery, not just another static site. Built: this site — a Flask app served by Gunicorn inside a Docker container, deployed straight to AWS App Runner (auto-scaling down when idle) from an image in ECR. Key decision: Terraform provisions the ECR repository, IAM access role, and App Runner service end-to-end, and GitHub Actions builds and pushes each image and triggers the App Runner deployment on every push to main — no S3 or CDN involved, Flask serves the live site directly.