Exactly - as in the original blog post by Yossi Kreinin, I'm talking about a difference in degree only, depending on just how many levels of dependencies and abstractions you're building on top of.
Your comment brings up a good point that writing portable code (cross-browser, cross-OS, across compilers, across processors, etc.) adds to the difficulty level because it requires you to target a higher-level abstraction (web standards, POSIX, ANSI C...) rather than a concrete implementation, while still dealing with implementation-specific bugs that leak through that abstraction.
Your comment brings up a good point that writing portable code (cross-browser, cross-OS, across compilers, across processors, etc.) adds to the difficulty level because it requires you to target a higher-level abstraction (web standards, POSIX, ANSI C...) rather than a concrete implementation, while still dealing with implementation-specific bugs that leak through that abstraction.