I hate to break it to you: Your API design isn't perfect. Whatever abstraction you create, it will leak, and it will fail. I don't mean throwing errors; I mean something worse: building an API that doesn't allow what your users need to do.
We've got this problem big-style at Anvil, where we're simplifying web development by letting you build *everything* in Python - including the UI and browser-side code. It's a challenge: the existing HTML/JS/CSS/framework ecosystem is fiendishly complex, and so huge that we can't possibly cover everything in a nice, Pythonic API - however carefully we design it.
So we need to design our APIs to fail - and to fail well. In this talk, I'll be asking:
- How do abstractions fail?
- What happens when your abstraction prevents a user from doing what they need?
- What are common strategies "in the wild"? Do you go down with the ship? Do you eject? Or can you build a real escape hatch?