I'm a recent graduate of University of Washington - Bothell, where I earned a B.S. in Computer
Science & Software Engineering with a minor in Data Analytics. A process-oriented, driven
non-traditional graduate, I transitioned from nearly a decade as a professional Automotive
Service Technician into software development and data science. I'm excited to pair my unique
perspective with hands-on technical skills to find new solutions to modern problems.
In the following sections, you'll learn more about my academic background at UW-Bothell,
alongside an overview of my featured work, academic projects, personal projects, and open
source contributions.
Bachelor of Science in Computer Science and Software Engineering, Minor in Data Analytics (2026)
Dean's List | Cumulative GPA: 3.60
An open educational resource transforming a classroom UX research exercise into a
reusable, adoptable module
GitHub
My capstone project at UW Bothell, working with Dr. Dharma Dailey to transform an
existing classroom exercise on UX dark patterns into an Open Educational Resource
(OER) that other instructors could adopt, regardless of their technical background.
The original exercise had students run a five-day diary study documenting real dark
pattern interactions, then move through reflexive analysis, collaborative analysis,
and an individual memo toward a final video walkthrough of a single incident. It
depended heavily on manual, instructor-specific effort to anonymize data and track
grading, which limited it to a single classroom.
I designed and built a modular ~900-line R script library that ingests raw survey
exports and produces anonymized, analysis-ready data alongside a grading/participation
report, resolving a direct conflict between student data privacy and gradability. I
authored a step-by-step onboarding walkthrough, refined through live usability testing
with a non-technical instructor, and helped plan and execute 10 expert evaluations
with subject matter experts across data science, HCI, education, and technology
policy to validate and improve the module's design.
This project was my first real exposure to building a tool meant for someone other
than myself to run, and to validating design decisions through structured user
testing and stakeholder feedback rather than intuition alone.
A statistical analysis of fairness across major powerlifting scoring systems
GitHub / Report
A large-scale statistical analysis of 3.5M+ competition results from the OpenPowerlifting
database (1960s–2025), evaluating the fairness and accuracy of four major strength
scoring systems: Wilks, DOTS, GoodLift, and Glossbrenner.
I built R-based data pipelines to clean and analyze lifter performance by bodyweight,
age, and competitive level, using trend analyses and regression models to reveal
systemic biases and performance disparities between scoring systems.
The final report includes 20+ visualizations highlighting scoring volatility,
distribution patterns, and cross-system comparisons, along with a fully documented
data cleaning pipeline.
An investigation of attempt strategy and risk-taking across powerlifting competitions
View Slides
Using the same OpenPowerlifting dataset, I investigated competitive attempt strategy by
analyzing attempt-by-attempt success rates and weight progression decisions across the
squat, bench press, and deadlift.
I quantified risk escalation patterns showing 20–30 percentage point success rate
declines from first to third attempts, with sex-specific differences in conservative
versus aggressive attempt strategies.
I engineered reusable R functions for automated summary statistics and exploratory
analysis, producing 15+ specialized visualizations on attempt sequencing, weight jump
magnitudes, and success rate deterioration patterns.
Three foundational systems programming assignments in C
Scheduler Algorithms — Implemented First Come First Serve, Shortest
Job First, Round Robin, Priority, and Priority Round Robin CPU scheduling algorithms
against a dataset of processes, priorities, and burst times.
Multi-threaded Sudoku Validator — Built a program using manual
multi-threading to synchronously validate Sudoku puzzles, with dedicated threads
handling row, column, and sub-grid validation simultaneously.
Unix Shell — Recreated core UNIX shell functionality using fork(),
pipe(), and execvp(), including standard command parsing, I/O redirection, piping,
and a command history feature ("!!").
Together, these projects were a first-hand introduction to CPU scheduling, concurrency,
and process management at the systems level.
An inventory system for a movie rental store
This project was really exciting for me because it was the first project where I was allowed to
go
all the way from design to implementation without much restriction.
I was tasked with creating a Movie Store system that maintains an inventory of rentable movies,
a
collection of customers, and a history of all transactions processed.
Some minor requirements were placed, in that we must account for a future interest to move into
additional forms of media, and we must use a factory creation pattern.
Additionally, we were expected to document all of our planning in the form of UML diagrams &
interaction charts, which was a great learning experience.
Overall, this project taught me the importance of proper planning in Software Development, and
the
benefit of having well-planned implementations.
A re-creation of famous graph traversal algorithms
This project was a substantial challenge for me and provided an invaluable learning experience.
It began with the task of interpreting a text file representing a graph structure.
Leveraging this structure, I was tasked with implementing and executing several traversal
algorithms.
The algorithms included Depth-First Search (DFS), Breadth-First Search (BFS), Dijkstra's,
Minimum
Spanning Tree
using Prim's algorithm, and as a bonus, Kruskal's.
This endeavor served as an excellent introduction to the intricacies of graph data structures
and,
more specifically, the most prominent traversal and graph-related algorithms.
A re-creation of an autocomplete algorithm using a BST
Implemented an efficient autocomplete system using a Binary Search Tree.
The system predicts user input by matching prefixes with a set of terms, each of which had an
associated weight.
This project involved adding terms and weights to the BST, finding and sorting matching terms by
weight, and ensuring fast response times.
Additionally, the system supports various helper functions such as traversal, re-balancing, and
clearing the tree.
This project had me working with the largest dataset I've worked with (10k+ city names),
prompting a
heightened awareness for performance considerations.
Managing the size and complexity of the dataset required careful optimization of algorithms and
data
structures used, underscoring the importance of efficiency in real-time applications.
This project was an interesting first look into the tree data structure and how autocomplete
algorithms work.
An online resume
I wanted a single source of information about myself, things I'm working on, and things I have worked on. I aim to continue to iterate on the page as my projects become more robust and add additional features.
A stock market trade sizer app
Currently under development, this project aims to take the guesswork out of position
sizing swing trades, in a format that is clean and easy to use.
As a swing trader, there are a lot of best practices to use when deciding how large of a
position to take in a given equity.
I wanted to create a platform that can give the user their results in a few seconds and
provide it in a clean and minimal way.
The project takes a few elements from the user, including: risk percentage, account
size, expected buy and sell prices, and stop-loss price.
From this information, the system calculates optimal position size and potential
profit/loss.
I am currently working on refining a feature that uses the OpenAI API to provide insight
about the trade.
Following this implementation, I plan on doing a major refactor using the skills I
learned
from this resume splash page!
An automated practice tool for Leetcode
Awaiting deployment, this project was designed to create an automated way of
practicing previously completed Leetcode questions.
The system is on a 24hr timer, and queries the Leetcode graphQL endpoint for a list
of most recently completed problems from a specific user.
With this information, the system removes any duplicate problems, and then selects
one randomly.
This randomly selected problem then has its URL link grabbed,
and is packaged into an email that is sent to a designated email address.
This project introduced me to a lot of interesting components that I have not worked
with before, such as graphQL queries and the storing of sensitive data in a
config.ini file.
Website: Path of Building
Add Scorch chance on crit for Warden's Oath of Summer PR #7975
I corrected a calculation error occurring when the player converted their ignite chance to scorch chance, which would in turn lose the inherent 100% application chance on critical hit of ignite. To resolve this issue, I added additional logic to properly set associated values when the player was converting ignite.
Fix item quality not defaulting to 20% PR #8032
I corrected an issue where gear items incorrectly had a default quality of 0 instead of 20. I identified and corrected the logic error which was causing a normalization function to misidentify the item, therefore assigning it the wrong default value.
Default "Enemy Damage Type" to "Average" PR #8318
Implemented a new feature to enhance application UX by automating commonly expected behavior when adjusting player damage resistance settings.