Hi, I'm Johnny

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

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

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.

Professional Experience
  • I am currently an Aerospace Software Apps Engineer at BLUE ORIGIN. My work so far has been primarily implementing ground systems for New Glenn.
  • I am a former Systems Software Co-op at Starry, Inc. At Starry, my primary responsibility was to maintain Linux firmware for their portfolio of base station products. Among my work, I implemented driver changes for Wi-Fi radios and frequency synthesizer chips, fixed bugs and created CLI tools for network operators. I also touched a variety of other components in the software stack from RPC servers, OTA scripts, nginx reverse-proxies and CI scripts.
  • I am a former Computer Engineering Co-op at Massa Products Corporation. At MPC, my primary responsibility was to develop radio firmware for ultrasonic tank level sensors. My other responsibilities included implementing features in the tank level sensor firmware, debugging and testing the tank level sensor PCB, debugging and testing boiler level controller firmware and hardware and writing internal and end-user documentation.
  • I am a former Developer at ExodusPrisons. I was the project owner and developer for enchanted pickaxes plugin, the largest project I have ever authored at more than 20,000 SLOC; the disguises plugin, custom crafting plugin and jackpot plugin. I was also responsible for maintaining common libraries and infrastructure.
  • 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.
Personal Projects
  • 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. caojohnny/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 caojohnny/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 caojohnny/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.
Other

I love spending my free time outdoors. I enjoy riding my road bike, playing soccer and running.

Photo Gallery