Projects/ Portfolio

fishymetrics (Comcast Open-Source)

This project is a Comcast Open-sourced project to which I have made several contributions. Before the project was absorbed into my current team's workload, I had made cross-team contributions. The project is an open-sourced metrics streaming platform that utilizes the Redfish API to gather metrics on bare-metal servers of a variety of vendor models, hardware configurations, and firmware/software, including HP, Dell, SuperMicro, etc. It then streams these metrics to Prometheus for further event processing and assessment.

Among my 3 open-source contributions to date, I've expanded FishyMetrics functionality to support HPE ProLiant DL380 Gen10 servers for Prometheus scrape targets. Notable enhancements are the collection of metrics on all types of drives (NVMe, Logical, and Physical Disk Drives), as well as thermal, memory, and power. Wrote new logic to recursively loop through redfish API payloads to find various drive endpoints. Most recently, I've added support for the collection of component firmware versioning and other pertinent details.

GitHub Repository for Project

Skills/Tools Utilized: 

Golang, Object-Oriented Programming (OOP), APIs,  JSON, VSCode, Baremetal Server configuration

Object-Oriented Programming (OOP)

Powerball Simulation

This project simulates aspects of playing the Powerball Lottery game (including purchasing of tickets, tendering change, simulation of drawing, and checking prize earnings based on the official prize chart), as well as queries an API that returns the latest official drawing data. Front-end web visualization is implemented using Django, HTML, and CSS. Back-end components for this project incorporate Python, Bash scripting, Object-Oriented Programming (OOP), and JSON data processing.

Upon launch, the homepage displays the most recently drawn Powerball result, including information about date and jackpot amount, and future drawing date and jackpot amount. The user has the option to select from two main categories: Powerball Simulation or Recent Powerball Stats. Within the Powerball Simulation section, there is a link to "use the stand-alone powerball drawing", which acts like a "quick-pick" generator. Clicking on the main link to "play Powerball Simulation", the user will be prompted to input the number of tickets they wish to simulate purchasing. Upon clicking Purchase, the user is then directed to a page that has the simulated Powerball winning combo displayed on the left, and all of their simulated generated tickets on the right. Any matching balls will have a green border around the individual ball, and any ticket that wins a prize (according to the prize chart from above) will have a green border around the entire ticket. Each ticket has feedback on the right side that describes the prize winnings (if any). Under the winning drawing on the left, a box displays the results for the overall simulated ticket purchase, including Total Amount spent on tickets, Gross Winnings, and Net earnings (taking cost of purchase into account). The user has the option to view Recent Powerball Stats, which uses information parsed from a JSON file, originally fetched from the Lottery API. The user is prompted to select how many Powerball tickets they wish to purchase and the program calculates the cost and potential change made to the customer, the program then simulates the random distribution of lotto numbers. Once the user has purchased the Powerball ticket(s), it will begin the simulation of picking 5 random white balls and one powerball, and references the users' ticket(s) to notify them if they have won a prize, and total their net winnings (or losses).

GitHub Repository for Project

Demo of Working Code:

https://youtu.be/Y5tQHNiYaMo

Skills/Tools Utilized: 

Python, Object-Oriented Programming (OOP), APIs,  JSON, VSCode, Django, HTML, CSS

Random Strong Password Generator

