Table of Contents

This post is still being written and I’m sure I will add more things over time, so consider this an ever-evolving post!

Background

I’m sure this post will mainly be for myself, but I think certain sections may interest others, especially to provide context as to how I got started with programming. I thought a good first post on this blog would be to write down everything that’s led up to this point in my life as it pertains to programming. I’ll try my best to break things down into overarching groups in terms of my skill level in programming, but especially for the earlier things while I do have many random memories (many of which surprise me I can still remember) some of them blur together date-wise. I’ll try my best, but I may not get the order of it all fully correct, but hopefully, I can search through enough pictures and saved documents to better place it all on a timeline. Anyways let’s get started, shall we?

Early influences

I’ll start and say that I grew up in an in-between sort of era. In my (mainly very early) childhood, technology, computers, and cell phones very much existed and weren’t uncommon, but they weren’t ubiquitous yet and more importantly were not gateways to anything and everything in the world whenever you wanted. Bo Burnham does a great way explaining “how it was” in his comedic song “Welcome to the Internet” from his “Inside” special. Basically what I’m trying to say is I had technology around me growing up, but It was far different that the technology and information that there is now. My dad did have a computer in the house I first lived in and I only have one memory of it (Though looking back through pictures I do have a better time frame of when he first got it), so I know I knew about it and what it was, but I don’t know how I personally interacted with it. My only memory of it is due to me watching the show “Rolie Polie Olie” in the background and I just so happened to be sitting in the chair at the computer. No idea what I was doing on it, especially given I would have been around 3 or 4 years old, but it was there. This has nothing to do with programming other than to show computers were not foreign to me growing up (And also an excuse for me to go through my memories of the first house I lived in). In a similar vein to this, my first consoles were a Game Boy advanced SP and a GameCube, which after looking through more photos, it appears I got them both at around the same time, which would explain why I can’t remember which I got first. Super Monkey Ball was the best game ever by the way. This puts a good marker for my age and childhood as these aren’t an Atari or N64, but they are also far from a modern console by any stretch.

Ok, let’s get to my first actual programming precursor or influence.

Video Game Tycoon

No, not Game Dev Tycoon, Video Game Tycoon. Specifically the Gold Edition. Doing some more research it seems there was also a Diamond edition that was just a different theme. I also stumbled across the E3 promo of it from 2006 and a TV spot that does show the cover of the Diamond edition. The game came out in 2006, though I do not know when I got the game. I can say though that this was likely my first experience with creating games and doing what I would call and consider visual scripting. Video Game Tycoon was essentially a way to create your own video games given the game’s pre-made assets and systems that allows you to add goals & achievements to your game. If you are familiar with Core it’s a very similar, albeit much earlier concept. There was not any sort of scripting, but the base concept of creating a game and using all of the pre-made building blocks at least introduced me to the creative world, problem-solving, and logical thinking.

First Lego League

FIRST LEGO League, or FLL, is a competition hosted by FIRST, for kids ages 4 to 16, though when I competed in it the tiers and age ranges were a bit different. One of the core goals of FLL teams is to design and build a lego robot using LEGO’s Mindstorm system to complete various tasks set forth for the given year’s theme. I participated a few times in this and even did 1 year of the main FIRST Robotics challenge in Highschool and I highly recommend participating if your school, or community has a team. FLL was the first time I was truly exposed to programming that included logical conditions, loops, and variables, in a visual scripting-like environment. I enjoyed the entire process, from designing and building the robot to programming and problem-solving. Being younger everyone was encouraged to participate in each of the different aspects and thus we all wrote code, built, and designed different parts of the robot. While I did enjoy writing code, this experience wasn’t what made me realize I wanted to be a programmer but did continue to push me toward engineering.

Microsoft Excel

