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.
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.
gateis a placeholder for a new project which aims to extend upon my work on the
fateproject (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. As of the last update to my website, I've gotten pretty far along and I'm proud to say that it has been a hugely rewarding experience seeing something like it come to life.
pbft-javafor 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.
instantskullproject 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
laggerproject to help me out in the process of debugging the problem as well.
calamityproject, 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.
fateproject 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.
molarmassproject. 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.
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.
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.