This project generates strong passwords based on user parameters input currently through the terminal. It uses the random library to randomly assign user-requested characters, such as lower case English alphabet characters, upper case English alphabet characters, digits (0-9), and special characters (!, @, #, $, %, ^, &, *, (, ), -, _, +, =, {, }, [, ], |, :, ;, ., ?, /, etc). 

Once running, the program asks for the number of passwords the user wishes to generate. This number is checked in a try/except block to ensure it is a non-negative number greater than 0.

Next, the program asks the user for the desired password length. It suggests that at least 12 characters is recommended for a strong password. Again, this number is checked in a try/except block to ensure it is non-negative, and greater than 0. 

Lastly, the program asks the user how many characters they wish to be from the English alphabet (non-numeric and special characters). In a try/except block, it checks to ensure that the value is less than or equal to the user desired length of the password, and that the value is greater than 0. 

Using random.randint, the program then goes through a series of loops to randomly generate the appropriate number of characters in each of the four categories (lower case alpha, upper case alpha, digit, and symbol), appends them to a temporary list, and shuffles the list before adding a resulting generated password (as a string) to a result list.

The program completes by printing the list of generated passwords, with a self-incrementing password number pre-pending the password.

GitHub Repository for Project

Demo of Working Code:

https://youtu.be/0kX3fHsm6Zc

Skills/Tools Utilized: 

Python, VSCode

Big Data Analytics

Data Analysis of PDE Datasets

This project uses datasets (over a million entries) from the Pennsylvania Department of Education to answer some basic questions regarding educators in the commonwealth of PA. After importing the data using read_excel() and initializing the dataframes [cells 2- 3], I examined the contents of the df_13_14 and df_21_22 dataframes using head() [cells 4-7]. I noticed that some of the column titles were different, so I did some analysis to find the intersection of columns [cell 8], and the overall counts of common columns in each dataframe [cell 9]. I found that the "Active/Leave/Other" column data in the df_13_14 was the same as the "Status" column in df_21_22 [cells 10-11]. To ensure the values would be the same in each column, I identified the unique() values in "Active/Leave/Other" column data in the df_13_14 [cell 12], obtained .value_counts() for each [cell 13], and did the same for the "Status" column data in the df_21_22 [cell 14], and the .value_counts() [cell 15].

This led me to the question, what's the difference in frequency between 13/14 data and 21/22 data and the years in education? To explore this further, I first identified the .value_counts() of records in the "YearsInEd" column of df_13_14, sorting by the index (number of years in education) [cell 16], and again for the df_21_22, noting that the column is titled "YearsInED" with a capital "D" [cell 17].

I decided to plot the results using matplotlib. I wanted to compare the bar graphs side by side to see the overall trend of Number of Years in Education vs Number of Educators between 2013-2014 data and 2021-2022 data [cell 18].

The overall trend is clear, after about 5-8 years in Education, the retention of teachers drops off significantly in more recent years (2021-2022) than it does in earlier years (2013-2014). This shows the correlation between attrition and the National Teacher shortage that every state, including the Commonwealth of Pennsylvania is experiencing as of late.

I then plotted data from both dataframes together in a side-by-side bar graph to show the drastic difference between the two school years (2013-2014 vs 2021-2022) [cell 19].

GitHub Repository for Project


Skills/Tools Utilized: 

Python, pandas, Matplotlib, NumPy, Jupyter Notebook

Django Restaurant API Project

This project is a built from scratch implementation of a restaurant's ordering system utilizing Django's REST API framework and AWS Relational Database Service (MySQL). It simulates the ordering and delivery process in a full-stack application.

More in depth information on this project soon!

GitHub Repository for Project


Skills/Tools Utilized: 

Python, Django, DRF, AWS RDS, MySQL, Linux, Bash, Git, VSCode, JSON handling, REST API

Django CRM Project

In my exploration of Django, I have begun by replicating and tweaking ideas from a variety of tutorials utilizing the Django REST Framework (DRF), implementing CRUD functionality, and connecting to a MySQL database in AWS.

More in depth information on this project soon!

GitHub Repository for Project


Skills/Tools Utilized: 

Python, Django, DRF, AWS RDS, MySQL, Linux, Bash, Git, VSCode, JSON handling, File IO, REST API

API Requests | Raspberry Pi & LED Matrix Project

In this ongoing project, I wanted to make a wall-mountable LED display driven by a Raspberry Pi. The idea for this project came about by thinking of ways to recreate the TidByt, and to be able to write my own Python scripts to query various APIs and display the result on the LED matrix by scrolling text and images.


I have written Python scripts to query the following APIs:

National Weather Service API - Using geo-location coordinates, my Python script uses the Requests library to GET information in a JSON format, writes to a local file, and reads the "Current Temperature" within the hour forecast to display the following text: "The current temperature is: __ degrees F" (where the queried information replaces the __).

Top Headlines on NYTimes.com API - My Python script uses the Requests library to GET information in a JSON format, writes to a local file, and based on the for loop in the logic (and the number of headlines I want to display), displays the top headlines from the NYTimes.com website.

Stock Prices Financial Modeling Prep API   - My Python script uses the Requests library to GET information in a JSON format via the Financial Modeling Prep API, writes to a local file, reads in the local file, and displays the requested stock ticker, real-time current price, and real-time percent change through a customized print statement. 


GitHub Repository for Project


Skills/Tools Utilized: 

Python, Linux, Bash, Git, SSH, VSCode, JSON handling, File IO, Requests, knowledge of electrical wiring