Top
Best
New

Posted by nozzlegear 17 hours ago

If you're a button, you have one job(unsung.aresluna.org)
Related: https://aresluna.org/show-your-hands-honor/
482 points | 239 commentspage 2
inigyou 9 hours ago|
It'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 8 hours ago||
As 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 6 hours ago||
Its 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 6 hours ago||
[dead]
econ 3 hours ago||
If 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.

sockbot 15 hours ago||
The real article getting to the point the author is trying to make is this one https://aresluna.org/show-your-hands-honor/
dang 3 hours ago|
Ok, we'll put that link in the toptext as well. Thanks!
bentt 8 hours ago||
My 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 8 hours ago|
That’s good life advice.
egeozcan 12 hours ago||
iPhones 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-...
jan_Sate 10 hours ago||
There'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 10 hours ago||
It 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 9 hours ago||
One 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.

OneLessThing 13 hours ago||
It'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.
Taek 13 hours ago||
That'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.
Topfi 13 hours ago|||
Isn'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?
ludicrousdispla 11 hours ago|||
Yeah, that is an issue in Apple Maps.

If you tap for directions and then tap to change the mode of transportation as it's loading the routes then it thinks you've picked the first route because it bumps the transport mode panel up in order to show the first route in the list.

Very annoying as they could just account for the height of the first route from the start.

tapland 13 hours ago|||
Then don't give UI and haltic feedback.
mvdtnz 13 hours ago||
Sorry how is this relevant to the example?
ivanjermakov 10 hours ago||
When 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 10 hours ago||
This 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 8 hours ago||
Tangentially 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.

ksec 9 hours ago||
We ( 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 9 hours ago|
I 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.

WhyNotHugo 6 hours ago|||
I 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.
tomasphan 6 hours ago|||
How can you compare if you have only iPhone?
elxr 3 hours ago||
Because the iphone can run apps made by people other than apple.
socalgal2 9 hours ago|
That'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.

johanyc 2 hours ago||
It'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.

crewindream 9 hours ago||
In summary:

Record actions until interrupt.

Animation should not be considered interrupt.

An Error message should be treated as interrupt.

More comments...