The old-style popup windows have a specific API window.open() that can be blocked. What the author calls popups are mostly just HTML <div> elements, perhaps using CSS properties such as position and/or z-index, so there's no generic way to block them. It's extremely difficult to block the "bad" ones while allowing the "good" ones. If this were a problem that could be solved generically, then browser extensions would have solved it long ago. Instead, the browser extensions are forced to keep extremely long lists of mostly site-specific elements to block. I'm not sure how the web browser vendors themselves could it it any differently, without completely redesigning HTML.
Right on the money. This should be the top comment IMO, and the fact that it isn't says a lot about modern HN...
Only allow dom/css changes in response to user action.