Moshe has been in the open source community since 1995 and in the Python community since 1999. He has been a core contributor to Python, and is a core contributor, and an early member, of the Twisted project.
Moshe has given talks at the International Python Conference, PyCon, PyBay, PyTexas and several Python and Docker meetups.
The strengths and weaknesses of Python lend themselves to a different style of object oriented programming.
By accepting several constraints on how we design and implement classes, we make our code more robust,
more testable, and easier to adapt to changing circumstances.
Delve into the best practices of explicit (sometimes called "goosely typed") interfaces in Python, and showing how to use those with the zope.interface system.
Newcomers to Python often put non-trivial code in the constructors. This is often a bad idea. This section will cover why, and show where is the right place to put non-trivial initialization logic.
"Objects are data and behavior" -- following this principle in a naive way leads to putting a lot of code inside objects, creating unwieldy objects and unwieldy interfaces. This section will discuss why that is problematic, and show-case some alternatives.
Shared mutable state is the root of all evil -- and in Python, a lot of things are shared! One way to avoid evil is to reduce mutability. This section will discuss how to avoid mutability while keeping reasonable performance and ergonomic APIs.
Private methods are often under-documented crutches. This section will discuss the kind of problems they can cause, and describe good alternatives as well as an almost-mechanical refactoring to avoid private methods.
Traditional object-orientation stressed inheritance. However, for a long time, it has been known that inheritance is problematic -- even the GoF "Design Patterns" covers how to avoid it. This section will cover the problems it causes, and good alternatives.
Bringing this all to a close, the summary will show the common thread in all of these -- that keepings objects simple and predictable ("boring") leads to code that is easier to maintain.