This is the one that I can’t pin down a specific time frame, but I’m pretty sure it was around a similar time as FLL if not right after. Growing up I was given some plastic mini-college football helmets as a Christmas or birthday gift. I was big into sports growing up and so eventually I collected probably close to 50 of them. I would often have simulated or pretend games and seasons between the teams and eventually worked my way up to have full standings and results for all the games. To generate the standings and log the results I started to learn and utilize Microsoft Excel. Now I didn’t do anything too fancy or have any complex equations, but I still learned how to automatically calculate games played and points based on the team’s win, loss, and tie records and even learned how to do some filtering and cell shading based upon the cell’s value. This probably speaks more to my slight analytical side and enjoyment of managing these “fake” leagues, than it does to programming, but hey, I could probably make a killer web app to do all the stuff I used to do with these helmets and I’m sure younger me would have thought that was beyond cool. Maybe one day I’ll find a way to revive a virtual or simulated sports league.

Learning To Program

I’ve talked about the things that have led up to me becoming a programmer and have possibly influenced me to start programming, but now let’s talk about how I actually got into programming.

Minecraft (Bukkit)

Minecraft is a game that has introduced many people to programming and I am one of them. I first got the game around version 1.1 or 1.2 and enjoyed playing the game, but I soon got bored of it. The open-world, sandbox concept of the game was really cool, but I felt the game just lacked different things to do to spice it up. I then started to discover Minecraft servers, specifically servers running Bukkit which allowed the use of plugins to modify the game experience through custom code. This very much intrigued me and I wanted to learn how I could make plugins so that I could make whatever I wanted to in the game! This moment is what lead me down the path of learning how to program and make Bukkit plugins. Minecraft, and thus Bukkit plugins, are coded in Java and it took me a few weeks and months of YouTube video tutorials, but I was slowly starting to learn how to program.

Randomizing Plugin

While learning to program I made a handful of small programs and whatnot, but my first real, solo project was the randomizing plugin. On October 21, 2012, I created a Bukkit plugin page and 4 days later I released the first version of the plugin for Minecraft 1.3.2. Sadly this was before the time of version control for me, so there’s no GitHub page and I’m not sure if the original source code still exists somewhere on a drive I have, but you can still access the Bukkit project page, and even see the plugins files. I guess you could download and decompile the jar, but it’s not quite the same code that I wrote, but also it’s probably nothing special. None the less though, over the following year I would make some small improvements to the plugin. Still cool to be able to look back on my first-ever real project.

Trouble in Mine Town (TMT)

The Randomizing Plugin was my first project, but Trouble in Mine Town was my first REAL project. It took the game concept of Gary’s Mod minigame Trouble in Terrorist Town and attempted to recreate it in Minecraft. This was the first instance of my attempting to recreate games in other mediums and is a theme you’ll see reoccur over the years. Overall this project wasn’t too noteworthy as it was very ambitious given my current programming skill set and it ultimately had a short life span being first uploaded on November 14, 2012, and receiving its last update a few short months later on March 29, 2013. What this project does hold though, is the award for probably the worst code I’ve ever written and proof that everyone was once bad at programming. I even wrote a college entrance essay about this and I don’t feel like getting into it too much here, but long story short, I knew what loops were in programming, but for whatever reason, it just didn’t click in my head to use one to assign each player in the game a role. Instead, I opted for a giant if-else ladder handling any number of players between 1 and 50 players and manually assigning roles that way… If you really want to torture yourself, the jar still lives and you can look at it yourself. It’s really painful. But hey, we all gotta learn somehow.

Call of Minecraft: Zombies

Ok, now we are getting into the real beginnings of my programming career. Following making TMT, I was looking for more ideas for plugins to make, and I liked the idea from TMT of remaking popular games in Minecraft. I can’t remember what exactly inspired me, but I ended up settling on remaking Call of Duty, specifically its zombies game mode. Little known fact, I’ve never actually owned any of the Call of Duty games. Obviously, I’m well aware of what the game and game mode is, but I’ve only played the game mode a handful of times. I was, and still am, not very good at first-person shooter games. Again why I choose this game to remake eludes me, but nonetheless, here we are.

I originally set off on remaking this plugin myself and got the proof of concept for shootable guns using the hoe tool as the gun and snowballs as the bullets, working. Around this point, I was doing some more research and happened to stumble across another dev who also happened to be attempting the same feat I was in remaking the game mode. The developer, IMod, was taking a slightly different approach than me and instead of recreating guns, he was making the game mode using the vanilla weapon mechanics. I decided to reach out to IMod and see if he was interested at all in joining forces to make this project a reality. IMod agreed and so we set off together and slowly built up this game mode.

