> 1) How is "gradual typing" any worse than (at worst case) dynamic typing? And even more so "a nightmare"?
Type declarations that are sometimes wrong can be misleading enough that I find code with them harder to work on than code with no types at all, personally.
> 2) What's the big pain ("all the pain") in static strong typing?
It's not a huge pain, but adding and maintaining types does have a cost (particularly when tooling support is limited).
> 3) How is catching 95% of type issues "very little of the gain" of catching 100% of them?
Because you can't trust the types to be correct in any given piece of code. You end up having to do all the things you would have to do in an untyped languge (high test coverage, carefully rechecking all the types when debugging issues, etc.).
That's not gradual typing, just the most common implementation of gradual typing (e.g. in Dart, TypeScript, Python, but not e.g. in Clojure and Perl 6 AFAIK). Although maybe this is just a "no true Scotsman" argument...
1) How is "gradual typing" any worse than (at worst case) dynamic typing? And even more so "a nightmare"?
2) What's the big pain ("all the pain") in static strong typing?
3) How is catching 95% of type issues "very little of the gain" of catching 100% of them?