My Projects

I thought it would be cool to incorporate some projects I have worked on into my website, so I can be able to display some of my work, while also learning how to deploy projects I have worked on. More of my work can be found on my Github, which can be accessed at the bottom of this page.

Eagle's Stock Bot: Riding the Momentum

Eagle takes on the stock market! Yes, I have fallen prey to the Robinhood trend, as I have many friends both from home and at school very invested in Robinhood. However, let's face it. I don't know much about the stock market. Instead, like any modern tech guy, I thought I'm going to automate this, so I created this stock bot.

So how does this stock bot work? I first use the robin_stocks api to make Robinhood transactions in my Python script. In terms of how I determine whether to buy or sell stocks, I web scrape TradingView data. I sell based off the TradingView ratings, and I buy based off TradingView top movers, hence the name "Riding the Momentum". I'm not going to provide too much information about the algorithm as well as provide the source code as A) it has sensitive personal info, and B) since this does pertain to money and profits, I will keep the code and info confidential.

I can say however that I am mainly making fractional share transactions, and currently I am running my continuous Python script on my personal computer. However, I do want to find remote hosts to run this script and am looking at solutions at both AWS and Heroku servers, but their free tier services are minimal, so if anyone has any good free tier remote servers, please reach out to me. Further information is that as you can see, the dollar values are very small. That's because I am only using the free stock that was provided to me when I made my Robinhood account. This graph will be automatically updated every day the market is open.

I think for me, this project was a great opportunity for me to show how computers really can be applied to so many fields, and being adaptable and diverse in terms of applying my skills and learning new things is something I really want to emphasize.



Leveraging a Convolutional Neural Network to Identify Face Coverings to Combat COVID-19

COVID-19 is one of the biggest global challenges that my generation has seen. At first, I was stunned and shocked. However, I realized that modern problems require modern solutions. Face coverings expecially were something that was utilized to help combat COVID-19. I thought it would be useful to utilize machine learning to help assist with this task. However, I had zero experience with machine learning, let alone computer vision. I began by doing a lot of readings and tutorials on machine learning to gain background knowledge. Afterwards, I followed an already existing face mask neural network found here.

However, there were a few major issues with this convolutional neural network. The primary issue is that the dataset included photoshopped coverings of a disposable surgical mask, which is not realistic at all considering the current types of face coverings. Secondly, the neural network was adjusted to input black and white only, not colors. This made it difficult to identify non light blue colored masks. Finally, a huge issue with wearing a face covering is not wearing it correctly, specifically covering up the nose. In order to combat these three issues, I made drastic changes such as completely compiling and editing my own dataset with a wide assortment of face coverings, adjusting the neural network to utilize RGB instead of only black and white, and photoshopping and editing data of images that fail to cover the nose to provide a third classification of wrong mask wearing.

The project is implemented in Python and Keras. Currently, the project can only identify mask covering or no mask covering at a 95.13% accuracy. My complete repository can be found here. train.py is the file that trains the Convolutional Neural Network (CNN), which currently determines only mask or no mask wearing, and main.py utilizes the model and the .xml file to identify subjects in the camera feed and provide live time feedback. The model present includes a 100 pixel version. However, it would be recomended to use a 200 px version by changing img_size in train.py to 200. The 200 px version is more accurate as it uses more data points during resizing, whereas the 100 px version would leave out more data. However, the 200 px run time in both train.py and main.py takes significantly longer due to more data, so it is more optimal to use 100 px. To be able to run, make sure all the import python packages are downloaded. The dataset folder has three folders with around 1800 images each of right and no mask wearing and around 100 images of wrong mask wearing. The wrong mask wearing folder contains much less pictures because it is hard to find wrong mask wearing images. Instead, the ps folder contains a set of around 1800 images of no mask wearing along with a folder of mask .png images. The task is to photoshop wrong mask wearing onto these no mask wearing pictures and then add these photoshopped images into the dataset/wrong folder. Once these are completed, the train.py file will be updated to produce 3 output nodes, and the main.py file will also be updated to be able to recognize the 3 output nodes.



Minesweeper Game

This is my version of the classic minesweeper game made from scratch. Minesweeper was one of the first computer games I played, and I remember clearly that I was very bad at it. More recently, I decided to make this game to recreate one of my childhood classics. Click the "Play now!" button to check it out.
NOTE: This is not compatible with mobile devices as this game requires right and left clicks.



Ping

The interactive online terminal program below combines the jquery terminal plugin and ping.js. The ping.js implementation loads a favicon.ico image from the host and finds the time to response. If the image does not exit, there is an error returned. More information on ping.js may be found here. This is not similar to traditional ping programs that use icmp protocol because browsers do not support icmp protocol.

In order to use this program, simply type the ping command and include an address as the argument. This will ping the address every second repeatedly until CTRL+C is hit (just C on mobile). The ping is timed out if the response time is over 1500 milliseconds. At the conclusion of the program, data concerning the ping session will be displayed such as total pings, ping successes, fail percentage, and response time statistics.




2048 Game

This is a 2048 game that I made from scratch. I was inspired because my mom loves this game, so I thought it would be fun to make this game and have her play my version. Click the "Play now!" button to check it out.



An Agent-Based Modeling Research and Study of the Foraging Behavior of Black Soldier Fly Larvae

This research project was my first experience with computer science, and it was also a privilege to be able to work in my hometown at the world leading Oak Ridge National Laboratory. Being surrounded by some of the most brilliant minds in the world and working with powerful and relevant research steered me towards studying computer science.

The focus of the project was to understand the foraging behavior of Black Soldier Fly Larvae (BSFL). The reason why BSFL are of interest is because of their ability to feed on organic waste and in turn, these BSFL can be used as animal feed, which is an environmentally friendly recycling process. The ability to understand feeding behavior could perhaps optimize feeding rates, which in turn helps maximize the rate of recyling. Additional research has revealed that when BSFL eat collectivally, vortex movements form on the 2d plane. Therefore, the collective feeding movements of BSFL are reminiscent of other natural phenomena occurances, hence why an Agent-Based model was used, and the popular Agent-Based modeling software Netlogo was chosen to complete the model. In order to understand the collective eating behavior, the individual eating characteristics must first be examined. In this research, the models focus on a single larva scenario.

Using experimental data, the model was created with a single larva in a petri dish with a food source near the edge of the petri dish. Above is a side by side example with the experiment on the left and the model on the right. The reason for the location of the food source is because the single larva experimentation all had a food source near the edge, while no experiments conducted with the food source in the middle. Once the model was completed, there were several parameters that needed to be callibrated and optimized. Therefore, a genetic algorithm was used to calibrate and determine specific values for the parameters. In order to do so, a fitness function was defined. In this situation, the fitness function compared the average percent time a larva spent near the wall, eating, and in the middle from experimental data to the percent time the larva spent in the same respective locations in the model. The goal of the genetic algorithm was to find parameter sets that would minimize the fitness function, which resulted in 95% accuracy.


Social Media