On June 30, 2013, we released the first version of the plugin for Minecraft 1.5.2. We both really liked working on the plugin and the challenge that it brought to us and continued to improve it. It was a very good project for both of us as I think it may have been the first “real” project that either of us worked on with another person editing and writing the same code as the other and over all, I think we had a very similar programming skill level. IMod was probably a bit better than me though. If you’re curious about how the plugin looked over time as we developed it I’ve made this YouTube playlist which I’ll try and add videos to that show the plugin. Unfortunately due to a future issue, which I’ll talk about later, I don’t have any git history, or code outside of the posted jar files on the project page, from before February of 2014, which is actually a fair amount of work. We did use Git or at least some type of version control. I hadn’t used version control prior to this, so it was all new to me (Which lead to why the old history is missing). Maybe IMod will randomly happen to have this old code or history, but I wouldn’t hold my breath. Anyways, me and IMod continued to work on the plugin together for the rest of 2013.

Towards the end of 2013 though, IMod would start to move off to new adventures (not in a bad way), and I slowly became the sole developer of the project. I liked this plugin, but as any programmer will tell you, your first projects where you are learning new things will be a nightmare to maintain. The original code you write will have little to no future thought, and as you learn the environment you will radically change how your write and develop your code. This leads to lots of rewriting of your core code and after doing it a few times, it can start to become a spaghetti mess. As such, while I liked the plugin idea and concept, working on the actual code slowly became a pain and chore to do. Around this time I also started to work on other things outside of this plugin, so I decided it was time to look for some help. This is when I met and started working with Smeths who would be crucial in keeping this plugin alive and limping along. This is also where we get to how the old git history of this plugin was lost. During the onboarding process with Smeths and getting him set up, we encountered a dreaded merge conflict. Both not really knowing how Git works we somehow ended up force-pushing and essentially rebasing the project at that new commit. Lesson learned, but it definitely hurt. Luckily this didn’t happen again for the next year we worked together to improve the plugin and add more features.

Into 2015 though, I lost motivation in working with this code base and a big blow was given to the future of Bukkit with Minecraft’s new End User License Agreement or EULA for short. This new EULA had language in it that made people question the legality of Bukkit (Bukkit is the library we use to interface with the Minecraft server in code). Given the circumstances, it was around this point I decided to slowly step away from CoM:Z and leave it in the hands of Smeths to continue with. This isn’t the last of CoM:Z, though as I will be revisiting this plugin again later.

Ludum Dare & Game Development

When you’re younger, there were always kids who thought their dream job would be a video game tester. Someone who just got to play video games all day. I always thought that was a bit unrealistic, but having made video games now, it’s kinda crazy that I could realistically do that in a sense. Ludum Dare is a 2 or 3 times a year game dev competition where game makers are given 48 hours (or 72 hours with more lax rules) to make a game from scratch incorporating a given theme. I first competed in Ludum Dare 27 back in August 2013. The theme for this Ludum Dare was “10 seconds”. August 2013 was just over a year since I started learning how to program, so to say this game was nothing special to play is probably spot on. The game is essentially just a memory match game where you were given 10 seconds to remember cards that were either a letter or number colored in 1 of 4 colors. Then after 10 seconds, you have to match the cards together in the pairs. I made the game in Java as that’s all I knew at the time, but I utilized the Java Applet to make my game playable in a web browser. Java Applets were all but erased from the internet a few years later, so unfortunately you can’t play the game straight up and while I thought the source code was up on Github, that seems to not be the case. To compound this, at the time of writing this, the old Ludum dare webpage, and archive data, are offline and they haven’t yet migrated to the new LDJam site. This web archive is the best I can do currently, but even it doesn’t have any link to the source code. Not that it was really any impressive. All other Ludum Dare games do have source code up on my GitHub though. These games are honestly great for seeing how far I’ve come as a programmer because the rules, and goal have stayed the same over these 10 years (again at the time of writing this), but my games have constantly gotten better and more elaborate and that’s all to attribute to my coding abilities. I definitely plan to keep making games for these competitions whenever I can and continue to see my growth! I also made a page on my website that shows all the ratings from my games and you can see a great upwards trend!

