About Me

I am a highschool student currently attending PISD Academy High School, an engineering-focused school with a project-based learning curriculum where students work in groups to complete projects. I excel at programming, communication, and engineering. I’m most interested in Machine Learning and Big Data as possible career fields.

Hobbies

Projects

Machine Learning Google Dinosaur AI

Machine learning is a field that I want to pursue. I wanted my first project to understand machine learning at its core, rather than using libraries to abstract and hide the concepts of neural networks and convergence algorithms from me. I decided to create a AI using neural networks and genetic algorithms to play the Google Dinosaur easter egg using standard Python and NumPy.

This project used a genetic algorithm to train a neural network to play the Google Dinosaur game over many iterations. This project taught me how neural networks work and I managed to write a feed-forward neural network from scratch to play the Google Dinosaur game. I discovered the problems that neural networks encounter when training such as local optimum and how to prevent them using selection methods such as tournament selection. Also my vision processing coding skills were utilized to locate the cacti on the screen.

Kinect Controlled Mouse for Windows

When I got a Kinect, I didn’t know what I wanted to do with it. All I knew is that I had something that could do amazing things.

My first project was to control my cursor using the Kinect instead of my mouse. I discovered how to detect whether or not my hands were closed and left-clicked when my hand was closed. I also changed where the cursor would go based on how far my right hand was from my body. I even got the resolution of my display and scaled it based on how far could I extend my arm so that anyone, no matter how big/small, could use my program to control their mouse cursor hands-free.

Kinect-controlled Fan

After I controlled my cursor, I wanted to expand past just the laptop. What if I controlled something on an Arduino using the Kinect? I learned how to programmatically send data over serial from my laptop to an Arduino and control a computer fan based on how far away I was from my Kinect.

This could be used to save power in people’s homes - if a person isn’t in a room, the fan won’t turn on. If the person was close, the fan would lessen because it doesn’t need to blow as much air to cool him/her. If the user was far away, the fan would instead blow air extremely fast in an attempt to cool down the user from far away.

Kinect-controlled RC Car

Controlling a fan with a Kinect was just a step toward something much more complex. I decided that wiring up and utilizing a tiny computer fan was not complex enough for me. I decided to control a RC car using a Kinect.

Without any prior experience with electronics I learned how to wire up an RC car from scratch replacing everything but the wheels and motor.

I had many difficulties completing this project. I learned that using a typical transistor had too much resistance for a motor to push a RC car and I replaced them with MOSFETs. I learned what was a H-bridge. I learned how to wirelessly control an Arduino using a WiFi module, and learned how to create a server and client program to send data to the Arduino. This project opened the doors for me to electrical wiring and networking.

Application to Control the game League of Legends Using Xbox Controller

I used to enjoy playing the game League of Legends (now considered the most popular PC game in the world). When I was playing, I realized that playing League required me to constantly click my mouse. This caused my wrist to hurt after a while. I then asked myself “How can I fix this?”. I realized that I could play with a controller to make it easier for my hands and started coding. This project required me to get around League’s anti-cheat system, which prevents keystrokes by other applications besides League (to prevent scripts). I had to process input from a Xbox controller and send keypresses and mouse clicks past an application designed to prevent code from interfering with it.

Video Game Controller Using Kinect

During 2016, my school had a project called Quantum Leap where groups of students had to make a video game. My group decided to use the game engine CryEngine to design and create our video game.

We decided to try to exceed the requirements our video game had to complete and I tried to create a program using the Microsoft Kinect to control our CryEngine game. Very quickly, I ran into an issue - CryEngine’s anti-cheat system is several times better than League’s (which I found a way to bypass before) and it could block keystrokes sent from my program. I then had to instead send commands to an Arduino which processed them and acted like a mouse/keyboard to send commands to CryEngine! This built on my past experiences working with the Microsoft Kinect, Arduino, and interacting with the system keyboard.

Internet of Things: Temperature and Humidity Sensor

At the end of 2016, students had to create a “product”. My group of 3 decided to create a temperature and humidity sensor that would help labs know when their refrigerators storing their blood samples had lost power and the stored samples were getting too warm to be useable. I created a circuit using an Arduino and a temperature/humidity sensor called DHT11 to record the surrounding temperature and push it to AT&T’s M2X Internet of Things servers to be used by another group member’s app.

