Most active commenters
  • sjsdaiuasgdia(3)
  • pessimizer(3)
  • wrs(3)
  • zestyping(3)

←back to thread

I'm absolutely right

(absolutelyright.lol)
648 points yoavfr | 59 comments | | HN request time: 1.427s | source | bottom
1. latexr ◴[] No.45138173[source]
As I opened the website, the “16” changed to “17”. This looked interesting, as if the data were being updated live just as I loaded the page. Alas, a refresh (and quick check in the Developer Tools) reveals it’s fake and always does the transition. It’s a cool effect, but feels like a dirty trick.
replies(6): >>45138194 #>>45138198 #>>45138206 #>>45138881 #>>45139583 #>>45146849 #
2. stuartjohnson12 ◴[] No.45138194[source]
It is fetching data from an API though - it's just the live updates that are a trick.
3. tantalor ◴[] No.45138198[source]
It's a dark pattern
replies(8): >>45138235 #>>45138298 #>>45138348 #>>45138605 #>>45138692 #>>45138986 #>>45139237 #>>45140033 #
4. yoavfr ◴[] No.45138206[source]
Sorry if that felt dirty - I thought about it as a signal that the data is live (it is!).
replies(8): >>45138841 #>>45139027 #>>45139532 #>>45139856 #>>45140986 #>>45141807 #>>45142113 #>>45151853 #
5. stuartjohnson12 ◴[] No.45138235[source]
You're absolutely right!
6. diggan ◴[] No.45138298[source]
Maybe I'm old or just wrong, but "dark pattern" for me means "intentionally misleading" which doesn't seem to be the case here, this is more of a "add liveliness so users can see it's not static data" with no intention of misleading, since it seems to be true that the data is actually dynamic.
replies(3): >>45138362 #>>45138576 #>>45147217 #
7. coldtea ◴[] No.45138348[source]
Nope.
replies(1): >>45138478 #
8. sjsdaiuasgdia ◴[] No.45138362{3}[source]
I wouldn't go so far as to call this specific implementation a dark pattern, but it is misleading. It suggests the data updated right when I loaded the page, which obviously isn't true as I can see the same 16->17 transition on a refresh.

I'd prefer a "Data last updated at <timestamp>" indicator somewhere. Now I know it's live data and I know how old the data is. Is it as cute / friendly / fun? Probably not. But it's definitely more precise and less misleading.

replies(2): >>45138712 #>>45139518 #
9. ◴[] No.45138478{3}[source]
10. ◴[] No.45138576{3}[source]
11. the_af ◴[] No.45138605[source]
> It's a dark pattern

No, a dark pattern is intentionally deceptive design meant to trick users into doing something (or prevent them from doing something else) they otherwise wouldn't. Examples: being misleading about confirmation/cancel buttons, hiding options to make them less pickable, being misleading about wording/options to make users buy something they otherwise wouldn't, being misleading about privacy, intentionally making opt in/out options confusing, etc.

None of it is the case here.

12. jstummbillig ◴[] No.45138692[source]
I am missing a victim
replies(4): >>45138786 #>>45138796 #>>45139533 #>>45139810 #
13. stronglikedan ◴[] No.45138712{4}[source]
the way the website has it implemented is better
replies(1): >>45139056 #
14. lemonberry ◴[] No.45138786{3}[source]
They're everywhere these days.
15. arduanika ◴[] No.45138796{3}[source]
Truth
16. pbaehr ◴[] No.45138841[source]
I think it's a perfect (and subtle) way to signal that refreshing is unnecessary to see the latest data without wasting UI space explicitly explaining it. It was my favorite thing about the UI and I will be borrowing it next time I design a real-time interface where the numbers matter more than the precise timing.
replies(2): >>45140512 #>>45147204 #
17. pessimizer ◴[] No.45138881[source]
Reminds me that the reason that loading spinners spin is so that you knew that the loading/system hadn't frozen. That was too hard (you actually had to program something that could understand that it had frozen), so it was just replaced everywhere with an animation that doesn't tell you anything and will spin until the sun burns out. Progress!
replies(3): >>45138988 #>>45140683 #>>45141943 #
18. pessimizer ◴[] No.45138986[source]
No, it's just the kind of dishonesty that people who create dark patterns start with. It's meant to give the believable impression that something that is not happening is happening, to people hopefully too ignorant to investigate.

Of course, in the tech industry, you can safely assume that anyone can detect your scam would happily be complicit in your scam. They wouldn't be employed otherwise.

-----

edit: the funniest part about this little inconsequential subdebate is that this is exactly the same as making a computer program a chirpy ass-kissing sycophant. It isn't the algorithms that are kissing your ass, it's the people who are marketing them that want to make you feel a friendship and loyalty that is nonexistent.