Twitch and Beam Chat Bots

You’ve probably heard of Twitch, but I don’t fault you if you haven’t heard of Beam. Beam was the predecessor name for Mixer before it was bought and then sadly closed a few years later by Microsoft.

Side tangent, Mixer being acquired by Microsoft started a very hectic week for my digital life as while I didn’t stream to Mixer much, I knew many who did and were in a very conflicted state. Then just 5 days later, Twitch acquired Curse, who at the time owned CurseForge, the site that hosted all my Minecraft mods and projects and the source of a small amount of income for me. Let’s just say over this one week there was a lot of uncertainty about the future.

It doesn’t end there though. Fast forward, 4 years later on June 22, 2020, Twitch announced that it was selling CurseForge to OverWolf. At this point, I was making a consistent stream of money (Nothing big) from CurseForge, but this announcement did make me consider stopping Minecraft modding. I didn’t have much time to think about that though as a few hours later a bigger bomb was dropped. Microsoft announced Mixer would be shut down in 1 month in a move that completely blindsided its streamers and even staff. Talk about deja vu from 4 years earlier, but with almost no time between this time…

Enough of my tangent now. After making games with Java, I wanted to try my hand at making a more general-purpose app. I don’t remember the specifics of why I choose to make a Twitch bot, but I will say at this point, Twitch bots were very rudimentary and there were a lot of options. Custom functions hadn’t really been perfected yet, so if you needed anything custom, you had to make the bot yourself. You can see a list of tools I ended up making/ adding for my bot here. This project was my first introduction to the Swing API as well as making rest calls and IRC connections to twitch to perform actions and send messages. You can go see the source code for the bot if you want. The bot did end up getting used by a few streamers aside from myself such as Darkosto and xEvila, but there isn’t much to say about the bot itself.

The bot worked, but it’s more about what this bot spun off and the things that came out of making the bot.

During the early days of Beam, streamers were trying it out and some would dual stream to it. Yes, this was against Twitch TOS, but was hardly enforced outside of partners and wasn’t a well-known rule since there were not many alternatives to Twitch. During Darkosto’s short dual streaming time, I made a webpage similar to Multi Twitch where users could go and input the Twitch and Beam username of the streamer they wanted and it would pull up both chats and 1 of the stream videos, which the user could choose between. I was able to find an archive of this page via the Wayback Machine, but because it relied on the user inputting the stream usernames, you can’t see that part of the functionality. Still, for what was a pretty simple webpage that just used iFrames, it did saw a lot of use until Twitch started more strictly enforcing dual streaming and Beam eventually was bought by Microsoft and renamed to Mixer.

While on the topic of Beam, I also attempted to make a Beam version of TurkeyBot. Unlike its Twitch brother, it never saw the light of day. This was mainly due to the pain of working with the Beam API, but the source code is also public for this bot too! It shares a ton of commonalities with the Twitch version as I basically copied and pasted it, but still cool to look at nonetheless.

The last thing I wanted to mention that came out of this was inspiring MJRLegends to learn to program and make a Twitch bot. MJR had been around my community for a little while stemming from Trouble in Minetown and Call of Minecraft: Zombies, but after seeing me make my TurkeyBot MJR decided to learn how to program with Java and slowly built up a bot of his own. Today, MJRBot is the bot and platform I leverage a lot for my Twitch channel! Truly incredible to see all the work MJR has done and it’s really cool to know I inspired him to learn to program and eventually make this whole system!

College Years

Ok, it’s a bit of a lie and this starts about a year before I went to college, but meh, close enough.

Custom Mods with Darkosto

About the time that I was winding down working on COM:Z due to the Bukkit uncertainties, I decided to give modding a chance. I was originally turned on to the concept of modding by Ferullo who I had met through IMod. Ferullo at the time was the developer of Ferullo’s Gun Mod (Go figure). I decided to give modding a shot and luckily for me. Minecraft 1.7.10 was the main modding version, which is probably the first version (1.7.2 is also valid) where the barrier to modding was substantially lowered. Back in 1.6.4 you had to modify the vanilla jar manually, but in 1.7, Minecraft Forge, the modding library and mod loader, allowed you to simply make a standalone jar that was then run by the game to pull in your modding changes. A bit of an oversimplification, but you get the point.

