Hi, I'm Johnny

Welcome to my personal site
Useful Links
Blog GitHub E-mail LinkedIn
About Me

I'm a 19 year old programmer from Seattle, Washington.

I'm currently a student at Northeastern University, studying Computer Engineering. My future aspirations are to work on spaceflight, bringing science back to Earth and humans closer to the stars.

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.

My Work
Professional Experience
  • I am a former developer at ExodusPrisons.
  • I am a former developer at SpaceDelta. I wrote and did the majority of maintenance for the species plugin. I left in September 2019 because of disagreements I had with management.
  • I am a former developer at Skytropia. The project was abandoned and the remnants were transferred to ExodusPrisons.
  • I am a former senior 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 left in January 2019 to pursue my own interests, and returned in September 2019 to assist development for a short time.
  • I also did some preliminary work for the Project Mayhem network prior to it 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.
  • telem-filter is a C++ program that reads SpaceX telemetry data and attempts to extract the horizontal and vertical velocity measurements. The big issue with the data was deducing the velocity components lead to a lot of noise in the output telemetry, which means a lot of curve fitting is generally needed (ref. AgentTroll/liftoff) in order to get good enough data. However, applying what I learned in my signals class, I attempted to use a digital filter to condition the output data. In the end, this lead to a shockingly good result, though somewhat inferior to curve fitting due to the amount of noise still remaining.
  • gfold is a C++ implementation of the G-FOLD algorithm. G-FOLD is a guidance algorithm used on Mars landers and SpaceX rocket boosters to find the most optimal trajectory given a set of constraints. This project was a long time coming because I had difficulty finding a sufficiently good C++ library to perform convex optimization. This program runs one of the numerical examples in the original G-FOLD specification and plots the optimal trajectory. Unfortunately, I have yet to figure out how to discretize the algorithm, so the implementation is not yet complete. That being said, it still serves as a demo of the capability to implement real-time guidance computation in C++.
  • liftoff is a C++ program that does much the same thing as AgentTroll/telem-filter, but instead utilizes curve fitting to condition the data rather than DSP techniques. I selected to curve fit the altitude data as the majority of the issues lie with the low data resolution of the altitude telemetry. I then implemented curve fitting using some bit of linear algebra to do a least-squares regression forced through certain points at the edge of events such as liftoff, main engine cutoff and second stage engine start. This results in very good data which does not propagate through the motion derivatives modelled using a physical body toolkit written in the project.
  • landing is an Arduino project utilizing FreeRTOS to implement a basic flight computer. This program interacts with AgentTroll/houston over USB UART to simulate sensors and flight trajectory planning. This project utilizes a number of techniques to reduce RAM usage and RTOS task scheduling to organize several simulated components such as a flight termination systems, guidance/control and telemetry downlink.
  • bt-support is a Zephyr project written in C++ to provide both bluetooth and USB UART support to an Adafruit nRF52840 Feather. The bluetooth support permits uplink and downlink to Nordic UART, accessible through the Bluefruit app.
  • pbft-java was another project that has been in the works for a long time. It is a Java implementation of the PBFT algorithm, which is a protocol developed to create distributed systems capable of tolerating Byzantine faults. This project is split up into the client and server specification and implementation modules, which provides flexibility and conformance guarantees for the design of a PBFT system. PBFT is used for maintaining blockchain ledgers on multiple systems as well as for replicated flight computers, such as those used by SpaceX rockets.
  • data-benchmark is a benchmarking suite for different methods of persisting data, written in Java. There is a lot of debate over which method of data storage, between different formats of flatfile such as JSON, YAML and different databases such as MySQL and SQLite. I wrote a suite to measure and gather empirical evidence to inform my own decisions and design choices and decided to share it for others to benefit and to write their own test suites.
  • molarmass is a Java program that determines the molar mass of a compound based on its chemical formula. This is something that I am particularly proud of because it uses a state machine to parse and build a tree of compound tokens. This is then parsed to obtain the molar mass of each element and their quantities. In the end, I did not use this for AP Chemistry; but the fact remains that it was a really elegant way to compute molar masses, at least in the programmatic sense.
  • I can't put everything that I've done into a single webpage, so if you are interested in checking out more of my projects, you can browse all of them by clicking on my GitHub link at the top of the page.
My Tools

My main OS is a Debian Bullseye machine running i3wm.

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 Fira Code in my IDE. My theme for all IDEs is the Earthsong contrast color palette from the Rainglow themes plugin.

I believe in the importance of digital privacy and I actively try to use privacy-respecting services and software where possible.

Debian neofetch

My favorite non-programming activity is road cycling.

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.