A lot of things that are listed here as disadvantages of OOP don't really have anything to do with OOP. You can do OOP in plain C or even in assembler, you don't need any fancy programming language features like classes for that. But the opposite is also true - you can use classes and not really do OOP.
A lot of things that are listed here as downsides of OOP are not good OOP practice either. Take for example Inheritance. Warden wrote "Inheritence is a poor model for reuse". That is true, but OOP doesn't force you to do this - Composition over inheritance is a common principle in OOP.
Also the performance issues are more or less a myth. Yes, virtual dispatch is slower than regular function calls, but sometimes you can't get around doing that. IIRC Casey hinted at doing this with function pointers. And quite often it just doesn't matter. Take a look at all the applications with great performance being written in scripting languages or even byte code languages like C# or Java. Even parts of games use that - game logic for Unity 3D games is written in C# or even JavaScript. And lots of other games embed scripting languages with no performance problems because of that. And I think we all will agree that virtual dispatch is magnitudes faster than interpreting code.
For some problems objects are just the natural solution - you will find them in all kinds of code, plain C-code, pure functional code and yes, even in Handmade Hero.