Software Engineer | B.A. Computer Science, Luther College (May 2027) | Minors: Mathematics and Data Science
Full-stack and backend engineer. I built ChessMate, a chess coaching platform with 180+ users, and I run it in production on AWS. Experience at Mayo Clinic, Calero, and AImpulse. Looking for new-grad software engineering roles starting mid-2027.
- Mayo Clinic: browser-only DICOM anonymizer, so patient data never reaches a server. 270-tag rules engine, 122 tests proving no network request carries PHI.
- Calero: C# and .NET tooling that cut developer setup from 8 hours to 15 minutes, plus an xUnit harness that replays 100+ LLM scenarios on every deploy.
- AImpulse: React, Node.js and Dialogflow chatbot on AWS Lambda serving 10,000+ queries a month, and a Python, PostgreSQL and S3 resume-parsing pipeline that cut processing time 30%.
- Competitive chess player: 2150 blitz on Chess.com, also on Lichess.
9 merged PRs across 5 projects.
| Project | PRs | What I fixed |
|---|---|---|
| django/django | #21629 | 9-year-old crash in the parallel test runner. Database clones are now pooled so respawned workers reuse them. |
| redis/redis-py | #4206, #4254 | EVALSHA routing in cluster pipelines, and an async connection fix. |
| open-telemetry/opentelemetry-python-contrib | #4827, #4828, #5063 | Celery spans reporting the wrong worker, Redis spans dropping db=None, and SQLAlchemy pool usage moved to the current db.client.connection.count metric. |
| matplotlib/matplotlib | #32147, #32380 | Nested-brace parsing in mathtext (backported to 3.11), and figimage images vanishing when re-added. |
| psf/black | #4611 | Release workflow moved to PyPI Trusted Publishing. |
| Project | Description | Stack |
|---|---|---|
| ChessMate | Chess coaching platform in production. Imports games from Chess.com or Lichess, runs Stockfish through an async Celery pipeline, and finds recurring patterns across 5 to 30 games. 180+ users, live Stripe payments, 2,150+ tests gating CI (Live) | Python, Django, React, PostgreSQL, Celery, Redis, AWS |
| Fencekit | Redis coordination library on PyPI: fencing-token locks and idempotency guards that stop duplicate Celery runs. Extracted from ChessMate (PyPI) | Python, Redis, Celery, Lua, Hypothesis |
| ReturnRider | Return and refund tracker with a NestJS API, Expo mobile app, and Go email worker. AWS staging (VPC, RDS Postgres, ElastiCache Redis, S3) provisioned with Terraform | NestJS, Expo, PostgreSQL, Go, Terraform |
| CampusFound | Mobile-first campus lost-and-found with photo uploads and searchable listings (Demo) | Next.js, TypeScript, Supabase |
| retro_game_engine | Python game framework on PyPI with an ECS architecture, CI, docs, and examples (PyPI) | Python, Pygame, Poetry, pytest |
Languages: Python, TypeScript, JavaScript, C#, Go, Java, SQL
Frameworks: React, Next.js, Django, Node.js, NestJS, .NET, FastAPI, Celery
Data & ML: pandas, scikit-learn, Semantic Kernel, PyTorch
Databases & Infra: PostgreSQL, MongoDB, Redis, Docker, AWS, Terraform, OpenTelemetry, Grafana, Git


