ohh I think I see what you mean, yes, the program will exit before then, which is a sort-of/kind-of race condition because we actually wanted that print message to happen before the program quit. It's fine (I think) for the server version, though. 

I pushed a branch (add_quit_channel) a little bit ago adding a quit channel to experiments so the tracker will stop cleanly when RunExperiments completes. I think we just need to make sure RunExperiments doesn't return until tracker() returns, either with a wait group, or with a done channel, e.g. we could (probably) change L56 to:

    trackerdone := make(chan bool)
    go func() { tracker(samples); trackerdone <- true }

and then, at the bottom of RunExperiment do `<-trackerdone`. That way the function doesn't return until all the various handlers (e.g. printing the output/writing the CSV) have completed. What do you think?