This document discusses programming for cloud computing using asynchronous message passing between nodes in "swarms". Key points include: - Cloud applications require loose coupling, separation of concerns, and following other principles to deal with complexity and lack of tolerance for poor practices. - Programming for the cloud involves issues like scalability, availability, data consistency, and multitenancy that traditional applications did not face. - The "swarming" approach uses message passing between nodes to distribute application logic and allow explicit description of flows between nodes. Example implementations include load balancing.