Abstractions make things appear simple. This is one of the main concepts behind OOP. So what is it?! This talk will provide some guidelines on how to build abstractions that are extendable and scalable.
I will start by bringing audience on same page, I will explain what are abstractions in programming with some examples, I will also compare what are strong and weak abstractions and also give some examples. Later on I will talk a bit about leaky abstractions and provide some examples.
After brining audience to the same page I would switch focus to actual topic by talking about how bad abstractions are formed and then have a quick interactive session where I will show audience some interfaces and ask them to tell which abstraction is better and also bitch about the wrong things in the bad ones. After having good understanding of what makes abstractions bad, I would explain you various design pattern by doing post mortem of the python redis client. Lastly if you have any questions I would be happy to answer them.