We recently wrote an article in The Conversation that shows how the Australian Seismometers in schools network registers the pulse of Australian life through changes in the seismic noise spectrum measured in local schools.
The figures in the article show the signal from Christmas 2019 through to July 2020 and, like any publication of record, they are static. But the data continue to flow into the school seismometers, so every night we update those graphs automatically and you can see the version from last night here:
These images are raw versions of the plots used to make this figure from The Conversation article and the links point to the Github repositories that generate the images each day.Because we link to the image and not a copy of the image, it will always be the latest version.
How it works
We built a template repository on GitHub where we keep a copy of the python notebooks and scripts that generate the plots we need. The next thing we did was to add some Github actions to the repository which are small scripts that run if the code changes or, otherwise, every evening. These fetch new data, build the latest figures and send a warning email if anything goes wrong. Then the same scripts upload the day's processed signals (to save time the next day) and update the images in the original repository.
For any station that we want to monitor, we make a copy of the template repository and change a few settings that describe how to find the data on the Auspass servers. Then we just need to wait for the scripts to grab all the data and build the images. It takes a while the first time but just takes a few seconds next time around.
There is a "health check" image that shows gaps in the data that is handy when warning messages roll in. This is the health check for the Ulladulla station which has a few gaps here and there but is healthy enough to produce a clear noise plot.
What else ?
It is quite common to see code repositories with badges that show if the current code is working well. Sometimes, though, it is also useful to tabulate or graph the results of benchmarks over time or speed tests that are not automated. Actions running periodically can do this very easily and also keep the results synchronized and versioned alongside the code itself.
Can I use this ?
Of course — all of these codes are open source including everything we built in the template to make the dashboards.