1. 40
  1. 4

    Design for a touchscreen and it’ll work with a mouse

    design for a small screen, and at the very least it’ll work on a larger screen

    What I find annoying about “mobile first” is that in practice it means the UI ends up limited to capabilities of mobile devices. Few, if any, “mobile-first” sites “progressively enhance” beyond those.

    For example, the “hamburger menu” is a compromise no one likes. It does work with a mouse and a large screen, but with a mouse and a large screen you can do a lot better than that—make a real menu that makes section visible. Most people don’t.

    On a phone with a small screen, no matter what you do, it will be a barely usable UI disaster. I with people dropped the “progressive enhancement” nonsense and went for “graceful degradation”: make a great UI for capable devices first, then add compromises for limited ones.

    1. 1

      Progressive enhancement is mostly orthogonal to the mobile <-> desktop thing. It’s about content first, then enhancement if possible. The point is that a browser which just downloads the initial page, and doesn’t load or run any additional stuff (maybe it doesn’t support javascript, maybe it’s just on a really slow / intermittent connection), should still see the right text in a sensible order.

      In theory, “progressive enhancement” and “graceful degradation” are just approaching the same solution from opposite directions. If done well, you shouldn’t be able to tell the difference between the results. The problem with graceful degradation is that it’s much harder to take something that’s already part of your UI and make it optional than it is to add a new optional enhancement. If you’ve started out with a jumble of DOM elements that rely on a javascript framework to position them sensibly and fetch the actual content, you can’t get back to the “unenhanced” content-only html without rewriting most of it.

    2. 1

      It’s also worth clarifying that a mobile connection doesn’t assure slow speeds, just as a wired or WiFi connection doesn’t assure fast speeds.

      I’m glad author brings this point. Thankfully the Netinfo API didn’t get much traction in mobile web apps, but native apps are guilty of assuming that “WiFi = fast & cheap”, “cellular = slow & expensive”, and are super annoying when this doesn’t hold.

      I’ve been stuck many times with both iOS and Android “helpfully” refusing to download large files (including mandatory updates without which they refuse to work) until I connect to a WiFi network. The problem is, in rural areas many households don’t have WiFi at all: it’s easier, faster, and cheaper to get a 3G modem there, and setting up a WiFi network for a USB winmodem is no fun.

      1. 1

        The latest mobile devices are far more powerful than your average laptop or desktop

        Citation needed. The x86 processors in desktops deliver more compute power per cycle than many (most? all?) ARM chips, and storage, memory, and GPU are usually faster, too.

        1. 2

          Geekbench has its flaws, but IMO the method is acceptable and the data spans many years.

          The flagship iphone 11 pro scores 1327 (single-core), which is beaten by very, very few desktop CPUs (all of which are quite pricey).

          For multicore performance, the phones are not so good (but tablets are fine; the ipad pro scores as high as the Threadripper 2970WX which is definitely not an ‘average laptop’ CPU).

          1. 1

            Not only is multicore performance now more important than singlecore, but that doesn’t take into account any of the other things I mentioned - memory size (which affects performance with GC languages) + performance, storage performance, and GPU performance.

            Additionally, the iPhone and iPad Pros are not necessarily representative of the average phone - Android has 75% of the smartphone market globally, and can you say that even flagship Android phones have similar performance?

            1. 2

              Not only is multicore performance now more important than singlecore

              Huge citation needed on that; I’ve got a 24-core threadripper (it’s stupid fast) but (other than the occasional test runs I bought it for), 22 of those cores are idle.

              can you say that even flagship Android phones have similar performance?

              Not even close by any measure (unfortunately - we need competition!). Qualcomm are lagging badly.

              that doesn’t take into account any of the other things I mentioned

              An “average laptop” has integrated graphics, the IO is a shitshow (displaying tail latency for reads requires logarithmic scaling), and the RAM is likely 4gb.

              An “average desktop” is another matter; nobody buys those planning to get a potato.

              1. 1

                Yeah, you’re right in that multicore performance is probably not more important than singlecore. I thought that Chrome and Firefox, at least, would do multi-threaded HTML rendering, but it turns out that that’s not the case, and for most people, web browsing is the most important thing they do on their computers that requires a non-trivial amount of compute.

                However, even though an “average laptop” has poor specs, you still actually need to benchmark it to compare it to the average phone. Saying that it’s bad doesn’t matter if we want to know whether it’s worse than a phone or not.

                1. 1

                  When I say bad, I mean “not even close to an iphone”. Average laptop processor geekbench scores are 2/3 those of an iphone.