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.
telem-filteris 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.
gfoldis 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++.
liftoffis 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.
landingis an Arduino project utilizing FreeRTOS to implement a basic flight computer. This program interacts with
AgentTroll/houstonover 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-supportis 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-javawas 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-benchmarkis 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.
molarmassis 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.
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.