Sol 20:M1 - C++ Parsing Starlink Ephemeris Headers

It feels great to type out code BY HAND again. Yes, 2026 I’m still writing code by hand for educational projects. AI is incredibly great at producing results when the output required is pure productivity and a product, i.e while at work. At home on the other hand, unless you’re writing code for your own business, the value of AI significantly decreases for coding projects.

One of my objective within the larger goal is to learn C++, to spend time with it, to know it’s quarks, features, dos and don’ts. The only way to really do that is to write the code by hand. Where AI shines in this process is instead of hunting down Stack Overflow answers, I can simply ask the AI chat “Hey what does ____ do?” or “Can you explain why ____ does this and not _____.” and “Is there a better way to write ____”. That personalized documentation has been great.

C++ is also my fifth language I’m taking the effort to learn in depth to some degree. In the past, my goal would be just to get results, write code, make it run, get it done etc. This time is a little different. I know that each language is its own ecosystem, the community has its preferences, and there are a lot of -isms to understand. Each statement I write, “I’m thinking is this the best way this should be written?”. Or, when something looks funky and I’m unfamiliar with it, I opt to dive a bit deeper to understand how it works vs just copying and pasting working examples. Following this process, the journey becomes the destination, and in this AI world we live in now, it’s great for the soul to just slow the f$#* down and code.

Current Progress

In terms of where I’m at in my Starlink router simulator, I’m still focused on parsing out the data of an ephemeris file. There’s a ton of great milage you can get of just a parsing project. And with the amount of data, you begin to starting thinking about performance and efficiency earlier rather than later.

Specifically speaking, I have a basic prototype of a header parser. Close to follow is to parse out a single entry. Then dive into a little testing in C++ to ensure these two methods are bullet-proof.

Go has trained me well

What I love about Go is that it’s a very small language. There’s only a handful of keywords, and typically, only one way to do something. With that said, if you can build complex software with a basic feature-set, you end up not looking for clever or neat bells-and-whistles in other languages. I have heard there are a TON of C++ features, I’m planning to read about them, but overall stick with the basics and prioritize readability vs pulling out a real whizbanger of a language feature to tackle problems.

What I’m Reading

What I’ve learned is that the SpaceX team is usually very closed-lip about their internal development processes (for obvious reasons). You can usually find out what stack a team uses based on the job postings. But knowing how they work with them is a always a bit of an unknown.

I did happen to come across this little article Network protocols in orbit: Building a space-based ISP. It’s a few years old at this point, but I would be surprised if things have changed much from what insights it provides.

Within it, a few Software Engineer leads talk about their prototyping process, specifically:

For development and test of these algorithms, we have a full-scale network simulation running in continuous integration on a high-performance computing cluster. This simulation is capable of running the C++ production code as well as running against prototype code written in Python,” says Bohn. “The Python version allows for rapid iteration during the design phase. Once we are happy with the results of an algorithm, we port it to C++ so it runs efficiently in production.”

This is essentially what I’m looking to build over time.

In addition to that insight, there are also great hints at how they manage memory for their C++ code, how they pre-determine routing paths vs determine at time of routing.

On the Math Front

I’m working my way through Blitzer’s Algebra and Trig textbook, working through the refresher section on Algebra 1. It also feels great to just write things down in a notebook, solve some problems by hand and enjoy the process.