Software Projects

Skip Around

- Malloc Implementation

- Proxy Server

- Stock Analyzer

- Book Genre Catagorizer

- This Website

Malloc Implementation (15-213)

About

Written in C, I created an implementation of Malloc to cement the ideas of dynamic memory allocation during my Introduction to Systems Course (15-213). Because of this, my code is not publicly avaiable on my personal Github. If you are interested in the code, please contact me here: gxgao@andrew.cmu.edu
My implementation follows a better-fit algorithm, and utilizes a combination of segregated free lists, implicit lists and doubly linked lists in order to acheive a good balance between througput and memory utilization.
The implementation utilized header and bit manipulation to support miniblocks, allowing for payloads of 8 bytes in size. Metadata stored in the headers also allowed me to coalesce blocks during free operations as well as splitting free blocks during allocation in order to improve memory utilization.

Proxy Server (15-213)

About

Written in C, I created an implementation of a proxy server to cement the ideas of network programming and multithreading during my Introduction to Systems Course (15-213). Because of this, my code is not publicly avaiable on my personal Github. If you are interested in the code, please contact me here: gxgao@andrew.cmu.edu
My implementation supports HTTP Get requests only.
The implementation utilizes network programming ideas connecting clients to sockets, listening to servers, and more.
It utilizes multithreading with pthreads in order to service multiple clients at a time. In order to keep the code race condition free, mutexes were used to lock access of common resources.
Common resources mainly consisted of a LRU cache, that cached client's request.

Stock Analyzer (CMU 112 Term Project)

Github link

About

The program is a simple Stock Analyzer. It web scrapes for stock info and graphs it in a custom built tkinter graphing interface. It also has the feature to use multivariate regression to build a linear, and a polynomial regression model with time as the x-axis and price on the y-axis (The idea is to find trends over time). Additionally, it pulls, from the web, stock fundamentals (p/e ratio, volume, ROA etc.) so that they can be easily accessed. Furthermore, it analyzes the price chart and points out major price fluctuations and uses a stock news API to get correlated news for that price change. There is also an industry average analyzer that, given a market cap and industry, it finds all relevant companies and pulls the average values for each of their fundamentals. This can then be used to compare individual stocks within the industry to get a better financial sense of how a company is doing. This practice is commonly used in accounting for horizontal and trend analysis.

Book Genre Catagorizer

Github link

About

This was a team project under the name Stone-Face-Emoji 🗿 completed for the Hack 112 competition at Carnegie Mellon University. The project placed 2nd in the awards ceremony.
Contributors: George Gao, Shivank Joshi, Bryce Yeazell
The project's goal was to analyze a given excerpt and then tell the user what genre that excerpt came from.
The project ran in 3 parts. The first part was webscraping. This was handled by me (George). The code simply ran through a website gathering excerpts from books of popular genres and assimulated them into a text file. This was done with the help of selenium, beautiful soup, and requests.
The second part handled processing all the data to build a database for each genre of a book and was handled mostly by Shivank. He used TextBlob to read and analyze the excerpts and assigned 'scores' to each excerpt based on a few different catagories such as gramatical syntax, sentence structure, etc. He stored the scores in a seperate text file.
The final part, the UI was designed by Bryce. We used a modified tkinter module designed by Carnegie Mellon University. It prompts users to enter an excerpt, and would return an image, as well as a guess as to which genre the excerpt had came from. Updated UI was done by me.
Note: This project is far from perfect as it was the first 'large' project I attempted. Further note, the longer a given excerpt to analyze the higher the chance it will be closer to what the original book is.

Something Went Wrong :(

The above image demonstrates the simple UI of the program. After inserting an excerpt from a Lord of the Rings passage, we are greeted with the program's guess as to what genre the passage best fits to. In this case, the program states that the passage fits the horror genre.

This Website!

Github link

About

This website was a summer project I tackled alongside a friend, Frank Yang, in an attempt to learn Html, Javascript, and CSS.