"Who's the victim?"

19. Wowfunhappy ◴[] No.45138988[source]
…although in many cases you kind of don’t have a choice here, right? If you’re waiting for some API to return data, there’s basically no way to know whether it has stalled. Presumably there will be a timeout, but if the timeout is broken for some reason, the spinner will just spin.
replies(1): >>45139252 #
20. chrismorgan ◴[] No.45139027[source]
API responses seem to be alternating between saying 19+20 and saying 0+0, at present.
21. sjsdaiuasgdia ◴[] No.45139056{5}[source]
That's your opinion. Mine differs.
22. zeroxfe ◴[] No.45139237[source]
jeez, this is a fun website, can't believe how quickly we're godwining here!
23. pessimizer ◴[] No.45139252{3}[source]
You can't figure out how to fix that? Does that problem seem impossible to you?

Maybe don't start an animation, and instead advance a spinner when a thing happens, and when an API doesn't come back, the thing doesn't get advanced?

replies(3): >>45139396 #>>45139942 #>>45141325 #
24. frotaur ◴[] No.45139396{4}[source]
Solve the halting problem to show accurate spinners
25. boredtofears ◴[] No.45139518{4}[source]
On that note, the font isn't symmetrical and the bar graph itself uses jagged lines. This makes it hard to read and much less precise. I'd prefer all websites in monospaced fonts with only the straightest of lines.
replies(1): >>45140540 #
26. scoopertrooper ◴[] No.45139532[source]
Weird the screen goes 18, 19, 21, then back to 18 and cycles again.

(On iPad Safari)

27. umanwizard ◴[] No.45139533{3}[source]
Deceiving someone and breaking their trust already counts as victimizing them, inherently, even if they suffer no other harm.
28. dominicrose ◴[] No.45139583[source]
I once found a "+1 subscriber" random notification on some page and asked the LinkedIn person who sent me the page to knock it off. It was obviously fake even before looking at the code for proof.

But there's self-advertised "Appeal to popularity" everywhere.

Have you noticed that every app on the play store asks you if you like it and only after you answer YES send you to the store to rate it? It's so standard that it would be weird not to use this trick.

replies(1): >>45141761 #
29. recursive ◴[] No.45139810{3}[source]
If I see it and get misled, I am the victim.
30. bmacho ◴[] No.45139856[source]
Do you happen to have a counter how many times people create a webpage for data, intentionally show fake data, and submit that to HN?
31. wrs ◴[] No.45139942{4}[source]
Long ago (I first remember doing it in about 1985 with the original Mac watch cursor) this was the standard way to do spinners: somewhere in your processing you incremented the spinner. It was hard to put the increments in the right places to keep the spinner going even when progress was happening, and nearly impossible to make it animate smoothly. This technique is even harder to get right when the processing in question is multithreaded, or if the spinner is part of the UI (as opposed to a cursor) so it has to trigger a redisplay to show up.

So programmers didn’t like it because it was complex, and designers didn’t like it because the animation was jerky.

As a result, the standard way now is to have an independent animation that you just turn on and off, which means you can’t tell if there’s actually any progress being made. Indeed, in modern MacOS, the wait cursor, aka beach ball, comes up if the program stops telling the system not to show it (that is, if it takes too long to process incoming system events). This is nice because it’s completely automatic, but as a result there’s no difference between showing that the program is busy doing something and that the program is permanently frozen.

replies(3): >>45141154 #>>45141639 #>>45147212 #
32. jamesnorden ◴[] No.45140033[source]
This has to be the most over/misused term in this whole website.
replies(1): >>45141033 #
33. CjHuber ◴[] No.45140512{3}[source]
really? it left a bad aftertaste for me
replies(1): >>45142743 #
34. sjsdaiuasgdia ◴[] No.45140540{5}[source]
Those are stylistic choices that don't really impact the ability to view the data and do not mislead like the fake data update on page load.

You're able to hover a bar to see its exact value. Very precise there. No misleading info.

35. gpm ◴[] No.45140683[source]
I've definitely had systems freeze badly enough that our modern dumb spinners stop spinning... so at least they're still some sort of signal.
36. Jordan-117 ◴[] No.45140986[source]
Might make more sense to start at zero and then rapidly scale to the current number? To indicate fresh data is being loaded in without making it look like the reader happened to catch a new occurrence in real-time.
replies(1): >>45157689 #
37. y-curious ◴[] No.45141033{3}[source]
You're absolutely right!
38. kevinventullo ◴[] No.45141154{5}[source]
What’s funny is the jerky animation actually communicates so much more than the smooth animation.
replies(1): >>45141588 #
39. Wowfunhappy ◴[] No.45141325{4}[source]
But if you expect the request to take some amount of time, how do you communicate that to the user?

