I am a computer geek, nerd, whatever you want to call it. I do a lot of homelabbing in my server rack that includes, being a sys admin, a network admin, a full stack web developer, and a software engineer. I have gained tons of experience in a lot of things like...
- Server setup and configuration (Windows and Linux).
- Building networks including configuring VLAN's and subnets, setting up and building routers from bare metal, and configuring managed wifi and ethernet networks.
- Software design in languages such as PHP and C#, and scripting languages like shell or powershell.
Outside of my developement and scripting experience I have a ton of experience with multiple virtualization environments from my homelab, such as ESXI, Hyper-V, Virtualbox, Proxmox, and Docker (this site is running on a docker I made). I also have experience with server management, maintenance, and setup. Lastly I also have a good amount of experience with networking. I currently run Ubiquiti equipement at home for my internal network and use router that I spec'd and built myself. The router is running OPNsense(forked from PFsense), capable of handling multi gigabits of wan traffic, and 100's of mbps over VPN. I have also configured the system to do packet inspection to check for common exploits and monitor traffic over the wan interface.
Below are a few of my larger projects. Feel free to poke around!
is a gaming community that was started around 2017 by a few friends of mine. Initally started off as Counter Strike:GO, Karma has now evolved into group of communities across mutliple games. I got involved with Karma around 2 years after its startup and first started by developing a new website. Initially MYBB was being used for the forums of the site but there were issues with bot accounts, features that didnt exist, etc. I had already starting working on developing my own forums system from the ground up, this includes the database structure, backend PHP, CSS, HTML, and additional web server config (site is 100% my code minus a few bits of css from a friend)
. Here are a few features that my system offered over the old.
- Karma has not had a bot registration since going live.
- The new system allows server admins to have control over the game servers, with all permission and access being handled through the forums.
- Due to the modular design of the site, new utilities and tools could be created for staff, previously not possible.
- Multiple "sites", each separate gaming community has it own forums, utils, etc all being managed from the same system/database.
After working on Karma's website I began to help out with the server backend. Initally the web, database, and game servers were all running on a singular server running Windows. Karma was starting to see scalibility issues due to Windows being Windows, the web server and database running much less effeciently because they were on Windows, and the fact they had game servers spread across multiple physical/virtual servers. I was able to not only merge two servers into one, but also able to save the owners around 1/3 of their operating costs while increasing capacity. I took this new server and migrated all servers to their own virtual environment running on proxmox. I split services into their own VMs/containers and configured a full internal network for the VM's. I was also responsible for specing out all servers for all of Karma's other gaming communities that came after.
Started in late 2021, Karma BoB is a sister community to Karma CS:GO, I developed many backend tools for this Karma community as well, and handled all server configuration. Below are a few screenshots of some of the utilities I made for this project.
On the left is my server/service management utility. Written in C#, it is able to monitor the game server processes, check if they have crashed and then restart them. It also manages daily timed restarts and will stop the existing process, then start them back up at the scheduled time. There is also an option to update the servers.
The right hand image is of my log parser for the servers. This utility is written in powershell, and is capable of reading the live log files from the game servers and searching for keywords to check for chat messages, player death, or player commands. It then takes these and inserts them to a SQL database, running on docker under WSL on the same host system, for our Discord bot to then injest and process.
I have also created a bot, written in C#, that is capable of starting a game client, taking screen shots of the game, and then using pixel analysis on those screen shots to determine where in the menu system it is. Once it has identified it is on the main menu, the bot will take control of the mouse, automatically connect to the game server, again using pixel analysis to ensure it is on the correct screen, and then opens the command window. Then the bot starts checking to ensure three things. One, that the game client is still running. Two, that the console is still open, if not attempt to reopen. And three, the game is still responsive, the bot will issue commands to the client and ensure the text cursor responds. If any of these conditions are not met, the bot will force close the game and relaunch/reconnect.
I have a decent amount of experience with docker container management and creation. I currently use docker as my primary virtualization platform in both my home and public environments. At home I am using docker to manage my media server and automation server(Home Assistant). On my public server I am using docker to... well, run this website. I built this docker container
to automagically setup an Apache instance with PHP and the latest phpMyAdmin. There is also a Maria DB database instance hosted under another docker instance.
If you would like to contact me for a job opportunity, you can fill out this form
. Im not a huge freelancer and have typically only done work for friends in the past, but that doesn't mean I won't do work for you!
If you are contacting me for a more professional role please use the same form, I'd love to hear what you have to offer!