Suppose you and a couple of friends who just met at a cocktail party want to build a scalable distributed application, at the level of Google or Facebook. Where do you start?
In this talk, I will present programming abstractions for building highly-distributed applications. I will start by presenting composable lightweight agents -- each agent is responsible for its own distributed state, can be configured (e.g., fault-tolerance, consistency) independently and communicates using stateless, RESTful interfaces. I will then talk about grouping operations using a fully-decentralized, scalable transactional protocol, and touch upon different trade-offs this design allows users to make. I will finish by explaining how we envision bringing these and other abstractions down at the OS level, forming a clean-slate distributed foundation upon which to build cloud applications