A.K.A blaxout1213
First things first, yes, I know neither of those names are my actual name, but when you interact with the internet, you need a username to post your content, and these were mine. Yes there is a story behind both of them, but those aren't important right now, so lets not worry about it.
This is a website I am creating to compile all of my programming achievements in one place. At first I thought of it as a resume, but after a discussion with a friend of mine, its more of a developer portfolio. In the following sections, I will cover every project I created in the last 5-ish years of my life. Every single one was done in my freetime, without the expectation of pay or even exposure. I did them either because I wanted the end product I was creating, or I was simply bored, wanting something to do in my spare time. A lot of my projects have to do with video games, but despite this, I learned a lot about the languages involved with them, making my own solutions to unique problems, and interacted with plenty of API's made by other people.
I will only be posting projects that I can either provide the source code for, or ones that I can prove 100% that they are mine. Unfortunatly, over the years and many computers I have been through, not everything has made it, and wouldn't really prove anything if I simply explained what it was and how I did it.
So without further ado... a timeline of my programming!
Of course it has to start here, doesn't it? Well, it was around late 2011, early 2012 I first dipped my toes into programming. I was a young lad at the time, totally engrossed in Minecraft, like many others of the time. I had already gotten into modding the game, but up until this point, it was using mods, things other people have made for people like me to enjoy. The next step in this, was of course making your own mods.
This was a lot easier said than done, but as young and niave as I was, I didn't know what I was getting myself into. I simply had a vision, and a will. It wasn't a complicated vision, but it was a start. The modding community had this "Minecraft Coder Pack", which would take the source code of the game, decompile it, and deobfusucate it. That's it, everything past that was up to you. This is where reality hit me. I excitedly opened up my freshly decompiled code... and looked an intimidating list of folders. I took a deep breath, gritted my teeth, and dove right in.
I spent a while, a very long while staring at cryptic glyphs, following chains of methods to see where they went and what they did. Anything I couldn't figure out, I googled, I tinkered, and I played. Slowly, basic understanding of Java snuck its way into my head. At first, I started with simple number tweaks, tiny things that only changed a single line of code. As I grew more condfident in what I could do, I moved from changing what was there, to making something new.
In summary, I made quite a few things for minecraft, starting simple, modifying the files directly, but later on implementing APIs to both make my life easier, and to make my creations more compatible with other mods. After mods, I moved on to plugins for a popular server API. All of which I will document here
I took up Python after Java, with the intent of making a tool for EVE Online. I pretty quickly decided I didn't like it. Its approximate nature and loose variables immdediately ground against my very nature. Coming from a Java background, I found this especially frustrating, given that in Java, everything is defined as a specific object first, then you assign it values and whatnot. In Python, objects define themselves based on what they get assigned, and that made life a lot harder for me than it needed to be.
I only made one thing in Python, and it was an industry tool for EVE Online. It would scan a database, gather the materials needed to build every buildable item in the game, then check the prices of said materials, and compare them to the price of completed items. The script would assemble all this information, and punch it all into a spreadsheet for easy viewing. It would have to access the games web API to get the current prices of everything, and later on, I made it grab the market histories too, so it was easier to see what people were buying.
I used quite a bit of libraries to get this to work, and I even wrote a mini script to convert the database from YAML to JSON, as JSON was much faster than YAML to read. It was a real quick and dirty script, which I think Python excels at doing. All in all, I wouldn't want to work with Python again if I can avoid it, it felt far too loose for my liking.
My junior year of high school, I had a pretty great chemistry teacher, someone whose style of teaching spoke right to my style of learning. Because of that, it was my easiest class in high school, and I really didn't have a problem putting extra effort into it if I could find a reason to. That reason happened on October 23rd, "mole day". She wanted us to make a project celebrating the day, and provided a lot of options for what you could do. Of course, I didn't like any of them, so I made my own option.
What I elected to do instead, was make a game out of it. I had been messing about with the Unity game engine, following its tutorials and getting familiar with it. So naturally, when I had to make a project, I made it with something I was interested in learning. Over the course of three days, I made a pretty basic puzzle game. The whole premise of the game was you had to combine two mols of hydrogen with one mol of oxygen to make one mol of water. If you were too slow to get all the pieces together, they would form hydrogen peroxide instead, and you would have to rest the level.
It wasn't a lot a short three day project to get me past that bit of chemistry. The due date of the project came, I demoed it, everything went as planned, the rest of the class played it as we enjoyed an easy day of class. I got an extra five bonus points for my trouble, and the other classes had to put up with my bad game design. Overall, I considered the whole thing a success.
The next bit of my technical journey doesn't exactly have source code for it, but that doesn't mean it didn't suck up a lot of my time. Simply put, its a collection of virtual machines holding servers, running on a spare PC in my house. This very website is hosted on an apache instance within one of my many virtual machines, but that isn't the only thing running on it. It is also hosting at least 2 minecraft servers at any given time, and an FTP server, seperate from the FTP I use to transfer these HTML files. It also occasionally hosts a discord bot, more of which will be explained in the next category.
Putting this together wasn't exceedingly difficult, I had help from a lovely person named Maximillian, a friend I made from across the pond. He helped me get the whole thing rolling, starting with the installation of Proxmox, and my first VMs with Ubuntu. He helped with some Ubuntu commands too, like the crontab, which lets you schedule scripts to run at certain times, one of those times includes startup. I used this extensively to make sure that if the VM was running, the server was running, particuarly for the Minecraft servers, as those are ran from Java's .jar files, rather than applications installed onto the server.
After that first day of setup, we seperated, and I have been maintaining it ever since. It's mostly a lot of linux commands, SFTP-ing files about. Once everything was set up, expanding and maintaining is easy. If I need a new service, I simply clone a VM, and install the services I need on there. There's very little change from VM to VM, which makes maintaining everything easier, as it's all Ubuntu, using the same commands and whatnot.
At some point in the recent years, Discord took over as a pretty big communications platform, letting people form groups of like minded individuals to discuss more or less whatever they please. It's far from a perfect service, having quite a lot of flaws that rub me the wrong way, but one thing it did very well was the bot API, which is something I gladly took advantage of. The Discord community really pumped out plenty of bots, but a need arose that none of them fulfilled, I took matters into my own hands.
That need, was to store and distribute the images users of a certain group posted. None of the bots currently around would actually handle attachments in a way I wanted, and going through the message history to download everything was a pain. Naturally, the solution was to automate it, so I did. I built a bot that would listen for certain key phrases, and when that phrase was heard, the bot would look through the last 500 messages, downloading all their attachments into the public FTP folder, which anyone could download from. It would also remember the channel for future posts, so the command would never have to be typed again, and all future downloading would be automatic.
You may have noticed a pattern among all the projects I have listed in this page, they were all done because I wanted something. This very website is not an exception, but what is it helping me to achieve? Well, for one, it puts all of my projects in one place, so I can refer others to them. For another, it adds to that list itself, making a website isn't something everyone can say. Why would I go through all that trouble? Simple, I want to be employed doing this kind of stuff, although I don't have any form of formal education or certifications. In lieu of that, I offer the list of things I have done, without any expectation of pay, simply in my own freetime.
To summarize this huge list, I've been programming in Java since 2011, dabbled into python, and hosted my own servers, just because I wanted to, these were things I wanted to learn, things I found enjoyable. That's not to say they were easy, I spent many sleepless nights working on these projects, sometimes allowing them to consume much of my freetime, just because that was my hobby. I personally don't think my list is that impressive, but this is worth a shot, and if I can get a job doing stuff along these lines, well that alone would put a smile on my face.
Thank you for your time.