With this, I was able to start to learn how to mod and I decided to make the mod TurkeyUtil to be a mod that I could throw literally whatever I wanted into so that I could learn new things and automatically just include it in the mod. While I could make whatever I wanted, I did not have any ideas of what would be good to add to a mod simply because I was not very familiar with the modded scene. I decided to go lurking through Twitch streams to see if I could find any inspiration there. I met a few streamers, like Mazphiro, and got some good ideas for things to add to my mod. Eventually though, through Mazphiro I stumbled upon this little, unknown streamer by the name of Darkosto. Darkosto was also new-ish to the Minecraft scene and had been playing it for the past few months. After following him for a little while, he decided he wanted to make his own modpack 1 off the working theme of Journey to the Center of the Earth. The timing for this honestly couldn’t have worked better and having been in his stream for a little while, Darkosto did know who I was and that I was attempting to make a mod, and upon asking if he would like for me to make this mod be more custom for his modpack, he agreed!

Journey to the Core (JTTC for short) would eventually be the name of the modpack and me and Darkosto slowly built up a working relationship from this collaboration. TurkeyUtil would receive many new items such as a Duck entity and green lime food that were core aspects of the modpack and became fairly iconic as well as a very derpy Turkey entity. I was able to improve my modding abilities and make a core mod for Darkosto to help him make the pack that turned out to be a huge success! Me and Darkosto continued to pair up over the years (and still do!) and through this modpack we got to meet many others who I would grow close to in the Minecraft community such as Funwayguy and Wyld.

Chance Cubes

Riding off the release of Journey to the Core, my work on TurkeyUtil had slowed down and thus I was off looking for my next project. As it so happened, Wyld, who I met through Darkosto and JTTC, was working on his own modpack, SkyFactory 2.5. SkyFactory was a modpack created by BaconDonut and passed to Wyld to make version 2.5. While making this version of the modpack, a mod called Lucky Blocks changed its permissions around its usage and prevented the redistribution of the mod outside of its own site. Lucky Blocks is a mod that provides a Mario question-style block that when broken triggers a random event to occur that could do anything from giving the play an item to building a wishing well. Due to the permissions change, SkyFactory 2.5 could no longer include the mod in its pack as it would be unable to redistribute the mod.2 Because of this, Wyld sought out an alternative to Lucky Blocks and ultimately asked how hard it would be to make a Lucky Block style mod. That was my queue and I jumped at the opportunity and just a few days later got a proof of concept mod working.

Chance Cubes has grown to be the project that I’m known for. When talking to people that have played Modded Minecraft and mentioned Chance Cubes, odds are they’ve heard of it. Chance Cubes has also been the project that has opened the most doors for opportunities. I honestly wouldn’t be where I am not without it. Summarizing my full history with this mod just isn’t possible as I’ve done so many different things with it.

Back to SkyFactory though, with Wyld and his chats suggestions, the mod was quickly built up and eventually was given the name Chance Cubes. I learned to do some pretty cool stuff with it and even got it to build structures by having the blocks fall into place with gravity.

The early art for it was a bit ugly, but thanks to Valsis a few years later, the blocks got their now iconic design.

Early on Funwayguy also mocked up and implemented a 20-sided solid block and added some cool lighting effects to it. This would go on to be the Chance Icosahedron and not long after the Giant Chance Cube was also added

