...
Rewrite in Golang
Well-suited for networked and concurrent applications
Less likely to f*ck up memory (garbage collection)
Good tooling
Can work on almost any platform (can depend on our design though)
Prototype already in the works with a telemetry configuration manager and some semblance of communication between threads (not processes) using channels
Come up with how new GSW should operate. Ideally, in an extremely user friendly way that simplifies starting up the system, so anyone can do it
Idea: Write backend service(s) and have users run applications that take advantage of service(s). Most likely SOA though, so a single service. Might be simpler too and keep things standardized over microservices.
Service(s) should handle
Setting up a telemetry configuration on startup
Arbitrating between other specified nodes in a network to distribute compute. This can be somewhat complex, so we should start with just supporting a single machine, but make it extensible for this feature. Still looking into what our future ground station hardware will look like since we want to move away from LattePandas
Running other necessary services (i.e InfluxDB and Grafana)
Receiving all telemetry over UDP and processing it before serving it to application code (most likely going to be a broker architecture pattern)
Logging received telemetry over InfluxDB and csv
Logging internal messages (for debugging)
Applications
log_view - View logs. If we operate as a service, it would be ideal to have the logging service log to journalctl, but users may not be tech-pilled enough to do this, so read from that.
telem_view - Telemetry viewer. Can toggle viewing memory in base-2, 10 and 16.
...