Staff Engineer at MongoDB in New York City specializing in C, Python, and async. Lead developer of the MongoDB C and C++ driver libraries. Author of Motor, an async MongoDB driver for Tornado and asyncio. Contributor to Python, PyMongo, MongoDB, Tornado, and asyncio. Co-author with Guido van Rossum of "A Web Crawler With asyncio Coroutines", a chapter in the "500 Lines or Less" book in the Architecture of Open Source Applications series.
English session - Intermediate
If you maintain a library, how can you innovate without breaking the projects that depend on it? Follow semantic versioning, add APIs conservatively, add parameters compatibly, use deprecation warnings and publish a deprecation policy, guide your users on how to upgrade, and make wise choices about when to break backwards compatibility. This talk describes API evolution in Python and C, with lessons for libraries in any language.
English session - Advanced
When you test a program as a "black box", you send it input and out pops the result, like toast. But network code has I/O at two ends: the API and the network. If we only test the API, we don't test its wire protocol or error-handling. We need a "black pipe" test, which tests the API while messaging over a socket. I’ll present a handy library and advise you when to use black pipe tests.