I use assertions heavily in my own code and they work extremely well.
I don't buy the distinction between assertions and invariants as made in the blog post though, as if one was a higher level variety of the other. You can assert anything (though it may get expensive!). I consider invariants to be the logical statement of what should be true, and an assertion to be a program statement that actually performs the check.
Terminology, terminology, it doesn't matter. I agree with the author, it's an incredibly valuable tool.