bash – Daily stand-up list

Like most teams, we take turns to speak in our daily stand-ups. When we gather around the sprint board, it’s easy to know who speaks when – we start at one end and pass the role along the line.

At present, we’re all working remotely, so there’s no physical ordering that we would agree on. And we would get tired of using the same order every day, leading to diminished engagement. So we start the meeting by publishing the day’s speaking sequence. I started with a random shuffle of the team members, but soon realised it would be better if any of us could generate the list, and we’d all get the same result. So I now use the date as a seed for shuffling.

I use a MD5 hash to quickly spread the entropy all around the random word (just using date +%F unmodified resulted in the same sequence every day, because all the variation is near the end), and xxd to convert its hexadecimal output into raw bytes.

#!/bin/bash

set -eu -o pipefail

team=(Alice Bob Charlie Dan Erin Frank)

# Header for today
date +%A:%n
# Team members in today's order
printf '%sn' "${team(@)}" |
    shuf --random-source <(date +%F|md5sum|xxd -r -p)