Software engineering portfolio

Charles T
Reeder

resume

Graduate software engineering student building practical systems: deployed web apps, procedural generation, persistence layers, concurrency demos, and algorithmic speedups.

live deployed project

My stack

Proficiencies and Tools

Python JavaScript React Node.js Unity Flask Postgres MongoDB Docker AWS nginx Git
ShadowSpawner dungeon map with fog of war, side controls, and a character sheet modal

Primary project - deployed full-stack system

ShadowSpawner

JavaScript SPA, canvas rendering, Python/Flask, SQLModel, Postgres, Docker, nginx, DigitalOcean

A deployed procedural dungeon web app with account-backed save/load, fog-of-war exploration, party state, character sheets, and production-style deployment.

  • Owned the frontend dungeon engine: deterministic generation, canvas exploration, map tokens, room interactions, and visibility state.
  • Modeled visibleNow and exploredEver so rendering, interaction, and persistence stayed consistent.
  • Integrated against backend JSON contracts for saved runs, auth, ownership rules, and multiplayer host links.

Procedural generation demo

Mini Hex World Map

JavaScript, canvas, authored tile assets, fog of war, axial hex grids, terrain affinity rules

A resume-sized browser version of my ShadowDark world map generator: a zoomed radius-6 hex atlas that viewers can regenerate and explore.

  • Generates grass, forest, mountain, water, swamp, hills, and desert while excluding dungeon and town tiles.
  • Guarantees every natural terrain type appears, then uses terrain affinity so forests grow near forests, mountains near hills, water near swamps, and so on.
  • Uses the original-style tile art, water patterns, terrain border overlays, named regions, and fog-of-war reveal.

Concurrency and image-processing

Threaded Face Builder

Python, threading.Lock, Pillow, Tkinter, batch rendering

A threaded face-composition stress test showing race conditions, lock-protected correctness, and concurrent image preparation.

  • Created no-lock and with-lock demos to show torn shared state versus protected reads.
  • Built randomized face generation with recoloring, seven-layer alpha compositing, blink variants, and scaling.
  • Measured 240 render jobs at 6.348s single-threaded versus 3.411s with four threads: a 1.86x speedup.

Game architecture and persistence

The White Witch's Labyrinth

Python, Pygame, game-state persistence, repository boundaries, integration tests

A team game branch focused on movement, save/load behavior, fog-of-war-style exploration, and separation between domain logic, engine, view, and persistence.

  • Added runnable CLI and Pygame demo paths with documented setup.
  • Kept maze/domain behavior separated from repository persistence details.
  • Used contract and integration tests to stabilize the MVP before larger refactors.

Algorithmic performance

Speedy Armstrong Calculator

Fastest in the UW cohort contest 100,000,000 search limit Digit multiset pruning

Python, combinatorics, power-table precomputation, runtime measurement

A command-line Armstrong number finder built for speed. It won the contest for the entire UW cohort as the fastest Armstrong calculator code.

  • Generated digit-count combinations instead of brute-forcing every integer.
  • Precomputed digit powers and validated only plausible candidates by digit-count equality.
Settlement Treasure Calculator dashboard mock with controls and charts

MERN learning project

Dungeon Settlement Wealth Calculator

React, Recharts, Node.js, Express, MongoDB/Mongoose, local fallback persistence

A dashboard for generating fantasy settlement treasure, saving reports, and visualizing the resulting economy.

  • Built React form controls and chart views for settlement inputs, loot distribution, and generated value summaries.
  • Implemented Express API routes for generation and saved settlements with MongoDB persistence when available.
  • Added browser local-storage fallback so the UI remains usable while learning or without a local database.