A Beginner’s Guide to Clocks, Causality, and Ordering in Distributed Systems