Just how fast is too fast when it comes to web requests?
rachelbythebay.com
rachelbythebay.com
Which will most likely show non-bookable outdated prices more often... there's always a trade-off. There might also be some browser/geo profiling going on.
Why do you assert that?
However, I'm not sure they really changed the engine underneath, and it was always designed as something that then was input to booking sites, often with filters on fares, because QPX (the engine) would show you fares that an agent with full view of GDSes would see - and sometimes the airlines don't want to sell certain fares (it already filtered the special unsellable ones of course, but it couldn't apply arbitrary policy decisions from airlines).
But maybe the landscape of airline booking/pricing has changed since I got this impression.
This problem is largely due to the closed and archaic nature of the GDS systems that are the source of truth. These systems have been running for 40+ years and no one wants to touch them to make substantive changes. As a result, modernisation is attempted via layers on top of layers that just add complexity confusion.
There is a difficult routing and fare calculation problem here, coupled with a distributed consensus problem. While better solutions to this exist or may exist, the biggest hurdles are the organisational ones.
I'm pretty sure jdc was talking about this research, not the specific implementation.
As an aside, I'm also suspicious of research that shows ~100ms as the threshold for "instantaneous" action, because in video games like FPS shooters most players seem to dislike playing on ping that high.
Even locally, FPS games can reach upwards of 100ms latency locally even before hitting the network, so 100ms ping is more like 100+100=200ms of latency. http://renderingpipeline.com/2013/09/measuring-input-latency...
Additionally, we're extra sensitive to things like latency between a tablet pen drawing and it's stroke appearing, or rendering lagging behind VR HMD rotation, or audio latency if we're trying to jam. Even if we register ~100ms as "instantaneous" in a lot of scenarios, it can still cause troubling disconnects between action and result.
John Carmack on VR HMD latency: https://danluu.com/latency-mitigation/
John Carmack noting that depressing a 360 gamepad trigger can take 20ms: https://twitter.com/id_aa_carmack/status/233240260568551425
A Microsoft Research video on tablet input latency, where the effects of 100ms vs 1ms latency are clearly visible: https://www.youtube.com/watch?v=vOvQCPLkPt4
Which makes ethics even more difficult.
I prefer things to be instantaneous. Slowness suggests it's been cobbled together by incompetents.
It's been a long time since I worked there but there was generally strong opposition to masking any delays.
That said it's frequently necessary to retrieve the latest fare quotes from the airlines (which involves network calls naturally), so that the user doesn't end up clicking through to wildly different pricing/availability -- but departure/arrival/carrier information about flights should generally be displayed without delay (unless things have changed - glad to see an example if so!).
We could get a Sub 300ms Response and Rendered, but if those results were not good, it would be seen as fast but inaccurate. No one complain about Google Results in its early days, it was fast, and comparatively accurate.
There is also a problem of varying response time, in ideal condition, all query and searches should be returned in roughly the same amount of time, that is because user do not understand there is a different in query complexity, to them all query are the same.
Without some sort of animation, user will be surprised to see their work being served and done without them really knowing and noticing, that could be both good and bad in different situations. ( Read Safari Rendering Progress Bar )
If you open your browser's Network panel in dev tools and vote on something, you'll see that it sends a request, gets back a 302 redirect, and then does another request to load a whole new copy of the page you were voting from in the background (and then just discards it). At least from my location, it consistently takes about 1.2 seconds for each vote to finish, even though it feels instant while using the site.
One consequence of this is that if you vote on multiple comments quickly, some of your votes are probably being lost with no indication. If you try to vote on something else before the first vote has fully finished, the second one gets a 503 error, but there's no indication of this at all.
It happens to me often - I read a good reply comment, vote it up, and then immediately vote up its parent (which I've already read) as well, since it resulted in that good comment. If I come back to the page later I'll notice that my vote on the parent didn't go through, and if you open the Network panel and try this, you'll see it - the second vote 503s if your second click was before the first one finished, but the site acts the same whether it failed or not.
'dang, is there any chance this gets improved?
He didn't consider it an issue worth fixing, and didn't reply to my long follow-up email trying to explain how wasteful and inefficient the current voting process is and how simple it would be to improve. It seems unlikely to change.
The result was that it turned into a chat, so we had to add a "fake delay" for people to treat is as a serious comment system.
You can infer from there that anything around/under 100ms will feel like direct manipulatio, interpreted by the person in the post as 'no request was sent to the server'. The same interpretation might not result from a non-technical person, it will just feel 'different' or they won't notice what happened and submit it multiple times, if there is no success message.
You can also trace it back to one of their 10 heuristics: visibility of system status. If users cannot perceive a change because it happened too fast, the UI has failed and users don't know what happened. One of the reasons some websites add artificial delays, as mentioned in other comments, is not only to signify 'work' being done, but that flashing a spinner for a split second is also a bad experience. You're better off normalizing every action to take at-least-one-second, and ensuring the state of the system is always clear.
Hardcoded delays are especially prevalent in systems which attempt to emulate a human operator, such as virtual assistants which are starting to replace human live chat agents. The excuse is always UX related. Progressive disclosure is cited a /lot/. Apparently users get a better experience when systems pretend to be human and respond slowly, so we would hardcode delays which were a function of the length of the response message.
Speed is one of the most important properties of exceptional user experiences.
I'm building a developer tool and I'm ruthlessly optimizing for speed. Waiting 20ms for a CLI command versus 100-300 is a huge difference.
In some cases the confusion comes from a "did this do any work at all" question. like git branching compared to svn for big projects. As other have brought up, instantaneous reply in airline comparison sites can cause concern of how deep the search was.
A similar paradox is with psychiatrist hourly rates or the placebo effect. The high price (delay) is part of the therapy (interface).
Alternatives would include: results speaking for themselves, or saying something like "Searched all 124,568,902 connections", or otherwise reaffirming users the work has been done without making them pay for it with time.
The reverse can be used in an UI to tell the user that something went wrong, for example in a window pull-down menu, don't hide the menu right away, do what the user request, then hide the menu, so if it the request didn't complete, the menu will still be visible.
Right before it kicks off the call to the server, it lights up something to say "Submitting feedback", and as soon as it finishes, it flips that to "Feedback saved" (which now has a time attached).
Odds are, most people have never actually noticed the first message, since it is quickly replaced with the second.
The messages appear just to the left of the button which was just clicked (and right under the text field). So, in theory, it's right by where your eyes are looking anyway.
But, here we are.
Is there a best practice here? At which point do you stop showing a splash screen? I've seen applications where the splash screen lingers even after the UI is loaded, which seems weird to me and gets in the way of getting things done.
https://uxdesign.cc/what-you-should-know-about-skeleton-scre...
I’d read some article about how if you respond too quickly, users can begin to doubt that any work is really being performed, and I’ve experienced that feeling a handful of times over the years myself.
Anyway, I asked the speaker that and everyone just kind of laughed, which it does seem a little absurd on the face of it.
I guess it’s also pretty far from most peoples minds given the web is caked in unnecessary bloat a lot of the time :)
There’s different values and tons of articles about this so I’ll just link a random one. I don’t know if there are formal studies on it but I fully believe in the idea that there is a magic “instantaneous” feeling threshold, just from personal experience, especially with tweaking animation delays.
https://www.nngroup.com/articles/response-times-3-important-...
I can't remember the last time I saw a spinner that actually showed some kind of variable behavior. If you have that, it's more likely you are being shown a progress bar.
A static loading message is exactly the same, while the message is on the screen the request is still pending and while it is gone it is not. The only case you are not catching is where the browser locks up and becomes unable to render the spinning which is not that common or useful.
According to Google that would be around 100ms.
> Guidelines:
> Process user input events within 50ms to ensure a visible response within 100ms, otherwise the connection between action and reaction is broken. This applies to most inputs, such as clicking buttons, toggling form controls, or starting animations. This does not apply to touch drags or scrolls.
https://developers.google.com/web/fundamentals/performance/r...
"Sent X" or "Finished Y!" is sufficient to distinguish a failed ajax call from a successful button press
I remember some years ago when Ubuntu file sync would pop a notification every time a file was synced. That's a good example of what not to do.
UIs in games have this solved in countless of ways.
It might not be fancy but it's simple and helps.
Am I the only one surprised by this 50ms ping? I can reach cloud servers in the SF Bay Area from Paris in 50ms - and I'm on wifi. Surely SFO-TX should take much less time..?
https://www.wolframalpha.com/input/?i=paris+to+san+francisco...
On the topic of websites taking a long time to compute something, Wolfram Alpha is slow. I wonder if any of that slowness is artificial like flight price websites.
“Are we to believe that boiling water soaks into a grit faster in your kitchen than on any place on the face of the earth?”
It’s simply Occam’s Razor. Which is more likely in 2019: a webpage is fast, or a webpage has a JavaScript bug?
I may not be working on real-time systems at the moment, but I’ve had enough exposure to them in the past that I’d like to scratch that itch.
For dealing with timestamps reliably on the client, we'll just instantiate all dates based on server time instead.
* at least in FF it has been rolled back to 1ms resolution due to privacy/fingerprinting concerns
"I didn't get any 503 codes forcing me to click send a few times, this comment obviously didn't get through"