Again I could go on and on about this mod and honestly the length of this section is criminally short, but it’s just so hard to wrap all my thoughts into writing. Ok, you know what, this does deserve some more said about it and the things it has spawned of, so let’s meet halfway and here’s a long, but not exhaustive list of random thoughts for this mod.

  • Yes, I knew going into this project that streamers would use this mod to incentivize supporting them financially, so no I don’t take any issue with it. Kinda insane the amount of money it has generated for others though.

  • I received a death threat from a user of this mod… I wasn’t all that worried about it being legit but was still crazy.

  • I’ve attempted to “port” this mod outside of a Forge mod to both a Bukkit plugin and also to a Stardew Valley mod… They both kinda flopped though.

  • I added a system to add custom rewards for certain users that I specify. Mainly streamers, but that whole system is kinda cool how I’ve built it out

  • The mod has a whole custom rewards system for end users and pack makers to add rewards to the mod themselves. I’ve have been attempting to make a UI building to help in this process on my website

  • I attempted to make a modpack with Chance Cubes as the core of the pack. honestly kinda worked, but I just didn’t have time to finish making it.

  • I have a webpage that allows me to update the status of all of the rewards for each MC version. I hope to keep expanding this to replace the wiki sections on my GitHub but that’s gonna take work…

  • You can actually see the usage stats for Chance Cubes! It’s all anonymous and aggregated into mod version runs by day.

  • There’s probably more that I’ll add over time

App Development

Breaking away from my “internet” based life, at this point I was in college and completing my first years of working towards my computer science degree. In addition to all of my projects like Chance Cubes and whatever other flavor of the month project I was working on, I was also doing my school work and working a part-time job as an app developer for my university. Not much really to speak of here, but this allowed me to both learn app development (Android Studio on a laptop is literally the worst) and also eventually experience Kotlin. Kotlin was pretty nice, but I feel like now that I’ve been in React land for so long I feel like I would appreciate it much more. Just need a project to get me to try it out again…

Internships

Going along with my app dev job in college, I also had a few internships throughout my summers in college. One of note was with the Software Institute at Carnegie Mellon University. There I got to work with writing code to analyze malicious servers and build out a map that showed the links between these malicious servers and their IP addresses. Again, I won’t speak too much more on this stuff outside of my “internet personality”, but I still thought it would be cool to mention and also just to provide others some insight on how I progressed in computer science.

FPD Stats

FPD stats (Short for Flying Penguins of Doom), was a webapp I started developing in college. The goal of the project was to allow for better stat tracking of hockey games for players and teams. There’s not much to say about this project as I ultimately scraped it, but it was the first project I used React in and the tech stack/ evolution has been interesting. I actually still own the fpdstats.com domain, so maybe I’ll do something with it one day.

The original Tech stack was a vanilla JS/ HTML/ CSS frontend with the backend being written in Python & Flask. I also explored websockets and socket.io for the first time for more “live” updating. I used vanilla Javascript at first because my biggest gripe with javascript and node was the sheer bulk and bloat of modules and dependencies. My only other prior JS experience was with JQuery which was still in use, but was very much on the way out as being a top choice for frontend development. I did a lot of the initial work using vanilla JS before learning the basics of React in my final internship and deciding that the JS just wasn’t scalable for what I wanted. I then made the slow process of migrating all the code over to use React. I choose to still use Javascript for my React code instead of TypeScript as at the time TS was still fairly underused and the any keyword was abundant and I absolutely hated that. Ultimately this project was just a learning project for me and just didn’t have the traction for me to make it a full fledge project.

Twitch Integration

Through my time working with Darkosto and making mods for his various modpacks, he started to explore other games to play on his streams. I don’t know how it specifically came about, but he eventually started playing games that allowed for mods to add ways for his Twitch chat to trigger events within these games. I helped work on a central app that he used for communications with these mods and Twitch as well as a few mods for these games to hook into that app.

I’ve made Twitch Integration mods for a few games:

  • Slime Rancher: Bonus Clip
  • Raft
  • RimWorld
  • Dunkum And maybe some others I can’t think of

Google Gobble Server

I originally wasn’t going to talk much about this project, but I felt like I had to, simply because without it, I may not have made Sports Scores Bot (I’ll get to this project soon). Google Gobble Server or just GG Server was my first attempt at an always online project that ran what I called services, using a very similar system to Forges’ mod loading. The core GG Server was in charge of loading up each service’s jar and handling communication between services if needed. It also handled communication with my phone using push notifications sent via firebase (Hence the Google part of the name). It worked pretty decently and I built a few services for it including a Twitch lurking bot that notified me on specific keywords and a Reddit comment scanner that did the same, but one of the last services I made for it was a Twitch bot that automatically pulled NHL scores and sent a message in my Twitch game with game updates while I was live! GGServer eventually had issues mainly with firebase and stability (Though a big contributor to the issues was the fact the Raspberry Pi that was hosting the program was sitting atop my desktop computer and was receiving the vented hot air causing it to thermal throttle and occasionally lock up). In the end, I scraped the project, but the NHL notification system lived on and eventually became Sport Scores Bot!

