Great article.
A lot of people are on the "composition over inheritance" bandwagon now, but I've honestly not seen a situation where I felt that inheritance was used and was the wrong choice. (Though most of my experience is in python where there's no diamond problem, mixin classes are common, etc)
What I noticed is that everyone seems to agree that inheriting implementation is useful, because you have that with traits in rust (which are agreed to be good, afaik), so in languages without traits, it seems reasonable to want to use the next best thing