15 votes

Topic deleted by author

7 comments

  1. [8]
    Comment deleted by author
    Link
    1. Rocket_Man
      Link Parent
      This isn't bizarre at all. Its likely just rounding to the nearest second which is the correct thing to do when lowering a numbers precision. What's interesting is the overall blog post of this...

      This isn't bizarre at all. Its likely just rounding to the nearest second which is the correct thing to do when lowering a numbers precision. What's interesting is the overall blog post of this person learning about the behavior and it's possible caused.

      13 votes
    2. [6]
      unknown user
      Link Parent
      It doesn't sound bizarre whatsoever. This feels like well-refined, user-focused design, where someone in product or user experience made a decision that makes superficially more sense, without...

      It doesn't sound bizarre whatsoever. This feels like well-refined, user-focused design, where someone in product or user experience made a decision that makes superficially more sense, without trading any accuracy. In fact, I put this solidly in the "it's the little things" polish that historically have made Apple products a joy to use.

      I could imagine intuitively a vast number of people would expect a 30 second timer to visually "start" at 30 seconds, and not "end" on a screen displaying 1 second—a tiny fraction of people would consider the technical timing of that 30 second timer and would notice the peculiarity, but those people are probably smart enough to make an association to user-experience too.

      After all, Apple's entire claim to fame with Mac was "a computer for the rest of us".

      9 votes
      1. [5]
        whbboyd
        Link Parent
        This is certainly not "well-refined, user-focused design"—if it were, they would have used ceil (the next integer up rather than down), which has all the benefits of rounding the timer while also...

        This is certainly not "well-refined, user-focused design"—if it were, they would have used ceil (the next integer up rather than down), which has all the benefits of rounding the timer while also ending precisely on zero and not offsetting display transitions from the actual second transitions of the timer.

        I actually can't think of a credible explanation for this behavior that's not one of

        • somebody arbitrarily used round in an early implementation and now That's How It Works; or
        • a project manager with too much authority to override decided they liked the behavior with round (possibly just because it's weird and "differentiating"), and couldn't be persuaded otherwise.
        5 votes
        1. unknown user
          Link Parent
          Hard disagree—and in fact, I don't think a product manager touched or thought about a line of code when conceiving this, so I don't believe it's correct to think about this in terms of ceil or...

          Hard disagree—and in fact, I don't think a product manager touched or thought about a line of code when conceiving this, so I don't believe it's correct to think about this in terms of ceil or round, but rather about what the user should experience on screen. After all, the code behind the scenes is just the necessary implementation to create this functionality.

          The addendum by @Weldawadyathink clearly shows a lot of thought has gone into this.

          5 votes
        2. [3]
          onyxleopard
          (edited )
          Link Parent
          round leads to a step function where the GUI changes the display once every second, but offset 0.5 seconds from when the real value changes. This isn’t arbitrary or incredible for the reasons laid...

          round leads to a step function where the GUI changes the display once every second, but offset 0.5 seconds from when the real value changes. This isn’t arbitrary or incredible for the reasons laid out in the article.

          This is certainly not "well-refined, user-focused design"—if it were, they would have used ceil (the next integer up rather than down) …

          For GUI elements that transition after the timer expires (i.e., reaches 0.000…), ceil would lead to a situation where the timer will appear to a human not to end on 0. For human perception, this is wrong. Rewatch the screen capture of the iOS 5 second timer included in the article. After the timer expires, the GUI transitions back to the control widget to create a new timer. If the displayed timer countdown used ceil, there might be, at most, one frame where a human could see the numeric value of 0. Depending on all sorts of other factors like display refresh rate and other things, it’s possible they wouldn’t even see that, or won’t perceive it because it will flash on the screen for such a short amount of time that you won’t actually have time to process it. round has the effect of ensuring that the reduced precision shows the timer start value (5) for .5 seconds at the beginning, and showing the end value (0) for .5 seconds at the end. Designing GUIs around human perception is an art. Apple decided to do it this way for perfectly credible reasons.

          To give an extreme example, if you used ceil for a 1 second timer, the display would just show the numeral 1 for all frames except possibly one final frame on 0 (again, depending on the display refresh rate and other timing considerations it might not even display 0 at all). Notice also that there is a higher precision, non-numerical representation of the remaining time displayed in iOS. There is a circular progress bar that depletes, counter-clockwise surrounding the integer countdown.

          Consider alternatively that for countdown timers like this in iOS’s Clock app, there is a 'pause' button. If you pause a 5 second countdown timer within half a second of starting it, then the GUI will still display 5 seconds left. Given the reduced precision of whole integer values, this is the most correct answer; 5 is the closest integer value to the answer of the question, "How many seconds are left on the timer?". And if you pause it within 0.5 seconds of the timer expiring, the GUI will display 0, which, again, is the closest value to the truth within the constraints of the reduced precision. That is, there isn’t even 1 whole second left on the timer, but it is still not expired yet.

          So, the point of using round is exactly the intuitive reason why the round function exists: you want to know what is the nearest integer value that the higher precision real value is closest to. You can argue whether the original decision to limit the precision of the numerical value to begin with is principled, but given that decision, round is very clearly a principled choice.

          4 votes
          1. [2]
            Weldawadyathink
            Link Parent
            I just tested out pausing the timer in the 0 section. As soon as you pause, the digit displayed pops back to 1. At first I thought that they might be rounding while the timer is running, and using...

            I just tested out pausing the timer in the 0 section. As soon as you pause, the digit displayed pops back to 1. At first I thought that they might be rounding while the timer is running, and using ceiling when paused. But If you pause in the last half of a second, where the digit is rounded up, the displayed digit does not change. It seems that they are using round for all displays, with a special case: if the timer is paused, and the display is 00:00, display 00:01 instead. This seems to preclude the claim that this is an oversight. Wether this is the right decision to make is debatable, but the Apple engineers certainly put thought into this design decision.

            7 votes
            1. onyxleopard
              Link Parent
              Huh, that special case is interesting, though I actually don’t like it due to inconsistency. I can see both sides on that decision.

              Huh, that special case is interesting, though I actually don’t like it due to inconsistency. I can see both sides on that decision.