About Me
Hi! I'm a computer science and math lover, and love automation and learning about how things work :)
I like building websites with React, and writing fun programs in Python—feel free to check out some my projects below!
Or glance through some of the books I've read beginning in high school.
I'm currently a CS/Math senior at Harvey Mudd College in Claremont, CA.
Industry Experience
Projects
Citadel Data Open
Winner of 2022 Citadel Data Open Championship ($100,000 prize): regression on college data to identify important features predicting pay and loan amounts.
Citadel Data Open
Winner of 2022 Citadel Data Open Championship ($100,000 prize): regression on college data to identify important features predicting pay and loan amounts.
Wordscapes++
Progressive web app clone of Wordscapes, a popular word finding game -- additional features and higher difficulty.
Wordscapes++
Progressive web app clone of Wordscapes, a popular word finding game -- additional features and higher difficulty.
Backgammon Dashboard
Developed website for rapid iteration regression testing to create optimal, memorable backgammon strategies based on game state.
DemoBackgammon Dashboard
Developed website for rapid iteration regression testing to create optimal, memorable backgammon strategies based on game state.
Demopingmote (Poor Man's Discord Nitro)
Developed hotkey triggered cross-platform global emote picker to create and quickly insert custom images and gifs.
Source Codepingmote (Poor Man's Discord Nitro)
Developed hotkey triggered cross-platform global emote picker to create and quickly insert custom images and gifs.
Source CodeRuzzle Solver
Designed a program to play Ruzzle, a mobile word finding game in a 4x4 grid. Utilized optical character recognition, custom trained models, graph theory, and Android automation.
Source CodeRuzzle Solver
Designed a program to play Ruzzle, a mobile word finding game in a 4x4 grid. Utilized optical character recognition, custom trained models, graph theory, and Android automation.
Source CodeReddit Username Generator
Trained LSTMs and GRUs on 400,000 Reddit usernames for text generation, then integrated into React through TensorFlow.js and Flask and deployed on Heroku.
Source CodeDemoReddit Username Generator
Trained LSTMs and GRUs on 400,000 Reddit usernames for text generation, then integrated into React through TensorFlow.js and Flask and deployed on Heroku.
Source CodeDemoIsola Game
An easy to learn 2 player turned based game, Isola involves players moving and destroying blocks in an attempt to isolate the opposing player. After learning about the minimax algorithm in Stanford CS221 (Intro to AI), I decided to implement it in a more difficult setting, since Isola requires 2 moves per turn rather than per alternating moves.
Source CodeIsola Game
An easy to learn 2 player turned based game, Isola involves players moving and destroying blocks in an attempt to isolate the opposing player. After learning about the minimax algorithm in Stanford CS221 (Intro to AI), I decided to implement it in a more difficult setting, since Isola requires 2 moves per turn rather than per alternating moves.
Source CodeArduino Obstacle Avoider
My first dabble into the world of robotics, this Arduino car uses an ultrasonic sensor to avoid bumping into obstacles. Later, I used ROS models for simulation in Gazebo to optimize path following.
Source CodeArduino Obstacle Avoider
My first dabble into the world of robotics, this Arduino car uses an ultrasonic sensor to avoid bumping into obstacles. Later, I used ROS models for simulation in Gazebo to optimize path following.
Source CodeAutoLogin
A Chrome extension for automatically signing into websites with saved passwords -- saves time clicking and waiting for login buttons, especially on websites with multi-step logins.
Source CodeAutoLogin
A Chrome extension for automatically signing into websites with saved passwords -- saves time clicking and waiting for login buttons, especially on websites with multi-step logins.
Source CodeCartPole RL
After learning about Reinforcement Learning in Stanford CS221 (blackjack HW), I applied vanilla Q-learning with epsilon-greedy to OpenAI Gym's CartPole problem. I was able to meet the criterion for solving the problem without any advanced methods such as Deep Q Networks or Policy Gradient.
Source CodeCartPole RL
After learning about Reinforcement Learning in Stanford CS221 (blackjack HW), I applied vanilla Q-learning with epsilon-greedy to OpenAI Gym's CartPole problem. I was able to meet the criterion for solving the problem without any advanced methods such as Deep Q Networks or Policy Gradient.
Source CodeEduTools
Winner of HackPHS 2020: With the worsening global pandemic, online learning has severely magnified inequality for students with limited access to technology. EduTools makes traditional online learning accessible without the need for internet access: all you need is a basic phone.
Source CodeEduTools
Winner of HackPHS 2020: With the worsening global pandemic, online learning has severely magnified inequality for students with limited access to technology. EduTools makes traditional online learning accessible without the need for internet access: all you need is a basic phone.
Source CodeSunrise Alarm
We always feel more refreshed waking up to the sunrise on weekends without a blaring alarm clock. This Android tasker script uses an adjustable light to simulate the sunrise, as well as the sunset before sleep. REM sleep cycles are considered for alarm times.
Source CodeSunrise Alarm
We always feel more refreshed waking up to the sunrise on weekends without a blaring alarm clock. This Android tasker script uses an adjustable light to simulate the sunrise, as well as the sunset before sleep. REM sleep cycles are considered for alarm times.
Source CodeCodenames
A simple application of Stanford GloVe word vectors to the game codenames, where a spymaster attempts to give a clue to hint at certain words, while avoiding others.
Source CodeCodenames
A simple application of Stanford GloVe word vectors to the game codenames, where a spymaster attempts to give a clue to hint at certain words, while avoiding others.
Source CodeAmbient Light Color Adjuster
After purchasing a color changing lightbulb to use a sunrise simulator alarm clock, I decided to have some fun with adjusting ambient light to match a game's dominant color.
Source CodeAmbient Light Color Adjuster
After purchasing a color changing lightbulb to use a sunrise simulator alarm clock, I decided to have some fun with adjusting ambient light to match a game's dominant color.
Source CodePictionary AutoDraw
With image preprocessing, color matching, brush size optimization for resolution, and PyAutoGui, AutoDraw takes images and turns them into beautiful art on a canvas.
Source CodePictionary AutoDraw
With image preprocessing, color matching, brush size optimization for resolution, and PyAutoGui, AutoDraw takes images and turns them into beautiful art on a canvas.
Source CodeNonogram Solver
With Selenium and bit operations, this fully solves nonogram visual logic puzzles.
Source CodeNonogram Solver
With Selenium and bit operations, this fully solves nonogram visual logic puzzles.
Source CodeSkills and Technologies
- Programming Languages: Fluent in Python, TypeScript, JavaScript; Familiar with Java, Scala, C, C++, Ruby, Swift, SQL, Haskell
- Technologies: React, Next.js, MySQL, MongoDB, Temporal, Firebase, Jest, Bazel, Dagger, Flask, Node.js, TensorFlow, Pandas, Azure