David Chen

|

About Me


david.png

Hi! I'm a Computer Science and Math lover, and am very interested in AI/ML.

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 sophomore at Harvey Mudd College in Claremont, CA.

Projects


pingmote.png

pingmote (Poor Man's Discord Nitro)

Developed hotkey triggered cross-platform global emote picker to create and quickly insert custom images and gifs.

Source Code
pingmote.png

pingmote (Poor Man's Discord Nitro)

Developed hotkey triggered cross-platform global emote picker to create and quickly insert custom images and gifs.

Source Code
ruzzle-solver.png

Ruzzle 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 Code

Ruzzle 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 Code
ruzzle-solver.png
slashgen.png

Reddit 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 Code
slashgen.png

Reddit 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 Code
isola-game.png

Isola 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 Code

Isola 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 Code
isola-game.png
arduino-car.jpg

Arduino 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 Code
arduino-car.jpg

Arduino 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 Code
cartpole.png

CartPole 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 Code

CartPole 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 Code
cartpole.png
sunrise-alarm.jpg

Sunrise 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 Code
sunrise-alarm.jpg

Sunrise 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 Code
codenames.png

Codenames

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 Code

Codenames

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 Code
codenames.png
ambient-light-color-adjuster.png

Ambient 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 Code
ambient-light-color-adjuster.png

Ambient 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 Code
sketchful_demo.png

Pictionary 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 Code

Pictionary 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 Code
sketchful_demo.png
nonogram-solver.png

Nonogram Solver

With Selenium and bit operations, this fully solves nonogram visual logic puzzles.

Source Code
nonogram-solver.png

Nonogram Solver

With Selenium and bit operations, this fully solves nonogram visual logic puzzles.

Source Code