re-write application in Go
this serves to address several issues with the original python version:
-
high cpu usage at idle and when servicing connected clients (some profiling a while back suggested Trio was burning CPU cycles at idle)
-
concurrency on python is bolted on, at best. Trio is more approachable than asyncio (imho...), but both are awkward to use and maintain
The reasons I went with Go:
-
concurrency in Go is a true "first class citizen"
-
much smaller app + dependencies (python + python-trio is 50MB+ on Alpine, compared to ~3MB for the entire Go app+dependencies)
-
cpu usage at idle and when servicing clients is much lower (~0% at idle, and 2-4% when active, measured loosely on a librem 5). active cpu usage probably can't be reduced much more without increasing the baud rate of the STM gnss module I used...
a python
branch has been made from master
for 'archival' purposes.