An introduction to building API clients and servers which can evolve independently. This talk will cover connecting to an API without upfront knowledge about any implementation details such as URIs, HTTP "verbs" and content types but instead an understanding of the semantic meaning of what the API does. By leaning controls on the fly, we can allow a client and server to change independently over time.