avatar

Hi, I'm AgentTroll

Welcome to my personal site
About Me

I'm an 18 year old programmer from Seattle, Washington.

I'm a matriculating student at Northeastern University, studying Computer Engineering.

I first took an interest in programming from playing Minecraft. I started programming initially out of desire to recreate something like the survival games from The Hive servers. I never did actually get around to doing that. As a matter of fact, I've completed maybe 2 actual published Bukkit plugins. Regardless, I think that I've come a long way since 2013. Although programming was more or less of a side activity when I first started, I've realized that it's become much more than that for me.

What I Do

I have 6 years of experience working with the Java language. I try to do a little bit of everything, whether it be GUI design, building APIs, writing applications, Bukkit plugins, 3D games, you name it. Most of my work is published on GitHub, at least the ones I think are worth publishing.

The vast majority of what I do involves Minecraft in some way. I contribute to a few open-source projects, such as the EssentialsX project and smaller APIs some of my friends have written.

I think many people will probably have heard of me from either the Bukkit Forums or the SpigotMC Forums. Since I'm not terribly good at coming up with project ideas, I like to browse the forums to look for interesting problems that other developers run into. There's a particular thrill with having to get your hands dirty and having to look around the server source code. Writing a short, elegant solution is just the cherry on top. I help other people solve their problems, people can benefit from reading the source code and picking up on what I've learned, and I get a blast of dopamine from doing some detective work.

Although I've dabbled into a wide array of different projects, I am especially passionate about investigating performance and analyzing multithreaded programs. I think that your code shouldn't just look good, it should be fast and safe as well. It's always interesting to see lock-free data structures or looking at how other people have worked around different obstacles to optimize their program.

I've also done some work involving the C and C++ languages. It feels liberating to be able to use lower-level constructs and writing closer to the hardware once one is used to writing high-level Java abstractions all the time.

I'm familiar as well with HTML, but I need a lot of hand-holding to work through it. I don't really take a particular interest in web languages, and the look of my website is just an unfortunate side effect from that I suppose.

My Work
Professional Experience
  • I am currently open to all opportunities in the realm of Bukkit/Spigot development. Contact links are above, I prefer e-mail if possible.
  • I am currently contracted with Skytropia, not in active development.
  • I am a former Senior Software Developer at Intermissum Limited. I worked for a time on the reboot of the HCGames server, CryptoMC, as well as the highly successful MineSaga server network. I wrote the original minions plugin, the generators plugin, the kits plugin, the gambling plugin, the original bosses plugin, and worked on several other plugins that I can't even name off the top of my head. I also worked on server performance, and made major modifications to the server jar to optimize the player experience.
  • I also did some preliminary work for the Project Mayhem network prior to it actually shutting down. The server came back a few months later and had great success, although I did not was not involved with it the second time around.
Current Works
  • Going along again with the -ate ending project names, a currently empty repository for gate is a placeholder for a new project which aims to extend upon my work on the fate project (discussed below) and track even more bodies - planets, stars, etc. It's a pretty ambitious undertaking for me personally, so I'll have to be sure to finish up what I want to get done before really diving into it.
Recent Works
  • I've also been working on this particular project, pbft-java for a long time. I actually had a lot more work done in 2018, but I recently decided to remove everything and start from scratch again in 2019. I over-thought the design, and didn't consider usability in the place of flexibility. Trying to conform to the protocol established by the PBFT whitepaper is one of the challenges I'm familiar with from working on the TridentSDK project, it's just that this time, I don't really have anything to test with to make sure I did everything right.
  • One of the more recent projects I've published is the instantskull project to resolve an issue with player skulls not being updated on the clients side. This inspired by a question on the SpigotMC Forums, and I enjoyed being able to write the lagger project to help me out in the process of debugging the problem as well.
  • I am particularly pleased with the calamity project, which I wrote to help reduce the complexity of writing an accumulating buffer. I succeeded in writing a highly modular API that I can use in the future in case I need a ByteArrayOutputStream. By reducing the amount of garbage produced to buffer bytes and transfer them for encoding or decoding, I believe I can write lower latency networked applications in the future.
  • One of my C projects is the fate project that I wrote to track objects in orbit around Earth. Because the Air Force publishes datasets that track the location of objects around earth in TLE format, I read up on the Space Track report and decoded that information to determine the position of objects in the sky. I was hoping that I could use this to connect to my telescope somehow, but I have so far been too lazy to get around to that.
  • Finally, another Java project that I think turned out well is my molarmass project. I was really frustrated by having to look up the masses of each individual element on the Periodic Table all the time to complete my Chemistry assignments, so I decided to write a little tool to help me out. The JSON parsing part to get all the mass data downloaded from the Internet was relatively trivial, but my best work is in decoding the actual elements from the input. I thought that the state machine design and the treeified form of the molecular formula was especially clever. I was also able to use Cucumber to perform behavioral testing on it, which I found to be an interesting take on the development process.
  • I can't put everything that I've done into a single webpage, so if you are interested in checking me out, you can browse the README files for all of my projects by clicking on my GitHub link at the top of the page.
Early Works
  • One of my earliest works was TNTIgnite, a plugin I wrote to learn the Bukkit API. This was followed by my attempt to write a Battle Dome plugin, which failed spectacularly.
  • I believe my first real work that was of decent quality was the BukkitCommons library, now called TrollCommons. I was really proud of the work that I did in performance testing collections and reflection. I wrote a post talking about it on the Bukkit Forums here.
  • In 2014, I dropped almost every Bukkit project to work on the TridentSDK project. This turned out to be not as successful as the team had hoped, and it's been more or less abandoned since I left the project to work at Intermissum in 2017. I learned a significant lot about the Java language, including the networking internals, multithreading, and performance testing during my time working on TridentSDK. In addition, the experience working with the protocol as well as learning how the Mojang team solved problems with their server in recreating the Minecraft server was a valuable learning experience for me.
My Tools

I frequently use IntelliJ IDEA and Maven to write my Java programs. I've yet to learn all the features that Java 9+ offers, but I use JDK 11 and run Java 11 to test my programs.

I also use other JetBrains IDEs like CLion and WebStorm to write C/C++ and this website, respectively.

My main OS is a Debian Stretch machine running i3.

I am a huge fan of using Vim. I have neovim installed on my computer, as well as the IdeaVim plugin installed on all the JetBrains IDEs I use.

I prefer using Monaco in my IDE. My theme for all IDEs is the Earthsong contrast color palette from the Rainglow themes plugin.

As far as development environment goes, I use SDKMAN to download the JDK and Maven.

Debian neofetch
Other

Outside of programming, I enjoy studying astronomy and spaceflight.

I often do solo bike rides to destress. It's a chance for me to get out of my chair for once and get some fresh air.

I play an unhealthy amount of Team Fortress 2 in my free time.

I'm a big fan of Star Wars. I also enjoy listening to Coldplay.