9 ms·
If you're a button, you have one job
Related: https://aresluna.org/show-your-hands-honor/ https://aresluna.org/show-your-hands-honor/
- tangenter 4mo ago[flagged]
- kazinator 4mo agoIf you're a button, you have one job: to transmit Morse code from the finger to the machine, Morse code representing a complicated POSIX shell command. And also to power down this entire one-button terminal with a 3 second press, power it up on any button press, with a firmware reset if powered up by a 30 second press.
- Joker_vD 4mo agoNow I am imagining a typewriter with just two huge round buttons, next to each other horizontally, and a spacebar bellow them: *-----* *-----* | | | | | ● | | Ω | | | | | *-----* *-----* [================] A press of each round button rotates the typing ball accordingly, pressing the space prints the chosen letter and resets the ball to the neutral state. This whole thing should probably be electric lest you'd have to press the space bar by smashing it with both fists.
- kevindamm 4mo agoNow remove the spacebar, combine the two buttons into a single one for "tone" and adapt it to morse code. All the buttons still do only one thing and now there's only one button! And, you don't have to worry about what to do in the case that someone hits the "rotate ball" button while it's still rotating.
- Joker_vD 4mo ago> And, you don't have to worry about what to do in the case that someone hits the "rotate ball" button while it's still rotating. Eh, it's a pretty trivial problem, comptometers have it figured out more than a hundred years ago.
- kevindamm 4mo agoIf you're suggesting that the different columns of a comptometer would relate to different rotational axes of the ball, you will likely run into gimbal lock in 3D. You could build an interface in 4D around quaternions but that is much more complicated than my suggestion (even including the part where you learn morse code). The quoted part of my comment is in reference to the core topic of TFA where iOS and Nothing/Android photo apps handle the "pressed again during rotation" action differently. That "rotate the typewriter ball" interface runs against the same problem, by necessity of rotating a physical ball.
- Joker_vD 3mo agoI am suggesting that the whole keyboard can lock during the time the physical ball rotates; the comptometers and pinwheel arithmometers of the yore had this functionality: while the mechanism was performing the addition of the number just entered, the user was blocked from fiddling with the input mechanism.
- kevindamm 3mo agoI get that's what you're suggesting. The locking per-axis or across all axes is fine but doesn't address the problem I'm talking about. In gimbal lock, which many graphics programmers first encounter by using only sequential rotations around the camera's axes, you can get into an orientation where you lose one of the three degrees of freedom. https://en.wikipedia.org/wiki/Gimbal_lock https://en.wikipedia.org/wiki/Gimbal_lock
- Gualdrapo 4mo agoThe power button of my pc also has the job to tell wether the PC is turned on. So do bulb switch buttons that have a pilot light, and so on
- deleted 4mo ago[deleted]
- Joker_vD 4mo agoYeah, sometimes, when I am sitting before my computer and typing comments on the Internet, I have a thought: "Is my computer turned on?" With a quick glance under my table I can reassure myself that it is indeed on and continue using it. No idea what I'd do without that small blue LED. The pilot lights are slightly more useful in those stupid cross-wired double switches that for some weird reason implement a sort of XOR (or sometimes XNOR because why not) gate for controlling a single light: if it's on, then the bulb is depowered and you can safely change it without turning off the entire power rail. But then one day the pilot light itself burns out...
- kazinator 4mo agoYou can safely change a bulb in a socket that is powered on. Just don't stick anything else in it but the bulb.
- QuercusMax 4mo agoThis is literally the type of thing that caused the THERAC-25 disaster (https://en.wikipedia.org/wiki/Therac-25 https://en.wikipedia.org/wiki/Therac-25). Experienced users hitting keys faster than the app could process them, resulting in safety features being inadvertantly bypassed.
- userbinator 4mo agoThat's a great example of bugs in overcomplexity. The requirements were relatively simple, but they went for a full-on multitasking OS with all the complexity that entails.
- sockbot 4mo agoThe real article getting to the point the author is trying to make is this one https://aresluna.org/show-your-hands-honor/ https://aresluna.org/show-your-hands-honor/
- dang 4mo agoOk, we'll put that link in the toptext as well. Thanks!
- kazinator 4mo agoWe like buffering of keystrokes or gestures when the system is completely reliable, exhibits reasonable latency and low jitter in its latency.
- sph 4mo agoEven in unstable or high latency I like the buffering. I’m thinking of a remote shell, where you want to type a command blindly, and see it appear seconds later, because keys got buffered in the Internet pipes. Without buffering it would feel awful, having to wait a full roundtrip per keystroke
- Gabrys1 4mo agoplease, use mosh, if this is available for you
- projektfu 4mo agoIn the Google photos app (Pixel 10) there is no animation, the rotation just happens immediately and there's no button press to buffer.
- doginasuit 4mo agoMy rule of thumb is that animations need a purpose, otherwise you are just showing off and it gets tedious. This animation carries more purpose than most, conceptually you might understand which orientation will be next but it takes your brain a second to validate, and it is much simpler if you can see the path that it took.
- epistasis 4mo agoEliminating these animations is indeed a massive win. Overuse of animations is a terrible thing that has made iOS far worse over the years. I long for the days of yore, when the loading screenshot had a chance of being accurate. These days, when loading something like the health app I get a series of three different screens, rather than just landing at the destination it knew o wanted to start at. It is idiocy of the highest order. Why show some series of random screen transitions while starting the app? Somebody who has no clue about UX programmed that piece of crap, and then an entire team put up with this behavior. I dearsay that if this shipped under jobs there would be a director level firing to stop it. Same BS happens with Apple Maps. If you launch the app and it remembers that an hour, day, or two weeks ago you had your phone in a particular orientation forever ago, it slowly rotates the view pane over 1000-2000ms from you ancient view pane as if you've been waiting patiently over two weeks so that Maps doesn't suddenly disrupt your view... Animation can be helpful but at some point a half-wit VP shoved it into everything Ruth disastrous results and Apple is still recovering. Liquid Glass is a similar disaster of incompetence being promoted far beyond capability.
- paceboy2026 4mo ago[flagged]
- notpushkin 4mo agoThe author says: “Now, I’m going to exaggerate the problem a bit and tap 90-degree rotation quickly eight times.” I was wondering why the Nothing one stuck upside down after that, and expected a rant about Android not registering all taps or something. But the article got ahead with explaining how the Nothing’s solution was better. Huh? The iPhone was eight taps. The Nothing was six. (Yeah, I could have noticed it while watching, but I was situationally incapacitated; namely, I’ve just waken up.) --- Edit: I’ve rewatched it at 0.5× and the Nothing was eight taps after all, too. Author’s point was, indeed, that all taps should register regardless of what animation state is, and Nothing doesn’t do that. Sorry for the confusion! --- Regardless! I still find the iPhone one more pleasant to look at, because the animation doesn’t stop. But if you press quickly enough, I guess what they could do is animate until the taps stop, then: • if the image will arrive to the desired state: finish up the current 90°; • if it’ll still be 90° away: finish up then show one more 90°; • if it’ll be 180° away: flip it upside down, then finish up the current 90°; • if it’ll be 270° away: flip it upside down, finish up, and show one more 90°. But that’s not a very practical thing to implement I suppose.
- Retr0id 4mo ago> But the article got ahead with explaining how the Nothing’s solution was better. No? It makes the opposite argument.
- notpushkin 4mo agoThen I definitely need to get some caffeine I guess *yawns* > And it would be so much more predictable and pleasant if you could just tap the button three times at any pace you wanted without thinking, without paying attention, without getting your UI blocked by an animation that no longer helps you. Am I misreading this?
- Retr0id 4mo agoBoth animate, but Nothing blocks further inputs while it's animating (even though the haptics still fire).
- anilgulecha 4mo agoCamera app should negate the need. most pictures are of people and scenary, and 99.99% of the time the intent is to take the photo in the right order. Simple totally offline ONNX models exist, whcih should make it trivial to categorize the right orientation. Acceleometer/magnetometer can feed this, but should not be the default. Just do this and avoid the hassle of rotating at all!
- Gabrys1 4mo agoThis is so true. Sorry you got downvoted.
- Cockbrand 4mo agoSimilarly, why don't photos get auto-straightened, maybe with an option to revert to original? I spend too much time aligning the horizon properly on snapshots that I took while cycling. The phone even has the data from the rotation sensor, so this should be fairly easy to implement.
- OneLessThing 4mo agoIt's not so simple. There are times where you intend to tap one thing and something else appears underneath your finger instantaneously. So sometimes while rendering a layout you want to stop accepting input.
- tapland 4mo agoThen don't give UI and haltic feedback.
- Topfi 4mo agoIsn't that a different issue from what the blog post described and easily solved by holding everyone who allows their UX elements to get pushed around, for whatever reason, to the fire?
- Taek 4mo agoThat's a different bad UX pattern. If a button has already rendered in a certain location, a new button shouldn't replace it without first giving the user ample warning that a material change is about to happen.
- OneLessThing 4mo agoI see it as the same problem of when to accept button input. In my view having the button give "ample warning a material change is about to happen" is making the button do something more than "one job." But maybe you're right if your point is that if you're showing a button it should do the work it says it will do.
- mvdtnz 4mo agoSorry how is this relevant to the example?
- OneLessThing 4mo agoThey are both about when it is best to accept user input. In the specific example with rotating images nothing covers or moves the buttons so it is not relevant. My impression of the article was that the buttons one job was to accept input always, my argument is that there are times it's okay to not accept input, for example the short time after certain layout changes
- utopiah 4mo agoBusted my Corne-ish Zen yesterday, going back to an Ergodox EZ (until I received 2 new Corne, including one as backup) I can tell that leaving a comfortable and efficient hand based setup is literal pain, both physiological and cognitive. I write and code using Vim (so navigation with keys) and browse with Tridactyl (same principle). It's very rough going back. Also I work in XR and rely heavily on hand tracking and I'm precisely trying to use that accident so re-consider what does typing mean without a keyboard. How can one use hand tracking in XR as input without relying a virtual keyboard, which is so slow and lacks tactile feedback. Anyway, all this to say yes, ours hands are impressively precise, fast, flexible. We take them for granted but it's definitely worth spending a bit of time training them, considering the interfaces at different level, ergonomic, physical interface, firmware, then the software with its UI.
- Topfi 4mo agoLooking at the first comparison, I will admit, I thought the issue was with the iPhones example. The button and slider below the image disappear, then fade back in after each press of the rotate button, a behaviour I have seen on iOS across many applications that irks me to no end. The Screenshot app being a particular bug bear of mine. If you have a UX element that I will be able to interact with before and after an interaction, then keep it visible during the transformation, process, whatever. What UX gain is there in hiding these buttons during the rotation on the iPhone? It doesn't even look better, though appearance has been the altar that recent Apple software has sacrificed actual UX gains. Will agree with the author though that these taps need to be processed independent of animation.
- Taek 4mo agoI wish software apps had "tape-out rules" the way that computer chips do. Basically, when you design a computer chip, a program reviews the design and compares it against something like 300 pages of rules with stuff like "wires of X metal and Y metal can't be within Z distance of each other". We could make something similar for UX. Just a bunch of design pattern constraints that throw flags if you try to ship something with well established UX warts.
- Retric 4mo agoThere’s effectively no universal list of UX warts people agree with. The Flat UX fad was objectively terrible on just about every metric I was taught, but people were actively pushing for such designs.
- selestify 4mo agoWhy was that? What causes such fads? Why did everyone go along with it?
- hypfer 4mo agoSpeaking entirely out of my ass here: FOMO for sure is one of the driving factors. "We cannot risk looking outdated". So weak management, probably. But also talent availability I suppose. If there's a new trend, the pool of people you can hire include many that are in on that trend. UI frameworks too, probably. The modern thing™ does the modern thing™ and you do want to be on the modern thing, because you fear that only that receives security fixes or whatever.
- mproud 4mo agoHow about when users accidentally click too much, or they believe the first click didn’t register? I am still reminded of a keynote where Steve Jobs was demoing how much faster PDF documents would display on the newer macOS. So he had engineers put a button in for him to click that would scroll through the PDF on the screen, and he accidentally clicked it more than once. Steve wondered aloud if it would scroll all the way through twice… and sure enough, it buffered the process! He had to wait for it go all the way back up and scroll through a second time! Steve saved grace by telling the audience that, even with moving through the document a second time, altogether it was still faster than PDFs had been in the last version of the OS.
- embedding-shape 4mo agoI'm no longer the Apple/Mac/Jobs fan-boy I once was in my earlier days, but I do miss the Apple presentations that felt like they were run by a human being wanting to show off cool stuff. I couldn't even finish the last Apple presentations as it all feels so stiff, inhuman and run by suits, they all seem like robots scared of diverging from the holy script who will get fired if they display emotions and humanity. Off-topic perhaps, but got reminded how delightful even the somewhat messy ad-hoc presentations from Jobs were.
- port11 4mo agoThe scripted talks in front of fancy backgrounds do make it unpalatable, it’s just a fancier version of corporate slideshows. I suppose trillion-dollar companies aren’t as willing to take risks.
- pixelatedindex 4mo ago> I suppose trillion-dollar companies aren’t as willing to take risks. Which to me makes no sense, surely you have some budget for risks if you are a 1T company? I suppose their risks are more moonshots to some degree like the Apple Car but nevertheless, I do miss the old presentations.
- vishnugupta 4mo ago
- rkagerer 4mo agoThis isn't unique to touchscreen interfaces. I have the same frustration when performing a sequence of keyboard commands and the OS can't keep up (or some other application or unwanted notification pop-up steals the focus).
- kevin_thibedeau 4mo agoThere is a more general Android problem where it registers a single tap sufficiently to show a button press animation and vibrate and then ignores it because the tap wasn't held long enough.
- nilirl 4mo agoI understand the design principle but I would argue it's a bad implementation principle. Engineering attention is finite. Why would you spend time thinking about 8 clicks when most people will only need ~3? Not all user-action possibilities are equally important, and if they are, then you better have infinite resources to spend on engineering.
- csande17 4mo agoIt's not really a question of how many taps they support, but how fast. This same issue also seems like it would prevent you from quickly double-tapping the button to turn an image upside-down, a much more common use case.
- nilirl 4mo agoNot prevent, just not provide very responsive feedback, right? I don't know, I understand the principle, but I don't see how you can determine the value of a principle outside of a specific context. Even for accessibility, we can't target every context in the name of being accessible. We still have to pick which contexts of inaccessibility we'll need to support with more attention.
- csande17 4mo agoMaybe I misread the article, but I think the Nothing photos app is literally ignoring the second tap, not just failing to provide feedback
- padolsey 4mo agoThe author suggests they want three clicks at any pace to always == the same functionality, so they can whiz through their photos and rotate each predictably. Fair. > And it would be so much more predictable and pleasant if you could just tap the button three times at any pace you wanted without thinking, without paying attention, without getting your UI blocked by an animation that no longer helps you. They cite accessibility. The thing is, I can imagine the complete opposite side of the argument, where someone with motor impairments or parkinson's, for example, ideally liking if their over-clicks were ignored if they'd already locked-in their intention. It's tricky to get this stuff right.
- csande17 4mo agoiOS has an accessibility option called "Ignore Repeats", which seems like a better approach because it's system-wide. So people who need that kind of accommodation can have it in places like the on-screen keyboard too, without needing everyone else to slow down their typing.
- padolsey 4mo agoThat's good. I wonder if it should be opt-in instead of opt-out. Disabled people are arguably less able to find random configuration options than non-disabled counterparts. I get a bit bothered with how undiscoverable these options are. But power-users by their nature don't mind going to the extra mile to get perf out of their experiences.
- karlmedley 4mo agoThere are many types of disabilities. If "power user" means "someone who doesn't use defaults", then people with disabilities are actually more likely to be power users. Being fast does not make you a power user. "The button works when I push it twice" is a reasonable expectation of a device by default. If that weren't the default, then most people would have a worse experience with their phone.
- nananana9 4mo ago
- egeozcan 4mo agoiPhones had their share of animations interfering with functionality, one instance being calculator app showing false results when tapped quickly: https://robservatory.com/the-calculator-bug-persists-in-ios-11-2/ https://robservatory.com/the-calculator-bug-persists-in-ios-...
- hypfer 4mo agoPeople often forget that animations serve purely a supportive role and do not exist for the purpose of having animations. They are there to mask loading times and ease from one state into the other. That's why we have them. This knowledge eventually got lost (figuratively speaking) and now we have code that needs to wait on the animation to finish. Another amazing example of cargo culting.
- antihero 4mo agoThey aren’t purely for that, they also contribute to how an application feels to use in a creative manner.
- hypfer 4mo agoI don't want my image editor to feel like something in a creative manner though. I want it to rotate an image by 90° when I tap the button that does that. See, this is exactly my point when I say that animations are no end in themselves. They serve a supporting role to better get the actual job done. The actual job is not "feel" it is "do". For vibes, there are movies, Art, and AI hallucinations. Of course, "feel" can greatly enhance the "do", but only if it takes the back seat, which is exactly what I just said. __ The age-old debate "form follows function" vs "form over function", essentially. One of them is correct tho, because in the real non-ZIRP world, correctness is defined as "achieves a tangible goal". Which is not to say that stuff optimizing for other goals would be "incorrect" or "worthless", but it exists in a different category from "software". More like "software-adjacent Art". The distinction being made based on "what is the primary goal we want to achieve here" ____ Related: Also caused by ZIRP but differently, we have that problem that software trying to invoke feelings usually does so because it wants to sell you something or has any other style of goal that might not be aligned with yours. So that adds yet another layer. Pure utility cannot scam people into stuff they actually didn't want to do.
- hadrien01 4mo agoI disable all animations everywhere (Android, Windows, Gnome) because I hate that they make me feel like I'm losing time waiting for something that could be instant, and they sometimes make me dizzy. I'm particularly exasperated that iOS doesn't offer that possibility. But rotating an image is one of the rare use cases where I do want the animation. It makes me see what action happened, with which rotation angle, without having to think twice.
- bloak 4mo agoI used to have a device with a physical button which, when you pressed it, would beep and add 30 seconds to the time. However, sometimes it would beep and not add 30 seconds, and sometimes it would add 30 seconds without beeping, so you always had to squint at the dim display to discover whether it had worked or not. I thought this must be a peculiarly bad design ... but since then I have lost count of the number of purely software buttons that somehow seem to replicate this broken behaviour: whether the button changes colour on the screen is somehow only loosely correlated with whether the action requested will take place. Why? How, even, have they implemented this?
- simonklitj 4mo agoI suppose a lack of testing and an assumption that the action will fail so rarely that it’s not worth accounting for? But yes, such patterns make it hard to trust and efficiently use an interface.
- ryandrake 4mo agoNot handling rare cases is the root of a lot of bad software. “Oh, this bug will only affect 1% of users. Don’t bother fixing it: we have features to cram.”
- mrweasel 4mo agoI've only worked for one company that actually did proper QA testing. It's expensive and time consuming and often the main functionality is okay, so many just skips QA altogether. It is probably daily that I encounter products and procedures where I can see that a given scenario is kind of a an edge case, but not an unforeseeable one. Given the scale of many things, edge cases happen pretty frequently and with ever more ridged organisations, lack of customer service, human interaction and a quest for ever more cost savings, hitting an edge case can be everything from frustrating to catastrophic for a person. Generally I think we, as in humans, need to slow down.
- csande17 4mo ago> Why? How, even, have they implemented this? This is really common because of two design features that most UI frameworks share: - The code that changes the color of the button is an internal part of the "button" component, so that people don't have to individually implement it on every button. But this means that it's kind of disconnected from the code that actually performs the action. If the "on click" handler has some last-ditch check that aborts the action, like the "don't rotate the image if it's in the middle of the rotate animation" check from the article, often there's no way for it to tell the button to cancel the color change. (And conversely sometimes the "on click" handler can fire even if the color change animation doesn't play correctly.) - Buttons usually change color when you press down the mouse button, but only perform the action when you release the mouse button. Sometimes this is used to intentionally give you a chance to cancel the action at the very last minute by dragging your mouse off the button while it's still held down (or, on mobile, to e.g. reinterpret your interaction as scrolling instead of clicking), other times it just creates more opportunities for something to happen that prevents the action from working after the color change has already happened.
- Gabrys1 4mo ago[dead]
- Cockbrand 4mo agoA different UX issue I have with these buttons is that the designers seen to have chosen the wrong rotation direction. I almost always need to rotate photos 90⁰ to the right, so I have to tap that button three times. Apart from that, if I have only one way to rotate my photo, clockwise seems more intuitive to me anyway.
- bouke 4mo agoOr another bug seen in the wild: the image rotates opposite to the button’s icon label.
- jimjimjim 4mo agoI'm sure it just my personal preference but I hate animations. Most often they do little other than slow an application down i.e. the code of the application could finish the task almost instantaneously but for the sake of appearance, they make it take longer to finish. I would much prefer no animations in applications. If the animation is there to disguise some actual slow response, just let me wait, give me jarring screen changes. please. Maybe app designers could still include all the animations for "smoothness", "premium look" or "sizzle" but please include an "expert" mode that just turns everything off.
- sizzzzlerz 4mo agoSome years ago, I attended an informal demo of some application we built. The engineer who had worked on the UI was showing an animation of the initial splash screen. It was only 5 seconds or so but I asked him whether there was an option to disable it. He said there wasn't. I then asked if he didn't think that a user, running this many times, was going to get very tired of seeing it run every time and want to just show the home window immediately on start. I said I knew I would. I told him that regardless of how "cool" it looked, when you see the same thing a few times, it can become annoying leaving the user pissed off because its out of their control. I don't know what happened after that. Since I didn't have any authority to request changes, I was probably ignored.
- CTDOCodebases 4mo agoIt's Android stop expecting it to make sense. You have to learn some intricacy of some tool so you can forget it and have to learn it again three months later. iOS is no better. Sure everything is intuitive but it's going to get a redesign so next year you are going to have to learn everything from scratch or a feature you use often will just break.
- k4rli 4mo agoUsing AOSP-based Android roms, I haven't noticed any big changes in years. In current "android 16" and my old "android 10" device one couldn't really tell a difference. Very simple UX, no bloatware apps, no hidden drawers coming out from sides. I've tried the vendor ones by Samsung, OnePlus etc with fresh devices and this Android experience really is awful.
- CTDOCodebases 4mo agoI wish there was more love for more vanilla forms of Android. I would trade more simplicity out of the box and regular software updates over the current situation. Personally I'm blown away by Motorola options in the budget range. For raw value alone there offerings are hard to beat.
- UrbanNorminal 4mo ago[flagged]
- odyssey7 4mo agoAre there times when, during a call, pressing an iPhone’s screen-on/off button will end the call, but other times when it will just turn the screen off? I still do not know the pattern, but I have on occasion inadvertently ended a call by using that button prior to placing my iPhone in my pocket.
- gobdovan 4mo agoWhen on Speaker/hands-free mode, it just closes screen. They assume you wouldn't press lock button while against your ear, because it closes the screen automatically. The problem is that there's some bugs that keep the screen open sometimes, or you may use it in a quiet room as if it were on hands-free.
- odyssey7 4mo agoI appreciate this reply. Even as a technical reader, these concepts are somewhat tricky to follow. In my opinion, this is more of a foot-gun than a feature. A user cannot know whether the screen is closed or not while it is next to their ear—and it’s possible that related inconsistent detection isssues sometimes automatically close the screen when the phone is not against the ear.
- jan_Sate 4mo agoThere's a problem with buffering tho. If the device's slow and unresponsive, and the user tapped the rotation button several times, it would be confusing if the rotation action happens 10 seconds after the user tapping the button. The user'd be left confused like "alright. So, has my input been taken?" Now that I'm wondering. How does iphone mitigate this problem?
- Timwi 4mo agoIt shouldn't buffer them like the author describes. It should execute the button’s function immediately when pressed. This might mean to cancel the current animation and jump ahead, or it might mean to speed it up by the appropriate factor so it takes the same amount of time as it does for one button press. Either way is massively preferable to a button that swallows my input.
- crewindream 4mo agoOne way to deal with it could be “guaranteed interrupt” action (something like sigkill, just for UI action queue). Other way could be to actually visually indicate action queue depth.
- ivanjermakov 4mo agoWhen I had my last Android phone (KitKat 4.4), best tip for increasing UI snappiness was reducing (or disabling) system animations. I still miss this option on most modern OSes, shells, apps, and websites. It's very rare that animation is not blocking further user actions. No surprise animations are tricky to program - they're very async in nature. Designing animation system that doesn't leak into the rest of application logic code is a no simple feat.
- nbobko 4mo agoThis still exists on modern Androids (thanks God!) Even better: they moved it from developer options to accessibility options, which means that they treat it as a normal use case now What is bad is that it still disables the animations for progress bars (the only place where the animation makes sense)
- crewindream 4mo agoTangentially related, games added various menu transition animations on purpose, to disable user input while loading resources (from hdd or network). Idea being that for user it is less frustrating to wait for animation to end, than to see some hourglass/waiting indication.
- shevy-java 4mo agoClick me?
- onionsential 4mo ago[flagged]
- ksec 4mo agoWe ( including myself ) like to shit on Apple's regression of UX and software. Which is true, on all of their OS. But every time we look into alternatives, the others are so far off that even Apple has regressed 10 - 20% they will still be so far ahead of others. Google, Microsoft, Amazon, Netflix, Meta. Is there even one software company that does software UX well but not on Apple's platform?
- crewindream 4mo agoI have only iphone, but from my experience, apple ui quality is just a huge myth nothing to do with reality. On average it is has same amount of crappy UI experience, just in different places.
- tomasphan 4mo agoHow can you compare if you have only iPhone?
- elxr 4mo agoBecause the iphone can run apps made by people other than apple.
- crewindream 4mo agoI had an android before that. Maybe their laptop experience is completely on another league, but I have doubts
- WhyNotHugo 4mo agoI think iOS has lots of refinement and polish, but still lots of ugly bugs and crappy UI. The others have the same crappy UI, but with no refinement and polish at all anywhere.
- socalgal2 4mo agoThat's a great example. But, it's not always so clear cut. Following the exact "best practice" in the article, the iPhone lock screen has this issue. Say your password is 1234 but you accidentally type 11234. What the iPhone will do is see 1123, the pause to tell you you failed, then enter 4. Now you, having muscle memory, will type 1234 (your password). But iPhone kept that 4 so it sees 4123 then pauses to tell you entered the wrong password, then adds the 4, and you type 1234 again, which again it sees 4123. Finally, frustrated, you pause and press delete or take some other action to reset the lock screen and this time it works. This has happened to me countless times since iPhone had a lock screen. The better UX would be to clear the that after the error which is effectively what the Nothing Phone is doing with the photo rotation I agree 100% with the article that for photo rotation it should do what the iPhone is doing. Conversely, it's wrong thing to do on the lock screen.
- crewindream 4mo agoIn summary: Record actions until interrupt. Animation should not be considered interrupt. An Error message should be treated as interrupt.
- johanyc 4mo agoIt's not that iphone keeps that 4; it's that iphone pretty quickly starts accepting the next round of input after 1123 and then you type 4. Perhaps a longer pause will prevent you from typing that 4 but that also means other people who mistype their passcode have to wait longer to retry. It's a tradeoff. I suspect there are more people who type the wrong passcode of the correct length than the incorrect length.
- inigyou 4mo agoIt's interesting that old Windows apps would accidentally do this by blocking the main thread. They'd even give visual feedback - the button remains looking pressed until the click handler returns when the operation is complete! Maybe blocking the main thread isn't so bad after all?
- zzril 4mo agoAs a user, I much prefer a blocking UI thread to one that lets me spam clicks on the "rotate left" and "flip along vertical axis" buttons and then makes me wonder why the resulting image is not the flipped verstion of what I saw the moment when I clicked "flip". However, I do like being able to abort my operations, and a blocking thread does not let me do that. It might be quite a hard problem to determine which buttons should be disabled during which operations. One tricky candidate is the "safe" button. Should I be able to click it when the visual feedback I'm getting does not yet match the internal state of the application (which is what will be saved)? Should I be able to start further tasks when the save is still in progress? (If so, what if the save fails? Will I be able to roll back to the state before the attempted save and try again?)
- seanalltogether 4mo agoIts a perfect illustration of the tradeoffs between synchronous and asynchronous logic. Synchronous logic allows for maximal consistency at the cost of wasting time. Asynchronous logic allows you to use time efficiently, but requires you to track all the different states you can be in simultaneously.
- jamiejquinn 4mo ago[dead]
- Sophira 4mo agoI assumed that issues like "tap eight times for a no-op" not working was because of software patents not allowing the developer to do the obvious thing. Is that not the case?
- aerzen 4mo agoSoftware patents? Care to elaborate?
- Sophira 4mo agoI don't have any specifics, but based on experience, it feels like software giants like to patent what a lot of people would consider obvious wins (such as interruptible animations) if no other company happens to be doing it, and it felt like this would be something where that could be the case. That said, I can't seem to find any evidence of this particular thing being patented to support my case, so it's probable that I'm wrong.
- arendtio 4mo agoReminds me of the time I built a BabyButton, which was built in a way so that a baby could use it. Instead of the normal click behaviour, it was using the touchdown event, because that way the kid saw that something happened, and there was no problem with holding the button too long or moving the finger while still holding the button. Whether you should build systems for that age group is an entirely different topic, but I found it a good challenge to design something that fits the user's needs.
- slazaro 4mo agoIt's interesting that we're so used to the GUI buttons having that specific behavior of only triggering when releasing, even if you exit and enter the button area while holding the mouse button down, etc. IRL 99%+ of buttons work by just doing the thing as soon as you press them. But a button that works like that in a GUI would feel wrong.
- IdiotSavage 4mo ago> But a button that works like that in a GUI would feel wrong. No, it doesn't. It feels way more responsive. My pet peeve is "stopwatch apps" which trigger on release instead of on press. When timing something where fractions of a second matter, most people won't realize that it triggers on release and tap down when they want to start / stop, adding some arbitrary delay until they actually release the button.
- d12bb 4mo agoNo, even for stopwatch, trigger on release is the correct choice, as it’s more precise. When tapping, I have to see, or in case of watching for some event to happen to stop the time, feel/guess when exactly the distance between screen and finger approaches zero. With a stop button triggered by release however, I can just calmly rest my finger on it and raise when the event happens, without any guesswork.
- SoftTalker 4mo ago
- bentt 4mo agoMy wife is a behavior analyst and I’m a game developer. We both watch people and try to figure out how why they are doing stuff and how to get them to do what we want. One thing I learned from her is that if you want someone to stop doing something you don’t punish them, you ignore them. No response.
- DStiego 4mo agoThat’s good life advice.
- altern8 4mo agoHair dryers normally have 2 controls, one to adjust how much air it blows, and another one to adjust how hot the jet is. When they're off, they don't blow any air so it would make sense to me to decide that the button to turn them on is the one that controls how much air it blows. It goes from 0 to 1 to turn on, so you just learned that that button changes how much air comes out of it. But no, most of them do the opposite. So, you turn them on with the temperature control. The action is: no air, yes air, air gets super-hot if you keep pushing the button. I can't find any modern air dryers where they get this right.
- wodenokoto 4mo agoI imagine it’s similar to why a fan starts at max. Eg: 0->3->2->1 Something technical made it easier to implement.
- aliher1911 4mo agoPossibly a consumer air dryer problem, something-something safety. Check professional ones like Parlux, the one I checked has 2 dials: airflow and temperature. Turns on by air dial. They are also conveniently under the thumb so you can adjust without looking.
- marcosdumay 4mo agoYes it's safety related. Turning the heater on while the airflow if off is a sure way to start a fire. It could be fixed with a relay or a solid state switch on the heater, or with a multipolar toggle on the airspeed. But that's several cents more expensive than making it turn on at the heater switch.
- altern8 4mo agoI'm not following, that's exactly what I want, I want the fan control to also turn off/on, so fan at 0 = off, fan > 0 = on.
- bpicolo 4mo agoThe Dyson Supersonic?
- pgisapedo 4mo agoLie you have 4
- PaulHoule 4mo agoI’m thinking a lot about how older applications are often better than new for reasons like this. Sometimes I log into my big Windows machine at home with RDP from out of the house to post photos to my socials, like https://mastodon.social/@UP8 https://mastodon.social/@UP8 and with a folder with a few hundred images in it is is awkward to use the official file chooser dialog because it is based on modern UI toolkits and practices which are wasteful and slow over the net. It is much easier to use XnView MP because it is based on an old widget set which isn’t flashy. Similarly I find myself impressed with the old Adobe apps like Photoshop and Illustrator because, sprawling as they are, they come out of an old time when they were expected to work on machines with a fraction (1/2000 of the RAM!) of the capacity of modern machines and there is just less junk. Adobe recently took the “(legacy)” label off “Save to Web” because that ancient feature alone goes a long way to justifying the creative cloud subscription.
- nozzlegear 4mo agoI browsed through a bunch of the photos on your Mastodon profile – I like them a lot, especially the pictures of happy people enjoying the presence of friends and family. I think that's one of my favorite genres of photography. I don't have Mastodon so can't follow you there, but I've added your profile to my RSS reader. Looking forward to seeing more of your photos!
- nstents 4mo agoI couldn't disagree more. Every button has two jobs. One is to accurately convey what it will do. Two is to then do it. Several of us can neither remember what your dynamic, curvy, arrowed, action lines do, nor can we extrapolate from them. They are an exercise in frustration. The nod to situational disability is appreciated, but most would have been useless without text descriptions.
- codingdave 4mo agoYou are talking about the label on the button. The button does one thing. The label does one thing. You put the two together and you have UX.
- nstents 4mo agoI think this is a distinction without a difference. Imagine an array of buttons. What do they do? The label is intrinsic to the button. I understand this is a perspective. But, taking this to another level, perhaps an absurd one,the button only sends messages and ideally reacts to show it's been activated.
- 1970-01-01 4mo agoEven calling it a button is going too far. Buttons are for elevators, doorbells, and payphones. What we have on iPhone and Android is a tactic response imitation system. If there is no physical depression, there is no button.
- niam 4mo agoOne similarly egregious UX issue on the latest Android is that pressing buttons in the dropdown tray doesn't give any feedback until the action is complete. I can press the "turn on WiFi" button and receive zero haptics or visual indication that the phone registered my tap, for over a second, and THEN it will decide "okay! let's shake the phone and change button color now". And if you have a tray button that needs to e.g reach over the network to a HomeAssistant instance that needs to itself reach out to some fuckass IoT vendor server, you may as well not expect any sort of feedback before you close the tray.
- notnullorvoid 4mo agoI've yet to update to Android 17, but I ended up disabling haptics on 16 because the annoying pop sound feels like a gimmick compared to what haptic feedback used to be.
- madibo3156 4mo agoThat's a good example of bad UX, and, in a way, counter to the article. It sounds like Android needs a middle state indicator. When your action is in a pending state, the state indicator should not be the same as the previous state. A common pattern is to show a pending animation. While this animation is running, what should happen if the user presses the button?
- amelius 4mo agoThis may be true, but it is too random and too insignificant, to my taste. Better post an overview of everything a good button should do (no it is not just one job). Even better, post an overview of good GUI design in general.
- et1337 4mo ago[dead]
- jrm4 4mo agoI have a related cybersecurity point. No interface should, on a regular basis, contain buttons that, if pressed -- harm the computer and other computers near it. And of course, this is links in modern email.
- CWuestefeld 4mo agoI want to support the "what about debouncing" argument mentioned elsewhere; the author shouldn't just ignore this. But I also hate the "you had one job" meme and want to argue against its mindless usage. Most of the time, when people do the "you had one job" thing, it's false. And that's true most of the time in the case of buttons, too. In a typical user interface, a given button has some combination of these jobs: * Communicate what action will occur should the button be pushed. * (Sometimes) communicate the current status of some aspect of the system (e.g., often a button is used to enable/disable a mode, and the button itself visually conveys what the current mode is). * Execute the intended action upon clicking. * (Sometimes) communicate that the command has been received and is being executed (e.g., in the OP, the button might disable itself while animating the rotation in order to avoid the confusion the OP complains of).
- mathgeek 4mo agoYour points are good ones, especially since they emphasize that different people have different expectations of what a "button" is and isn't. Your points individually describe a button with a label, one with a toggle, an actual button, and a progress indicator. All of those things can be "buttons" depending on the user.
- deleted 4mo ago[deleted]
- functionmouse 4mo ago> what about debouncing activate button function on touch release instead of touch down?
- nsyne 4mo agoanecdotally that feels so much worse and sluggish
- functionmouse 4mo agoIt's almost certainly how all the button elements on your phone and computer currently work... Keyboard, homescreen, hamburger menus, links, you name it.
- deleted 4mo ago[deleted]
- econ 4mo agoIf the ui calls for it I take the current position of the element and the destination then change the current to be exactly in between repeatedly on a interval. That way it moves really fast and eases into position. One more ancient trick: back when computers were slow I would always ask myself why the data is not already in the desired format. For example: Today you might have data in a json and turn it into a row of divs. You could store the data as a file with a row of divs which would make it a pain working with it on the backend. But on the front end you wouldn't have to parse it. The phone doesn't modify the image but it changes the image orientation. This is much faster but all other operations would need to work with it and when eventually served in a browser all the 100 000 viewer clients would have to rotate it themselves. I won't argue it's wrong but it shifts complexity from image rotation to image editing and viewing. It seems strange to add "real" rotation to the ui but the phone app is the industrial standard for image editing.
- itake 4mo agoWhat does the author think about the concept of debouncing (common in real world hardware, because electronically signals are not binary).
- bookofjoe 4mo agoFor me Apple's "hold the button until something happens" to turn on my iPhone is and always has been and always will be a FAIL.
- deleted 4mo ago[deleted]
- stared 4mo agoI am puzzled (and irritated) why there is „rotate left” without „rotate right”. Does any of you know why?
- mattmerr 4mo agoTwo wrongs don't make a right but three lefts do, and that seems like a reasonable tradeoff to reduce visual clutter
- deleted 4mo ago[deleted]
- devilfileprong 4mo ago[dead]
- Aaron_NW 4mo agoGreat point. So often I hear people talk about Apple as the hallmark of usability, but the reality is other systems do a great job too. This is a good example of thinking through the user's intention and accessibility states. We need to capture clear user intent first, then decide on the UX behavior. Changes like these help all users.
- othmanosx 4mo agoOne job doesn't really fit the button thing because a button has to do many things, only one of which is being clickable. Having feedback when clicked, feedback when hovered. A loading state, a disabled state, a mix of everything. That's also something I found very frustrating. Like if you take the example of a button that is tied to a service on the back end, clicking this button without any visual feedback doesn't tell you if that button was clicked or not. And if it doesn't have a loading state, you wouldn't know that. something is working behind the scene when you click this button so you would click at multiple times not knowing that it's still working behind the scenes.
- m463 4mo agoJust to go out on a wild tangent... buttons on simple hardware devices usually have many many functions. this button has a function. but if you are powering up and hold it, it does a different function. press and hold this button and while holding it press another button for something else. The most extreme example of this kind of thing I can recall is the anduril open-source flashlight firmware: an enormous number of functions on a one-button flashlight. example: https://budgetlightforum.com/uploads/default/optimized/3X/e/5/e5acf67cc0ac58293f0a2df74e46e80c25d2ae12_2_1035x685.png https://budgetlightforum.com/uploads/default/optimized/3X/e/... or in text: https://ivanthinking.net/manuals/anduril2-manual/ https://ivanthinking.net/manuals/anduril2-manual/
- othmanosx 4mo agoYeah, I thought of this while writing my comment. I hate this actually, in all devices where you want to cut on the number of button there are, like a headphones for examples, having one button that does stop/play/next/prev/reset/whatever... is really annyoing, one button having too many functions is really bad UX IMO. I'd rather have another button to press once rather than holding the first one for 15 seconds to do some other thing
- m463 4mo agogah you have described something I do 100 times a day. I listen to audiobooks and skip back is click-click-click of main button. Why can't I get audiobook-friendly headphones? on the other hand, I do have a page-turner device for reading ebooks: https://www.amazon.com/dp/B0DS26MQZM https://www.amazon.com/dp/B0DS26MQZM imperfect but lazy-optimized-wonderful
- thatguy0900 4mo agoYou should see my modern TV. Somehow they've gotten one button to do a great multitude of jobs, shittily.
- bellowsgulch 4mo agoiOS also does this. Specifically with view transitions. Somewhere after just a few iOS versions in, I think post-skeuomorphism, did iOS stop acknowledging user input in favor of finishing animations.
- deleted 4mo ago[deleted]
- deleted 4mo ago[deleted]
- slovenlich 4mo agoWhy aren't there ehough buttons to just rotate it the right way in one tap? The pixels are free, you don't have to pay for adding more.
- mawadev 4mo agoThe worst part about this is the amount of lag you have when taking a photo. On samsung phones, its quick and seamless, on other android phones the IO is so slow, one picture is taken and before you can tap the shoot button again you have to wait until it saved the previously shot photo. Sometimes there is even a redundant animation that moves the entire frame into the little corner that points to your album to the bottom left. When there is a firework and you want to have a lot of pictures in short timeframes, this kills it. Animations in general are very annoying and inconsistent visually, it makes you unnecessarily wait or take up a lot of resources if the "native" UI is a SPA in a browser instance..
- mizzao 4mo agoWhy does he call Android the "Nothing Phone"? Missing the context.
- socksy 4mo agoThere's so many comments here railing against Android but... I can't recreate this at all? With Android 16 on a Pixel 7 using the Google photos app, if I tap the rotate button 8 times it dutifully queues the animations and ends up with a no-op (not even prompting you to save when you exit the view). This is exactly the behaviour one would expect, no? Screen recording here (lower frame rate due to the recording, there's no stutter in normal usage): https://photos.app.goo.gl/45PjSYMMvAc8fxA57 https://photos.app.goo.gl/45PjSYMMvAc8fxA57
- desterothx 4mo agoJust tested on xiaomi hyperOS, and their copying of iOS has gone to such lengths that it works the same, it buffers the clicks properly
- finecode 4mo ago[flagged]