Distributed Systems: Notes