After the school year was over, I decided to further the project and added an LCD to display the temperature as well as an SD card to store settings such as a WiFi password (encrypted). I then created a PCB (Printed Circuit Board) to connect all the components necessary using copper traces rather than wires and a breadboard. This required me to learn how to use the EAGLE PCB-design software to design a PCB. I then learned how to use acid to melt away excess copper, leaving only a PCB with copper traces on what was formerly a plate of copper. This gave me experience in PCB design, connecting to a server on the Internet using an Arduino, and using an LCD.

Custom Quadcopter

Over the 2016 summer, I decided to assemble a quadcopter. I had never wired together anything that flew before and wanted to get the experience. Assembling a quadcopter took much longer than I expected! I learned how to solder together powerful PWM controllers to control high-speed motors and programmed a flight controller to control those motors independently. This taught me electrical and engineering skills (for example, I didn’t know that leaving a powered motor controller against a metal scissor wasn’t a good idea - it caught fire because of shorting itself).

Target Identification Using Dlib Library

During the 2016 season, the three programmers on the robotics team (including I) had trouble finding a green target and controlling a robot to shoot a ball through it autonomously. I discovered that the Kinect sees the target as a solid white (easy to detect and filter out) due to the reflective tape on it. This made me think on how I could improve my team’s target-identification system using the Microsoft Kinect. I discovered the interesting field of machine learning around this time, and tried to code a machine learning program to identify the target using images from the Kinect. I used the Dlib library for this (Dlib is sponsored by DARPA) and was able to get a 75% chance of identifying the target using only 20 images to train my program. Normally, machine learning programs are trained off of at least 50, if not over 1000. Thanks to the Microsoft Kinect and Dlib, my program was able to have a 75% chance of identifying a target using less data than what normally Dlib is given.

FLO (Fab Lab Ordinance) Safety Device

During 2016, AT&T partnered with my school and hosted the AT&T PISD hackathon at the local AT&T Foundry, where AT&T does research and develops prototypes to be refined for later use. I joined a group of friends to participate in this hackathon. The prompt was “How can you improve your school?”. We didn’t know what to do. Then, I asked the local teacher (known as a facilitator) “What problems do you have?”. He told me that he really wanted a way to keep students safe in our school’s Fabrication Lab, where we have dangerous tools such as bandsaws and welding tools.

The school had a certification system in place, where students needed to be “certified” to be able to safely use a tool before being able to use those tools in their personal projects. But this certification system was inefficient - teachers didn’t have time to check whether or not a student was certified! The facilitator wanted a solution to this. I presented this problem to my group and we came up with FLO - Fab Lab Ordinance. We developed a prototype to prevent students from using tools unless they were certified by scanning their IDs. I developed the code for the website application we created to get data from AT&T’s M2X servers and verify whether or not students were certified for tasks before letting them use a tool (it wouldn’t power on unless they were certified). Thanks to this project, my group was the winner of the AT&T PISD Hackathon for having an original idea to a problem and creating a working solution.

Sleep Improvement Wrist Band

A group of friends and I decided to participate in the HackDFW 2016 Dallas hackathon. This hackathon included people from all over the Dallas area (some people even flew from other states!) to attend this hackathon. At this hackathon, we decided to work on a solution to a problem one of my friends’ mother has - sleep apnea. His mother couldn’t sleep because of sleep apnea and doctors needed her to do expensive tests in order to record data on her movement and breathing while she slept. She wanted a cheaper solution to this.

We decided to create a replica of what hospitals use in their tests but at a cheaper price. I coded a program for the Microsoft Kinect to track movements made to determine how restless the user is. Other group members created hardware and software to track and graph the temperature, humidity, and noise in the room.

After the hackathon, the three now-juniors including me in the former group decided to continue the hackathon project. We completely revised the project, expanding our focus from not only improving the sleep of those with sleep apnea, but improving the sleep of everyone. We also no longer used the Kinect to track movement but instead creating a small band to communicate data to a hub which is then sent to a server. Finally, we named our project as Slumber to signify the focus it had on sleep. Making Slumber was a new challenge for me because previously, I never needed to create something small.

The band needed to be as thin as possible to make it comfortable to sleep with. I designed the band and coded it to send data to a hub. Then, I worked on an analytics program on the server to determine the quality of sleep. I was able to detect REM cycles by detecting clusters of movement and comparing it to similar clusters on other nights. This project gave me experience in creating small electronics and machine learning using data given to me from something I myself coded. I also needed to collaborate with others to ensure this project was completed, determining the protocol for communication between the band I coded and the hub someone else coded and sharing a server with a process by another group member that would handle and send requests which I needed access to.