Even if you don’t know the actual progress, the spinning cursor still provides useful information, namely “this is normal”.

Edit: Fwiw, I would agree with you if we were discussing progress bars as opposed to spinners. Fake progress bars suck.

40. wrs ◴[] No.45141588{6}[source]
Yeah, same with progress bars — especially the Windows Installer progress bar that goes backwards when it’s backing out after a failure!

Of course, progress bars based on increments have a whole other failure mode, the eternally 99% progress bar…

41. sthatipamala ◴[] No.45141639{5}[source]
In the context of the web, it is not feasible to make distributed systems 'tick' their progress just to have realistic progress spinners.
42. thoroughburro ◴[] No.45141761[source]
My bank app asks me to review it every time, and only when, I deposit money. It’s so transparent in its attempted manipulation: you just got some money and are likely to be in a better mood than other times you’re using the app!

Literally every deposit. Eventually, I’ll leave a 1-star nastygram review for treating me like an idiot. (It won’t matter and nothing will change.)

replies(2): >>45141913 #>>45144978 #
43. nartho ◴[] No.45141807[source]
Interestingly you're using long polling instead of WS or SSE, what was the reason behind that ?
replies(1): >>45146758 #
44. mwigdahl ◴[] No.45141913{3}[source]
It could also be that they really care that the experience of _sending_ them money is frictionless, but they don't care so much about other actions (such as withdrawals...)
replies(1): >>45142941 #
45. ehnto ◴[] No.45141943[source]
I worked on a system that did some calculations for a user after submitting a form. It took milliseconds to crunch the numbers. Users thought we were faking the data because it was "too fast", after enough complaints and bad reviews they added a fake loading bar delay, and people stopped complaining.
46. rendaw ◴[] No.45142113[source]
Probably brings up memories of travel sites saying "10 other people have this room in their cart"
47. jcul ◴[] No.45142743{4}[source]
It's not that it's a fake number. They are saying the number is real, just it goes to current_value - 1, and then current value to indicate the value is updating live.

Not sure if that was clear.

Edit: I don't know if it's a real number but that's the claim in the comment above at least

replies(1): >>45148379 #
48. thoroughburro ◴[] No.45142941{4}[source]
It could be, but having worked on big mobile apps before, I find that very generous interpretation to be much less likely than my interpretation.
49. latexr ◴[] No.45144978{3}[source]
> Eventually, I’ll leave a 1-star nastygram review for treating me like an idiot. (It won’t matter and nothing will change.)

If enough people give it 1 star with the same complaint, it might. After all, like you said they’re trying to manipulate you to a specific behaviour but if it has the opposite effect it’s in their best interest to reverse it.

50. efilife ◴[] No.45146758{3}[source]
I'd guess simplicity
51. tempodox ◴[] No.45146849[source]
Could it be this happens only in Chrome? In Safari I just see a zero that doesn’t change.
52. zestyping ◴[] No.45147204{3}[source]
It's a lie, though. When I see it, I know the interface is lying to me, and then I trust it less henceforth.

I'll never build a lie into my work. It's not worth it.

53. zestyping ◴[] No.45147212{5}[source]
You have a strange idea of what "right" means.

Showing a true reflection of the actual, irregular, progress is getting it right. It's honest and informative.

replies(1): >>45177728 #
54. zestyping ◴[] No.45147217{3}[source]
It is indeed misleading. It is showing an untruthful value, and an untruthful change in value, on purpose. A small lie, perhaps—but nonetheless a lie.
55. CjHuber ◴[] No.45148379{5}[source]
I understand, it’s not about the number itself. My first thought when I opened the page was wow there was a update coincidentally right when I opened it. When refreshing again I felt like wtf I was being mislead
replies(1): >>45173967 #
56. handsclean ◴[] No.45151853[source]
I think the problem is people’s priors. This isn’t the first time we’re seeing data fake-arrive like this, and virtually always it’s done either to fake liveness or to lie about rate of change. So, it comes to mean not “live”, but “fake”, even though nefarious motives don’t make much sense in this fun context.

It’s a shame, I think it’s a clever thought, and it doesn’t feel great when good intentions are met with an assumption of maliciousness.

57. lobsterthief ◴[] No.45157689{3}[source]
Would also be a fun way to animate the bar and animate the full being “sketched in”.

Love the design btw, very fun to build I imagine

58. jcul ◴[] No.45173967{6}[source]
Yeah true, I was suspicious about that too.
59. wrs ◴[] No.45177728{6}[source]
That’s exactly what I’m saying is hard to do when progress is being made on multiple threads.