Pošalji SMS: Principles of distributed systems