Projects

A selection of things I've built — solvers, tools, and games. Source is on GitHub.

Pattern & Anomaly Detection in Influence Campaigns (MIT MEng Thesis)

My MIT MEng thesis (EECS), built with MIT Lincoln Laboratory's Global Influence Model. I applied statistical and ML methods — Singular Spectrum Analysis, an autoencoder, and an LSTM — to ~30,000 news articles to surface patterns and anomalies in influence campaigns.

PythonMachine learningLSTMTime-seriesAnomaly detection

LLM-Assisted Vulnerability Research on an IP Camera (Georgia Tech Capstone)

My Georgia Tech MS Cybersecurity capstone. I benchmarked leading LLMs (ChatGPT, Claude, Gemini) against static-analysis tools at finding vulnerabilities in an IP camera's code, then generated proof-of-concept payloads. The LLMs found more distinct bugs at a comparable false-positive rate, but struggled with consistency and context.

LLMsVulnerability researchStatic analysisCybersecurity

IMC Prosperity 4

My run at IMC Trading's global algorithmic trading competition — round-by-round market-making and trading strategies for a simulated exchange.

PythonAlgorithmic tradingMarket making

Strategy Evaluation: Manual Rules vs. Q-Learning (ML4T)

A Georgia Tech ML4T (CS 7646) final project comparing a hand-built indicator rule set (Bollinger %B, RSI, MACD) against a Q-learning agent on JPM. The RL agent dominates in-sample but fails to generalize — a clean bias–variance illustration. Full report shared on request (kept off the public site per GT's academic-integrity policy).

PythonReinforcement learningQ-learningTechnical indicators

Poker Bot

A Texas Hold'em bot that estimates hand equity with Monte Carlo simulation to drive its betting decisions.

PythonMonte CarloGame theory

Blackjack Simulator

Simulates card counting over many blackjack trials to quantify how the running count shifts expected value.

PythonSimulationProbability

2048 Solver

A playable 2048 paired with an expectimax solver that streams its expected-value math live — per-move EV, the 2-vs-4 chance-node split, and search stats. The search runs in a Web Worker and can take over on auto-play.

TypeScriptExpectimaxExpected valueWeb Workers

Perudo Bot

Play the dice game Perudo against a bot that runs Bayesian updates on the hidden dice each round. Can you beat it?

PythonBayesian inferenceJupyter

Fantasy Optimizer

A streamer-pick optimizer for ESPN fantasy basketball — daily add/drops to maximize roster output under league constraints.

PythonOptimization

Fill in the Missing Word

An MIT 6.863J Natural Language Processing final project: a model that predicts a missing word from the surrounding sentence context.

PythonNLP

Principles of Autonomy & Decision Making

An MIT 6.4132 final project: integrated planning and decision-making for an autonomous agent.

PythonPlanningDecision making

82-0 Solver

Automated solvers for the viral 82-0.com roster game — one guarantees a perfect season by controlling the game's randomness, the other grinds it out through fast retries. Includes the reverse-engineering behind them.

JavaScriptReverse engineeringOptimization

Escape Transylvania

A browser point-and-click escape room set in Castle Dracula — explore rooms, collect objects, and solve puzzles to escape before dawn.

ReactViteTypeScriptZustand

Yung Hung Jung: Rent's Due

A browser puzzle-platformer: hustle through 10 levels and dodge the landlord's collectors to make rent.

JavaScriptHTML5 Canvas

Run From Snake

Classic Snake, inverted — you're the apple, and an AI snake hunts you around the arena, growing and speeding up with every pellet you grab. A single self-contained HTML file with procedural chiptune.

JavaScriptHTML5 CanvasGame AI

Alexa's Bed Bug Battle

A 2D puzzle platformer across 10 levels in a single self-contained HTML file, with procedurally generated music and sound effects.

JavaScriptWeb Audio APIHTML5 Canvas