A cutout of Matthew Hepworth

Hi, I'm Matthew.

I'm currently a student at Brigham Young University - Idaho studying Computer Science.

Bruh.uno Logo


A Website URL Shortener

Bruh.uno is a live project that was meant to store large URLs with queries in a database and provide a redirect, in effect making a URL shortening service.

The Problem was most URL Shorteners, such as bit.ly, tinyurl.com, and so forth, would display the content behind the redirected URL. That is not very effective when specific individuals are wanting to prank their friends and their chat application sends a preview of the YouTube video they secretly sent.

The Solution involved using NodeJS to create a webserver that is capable of quickly processing URL strings and utilizes API endpoints to connect forms together. This webserver, coded in JavaScript, references external files to read and write data to a PostgreSQL database running on a Ubuntu 22.04 virtual server in the United States. As these two services communicate, other scripts run to generate unique URL strings and to quickly process get and push requests. Also used in this project is a NodeJS library available on the NPM platform called EJS. EJS is a view engine for the express.js library that contains the brains for the webserver. The EJS view engine allows for variables to be passed through to dynamic webpages making each page completely unique and allows for each unique URL to be displayed on the page without putting high loads onto the user.

MineKingdom Background

Discord Miner (MineKingdom)

A Discord Gamebot

Discord Miner (MineKingdom) was a large Discord bot that allowed users all over the world to send messages and play the popular game Minecraft in a text form. It was an idle game that allowed users to mine, sell resources, create gear, fight other players and mobs, and gain wealth. The ultimate goal for the game was to be the richest user.

Many problems arose during the lifetime of this project. With a total user base of over 3.1 million registered players, it was immensely difficult to maintain the speed and integrity of the database. Originally, this chatbot stored data in RAM and hard SQLite database files. After being live for a few weeks, responses from the database were extremely long. A script was then created to move all of the data to MySQL but that was also difficult given the limited system resources and the slow database. After six months, the MySQL database was overwhelmed with over 1,000 requests every 10 seconds. A script was then created to migrate about 1+ million user accounts over to PostgreSQL which resolved the major concerns.

Many skills were gained or sharpened during my time developing this chatbot. Websites were created that communicated with APIs seperate from the chat bot to retrieve player data from the database. These websites also were used to eventually control individual settings for users and groups (called servers in Discord) and for payment processing (using the PayPal API.)