“Modern Era”

Like the “College Era” from above, this one is also a bit misnamed as it started in the second half of my college life, but hey, naming things is hard!

Call Of Minecraft: Zombies Resurrected (Again)

Oh yeah… this plugin.

Well after a few years of this plugin sitting and slowly getting more and more neglected I decided I wanted to come back and polish it up for good… Ok a bit ambitious, but I was tired of this plugin being buggy and hacky. I knew I could do better and this plugin deserved better. I had a soft spot for it since it was my first big project.

I spent a few days going over all the code and slowly bringing up to the level of code I’d write now. Some overall architecture things are a bit wonky as rewriting everything was a bit too much of a life, but things like weapons, barriers and other more isolated aspects I was able to rework.

Speaking of the weapons, the guns were one part that got a big functionality change. Originally I had used snowballs as the “bullets” for guns. Upon right clicking with an item in hand that corresponded with a gun, I would spawn and shoot a snowball with various trajectories and velocities for different gun types and then upon hitting a zombie I would do damage based upon the gun shot with. Overall this was very clunky. The snowballs were very slow moving with relatively big hit boxes. Having to wait for a snowball to damage a zombie and then cancelling that event before damaging the zombie for real made it that much more complex to do everything. I took that and revamped it all. No more snowballs, hello ray tracing! Instead of shooting a snow ball the guns fired out a ray. This ray was all in code, but I did make it spawn some particles along it’s path to give a visual indicator for the players. By using a ray, I can control the speed the bullet moves (instantaneous since the game has a low tick rate), how far it goes (different for the different types of guns), and how much it spread out for the shotguns. I do lose the “drop” in air over time and distance that bullets would have naturally, but honestly this isn’t really a huge deal with a game like Minecraft where realism is just not a thing. In all I did things like this to lots of the other parts of the plugin, but there’s not much more to say about it.

In the end, I got the plugin to a point where all I really had to do was fix small bugs as they came up and update to new versions of Minecraft when they get released. The plugin doesn’t have every feature from COD: Zombies and is actually missing a lot of them, but I feel like it does have all the core mechanics and is a solid plugin as a whole. The plugin is open source, so we will see if over time anyone from the community adds more things.

Raspberry Pi & Microcontrollers

Up to this point, I’ve really just been coding and hadn’t made too many physical projects. I had done Robotics in Highschool and did have other short stints with other electronic based projects, but I hadn’t really gotten into doing electronics based projects. This changed when I started exploring Arduino’s, raspberry Pi’s and other microcontrollers. I was really just learning the basics and starting to mess with them, but over the next few years in college and then post college I would continue to explore them and learn new things. I can’t think of too many things of note to show off and maybe I’ll add more as I think of them, but here is a few things I can show off and talk about.

Dorm Room LED Light Strip

As a college student just before 2020, LED light strips on dorms and apartments were all the rage. As such I wanted to play around with building my own. I used my Arduino and a bluetooth module and coupled it with an Android app I wrote to be able to control the color and pattern of the LED strip. I don’t remember many specifics about the project beyond this though.

Physical Pong Using A Laser

This was made during the 2018 Ohio State Hack-a-thon

I wanted to make this section here to sort of mark when I started to actually obtain these things and play around with them more seriously.

Advent of Code (TODO)

Web Development (TODO)

Sport Scores Bot (TODO)

Weird Game Engines (TODO)

My Website & Server (TODO)

Custom Electronics Projects, PCB’s and the likes

Stream Sports Widgets (TODO)

Rink Vision (TODO)


  1. A modpack is simply a collection of mods that have been specially configured and adjusted to work together and create a new gameplay experience. ↩︎

  2. It’s a bit more complicated than this, but the bottom line is Lucky Blocks could not be included in this version of the modpack ↩︎