Runtime mechanics
Event-driven item effects wired into the game loop via BepInEx hooks and IL patching. Stats recalculate dynamically as players stack items — no hard-coded values, just composable behavior.
Software engineer · Lincoln, Nebraska
Multiplayer game mods, scientific data pipelines, applied AI — I design software that handles edge cases and scales when it matters.
Open to software engineering roles
C# · Python · Full-stack · Applied AI
Featured build
01 / Featured project
RiskOfImpact is a content mod for Risk of Rain 2 — built solo as a proving ground for robust, expressive gameplay systems. It adds new items and equipment that change how combat feels without breaking what already works.
The real challenge wasn't adding mechanics; it was making them behave correctly in multiplayer, stay compatible with other mods, and survive the edge cases players inevitably find.
Event-driven item effects wired into the game loop via BepInEx hooks and IL patching. Stats recalculate dynamically as players stack items — no hard-coded values, just composable behavior.
All gameplay logic runs server-authoritative with deterministic state sync. Designed to handle desync edge cases, late joins, and the chaos of 4-player co-op without breaking.
Modular item registration with quality tiers and config-driven tuning. Built to play nice with other mods — no hardcoded dependencies, clean API boundaries.
02 / Selected work
Computer vision · Full-stack platform
A platform for turning where an athlete looks during match footage into evidence a coach can inspect.
As Post-Processing Development Lead, I built the path from raw webcam gaze to a usable result: classify eye movements, track players and the ball, align both streams in time, then generate annotated video and attention metrics. The pipeline had to reconcile different clocks, coordinate systems, sampling rates, and missed detections without producing a convincing but incorrect answer.
View team repository ↗Empirical software engineering · Eye tracking
Thirty developers. Raw fixation records. One question: what do people actually read when they use Bugzilla reports to understand an API?
I rebuilt the analysis pipeline to map fixation XML onto individual questions, answers, and attachments. Sentence-BERT estimated which viewed ideas reached each written summary; statistical tests and behavioral clustering then separated attention patterns from intuition.
student and professional developers
ATTENTION BY REPORT ELEMENT
Longer answer dwell time associated with fully correct summaries
Fast/selective and deep/verbose reading strategies
Fixation XML → semantic matching → nonparametric analysis
03 / Engineering experience
2025 — 2026
LI-COR
Built internal tools for scientific data analysis and instrument parsing. Designed a multimodal RAG pipeline that lets researchers query documentation, manuals, and datasets in one place.
Python · Applied AI · Data Systems
2024 — 2025
University of Nebraska–Lincoln
Rebuilt an eye-tracking analysis pipeline from scratch. Used Sentence-BERT and behavioral clustering to study how developers comprehend APIs, then evaluated the findings with nonparametric statistics.
Python · ML · Eye Tracking
2024 — 2025
Senior Design Capstone
Led backend development for a full-stack eye-tracking platform used in sports performance analysis. Built gaze and object-detection pipelines that process video data into actionable insights.
Django · React · OpenCV
2022 — 2023
NASA SUITS Student Club
Led AR interface development in UNL’s NASA SUITS student club for next-gen EVA suit concepts. Presented the team’s work at Johnson Space Center to NASA engineers and program managers.
Unity XR · MRTK 3 · HoloLens 2
04 / Education & background
I like understanding how systems work — whether that’s a multiplayer game mod, an eye-tracking pipeline, or the physics behind a dive. Away from the keyboard, I’m usually scuba diving, playing Magic: The Gathering, building with Lego, exploring Japanese cuisine, or planning where to travel next.
Highest University Honors · 3.77 GPA
Minors in Physics & Mathematics
05 / Independent project
Gameplay systems · Multiplayer modding
A custom Mage Arena spell built to feel native to the game, from the page a player picks up to the spinning orb, impact, audio, and cleanup.
The difficult part lived between clients. Effects needed the right owner, inventory changes had to remove only the correct player's orb, and a page could disappear without its object being disabled. I tied cleanup to the page renderer's actual lifecycle instead of a global inventory event, eliminating the host/client cross-talk.
View source ↗06 / Get in touch