> stop thinking about creating software for a specific piece of hardware. Design software to be adaptable across a range of screen sizes and aspect ratios

This is right, of course, and pretty obvious I think. But a part of me also thinks that we're still not good at it (or are not good at it anymore). At the very least, the tradeoff is a huge increase in UI complexity. It was so, so easy to design UIs with Hypercard when you knew it was going to run on a 512×342 display.