Distributed Systems Problems and Solutions — Programming Keynou