We identify some stations as tagged and once tagged all stations they confirm will hence be marked as tagged too.
We have available conf.txt identifying confirmations decoded in the last hour as well as show.txt the more recent subset of confirmations we choose to show.
We process these in chronological order repeating every 15 seconds. Tagging is an enhancement of the highlighting of two favored stations we have already coded. github
cat show.txt | perl -ne ' print "$&\n" while(/\b(K9OX|KD7MPA)\b/g)' |\ sort | uniq
We require logic for propagation forward from the point of tag contact and persistence of properly tagged sites between processing invocations.
# Propagation
Processing will maintain a list of tagged station that will potentially grow as confirmations are observed involving any of these stations.
Similarly any confirmation involving a hard-wired favored station will potentially grow the list.
# Persistence
At processing completion the list of tagged stations specifically observed will be written as a file to be available on the next invocation.
Stations thus lose the tag once they fail to be observed confirming contacts in the observation period. We have the option of defining that period as one hour or the shorter and variable period from which we chose confirmations.
We favor the shorter observation period because all tagged stations will be shown. No tagged station will reappear if once it has left the shown social network graph. We might change our mind if the tag from favored stations extinguishes too quickly when they cease operation.
# Bugs
Bug: if we don't know when stations were tagged then the subsequent processing won't know whether observed contact is with a station that has been already tagged. Like Midas, every cluster I touch turns to gold.
Resolved: we chose to process only one of the available files thinking that would be simpler. This required keeping our own memory of tagged stations from run to run. The even simpler and also correct solution was to read both files, process the longer one until the shorter came into view, and then report only results found in the shorter file. This way we had all of the dated history we needed without keeping our own memory.
Bug: no, this is still not right. While before the infection spread too quickly now it is guaranteed to be extinguished too soon. One hour after the favored station rolls out of the buffer all are miraculously cured.
# Statistics
We might consider some numbers for processing periods starting with high activity on a Saturday afternoon.
1 Hour 2 Radios 400 Stations (distinct) 300 Heard (distinct) 4500 Decodes 800 Confirmations 80 Shown
Now low but not lowest activity at Midnight.
1 Hour 2 Radios 120 Stations (distinct) 50 Heard (distinct) 780 Decodes 165 Confirmations 90 Shown
Note that we report unique station counts but not unique decodes or confirmations because they involve multiple stations. Stations rarely contact the same station twice but we might decode the conformation many times if they are repeated to complete the contact.