Projects

PrairieLearn Productivity Enhancer

PrairieLearn Productivity Enhancer

pythontypescripthtmlJupyter Notebook

Problem

PrairieLearn users struggled to keep track of assignment deadlines across multiple courses, leading to missed tasks and last‑minute cramming.

Solution

Developed a Chrome extension in TypeScript that overlays upcoming deadlines and task summaries directly within the PrairieLearn interface. Powered by a Python backend that parses course data and schedules notifications. Iteratively refined the UI based on feedback from over 30 student testers.

Impact

Helped over 100 users reduce academic stress and improved task tracking during exam periods by 35%.

Weather Forecast Scheduler

Weather Forecast Scheduler

JavaScriptPythonNWS APICachingReactLeaflet

Problem

Students lacked a simple way to plan around local weather conditions when managing class schedules.

Solution

Built a responsive web app that integrates the National Weather Service (NWS) API with personal course schedules, featuring interactive maps with live weather overlays and dynamic condition‑based alerts

Impact

Reduced API requests by 40% through intelligent caching, improved on‑time class attendance by 15% for pilot users (n=60), and earned a 4.7/5 satisfaction rating in demo sessions.

Zombie Zork: Distributed Text Adventure Game

Zombie Zork: Distributed Text Adventure Game

PythonaiohttpREST APIsDistributed SystemsGame Design

Problem

Traditional text-based adventure games are constrained by monolithic architectures, limiting scalability, user collaboration, and real-time responsiveness. There's a gap in the market for a distributed, multiplayer-first system that enables dynamic environments, persistent game state, and modular world expansion.

Solution

Designed and implemented a scalable, zombie-themed text adventure game using a hub-and-spoke distributed architecture. Key features include central hub server coordinating multiple domain servers, asynchronous communication using aiohttp for responsive gameplay, RESTful API endpoints enabling seamless player movement, dynamic item system, and persistent state management.

Impact

Reduced server load by 60% through efficient inter-node caching, enabled real-time multi-user gameplay across distributed domains, achieved 100% item tracking accuracy, and built a modular system supporting future expansion.