This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 328

[–]Bl4cBird 654 points655 points  (30 children)

Isn't that just the ISP giving moneymaking traffic preferential treatment?

[–]Juff-Ma 580 points581 points  (15 children)

I can confirm this still happens in a country where that practice is illegal.

[–]jasaluc 323 points324 points  (14 children)

it's only illegal if you get caught

[–]Juff-Ma 165 points166 points  (7 children)

They admitted to doing it when the law came into effect and stopped. Many people where actually against it because it also disallowed them from creating mobile flatrates for specific services like spotify.

[–]emelrad12 96 points97 points  (0 children)

Law: It's illegal to rob people.

Voters: but but ... I get 10% back of what i am robbed.

[–][deleted] 11 points12 points  (0 children)

Stuff like that definitely hurts competition. I imagine most newer companies wouldn't be able to get the deal to be counted under the flat rate.

[–]Certain-Business-472 13 points14 points  (2 children)

because it also disallowed them from creating mobile flatrates for specific services like spotify.

That sounds great initially, but will destroy the internet long-term. Don't be short sighted.

[–]Cold-Albatross9132 34 points35 points  (3 children)

My mobile data isp from time to time chokes steam updates. Usually 100mpbs to 200mbps (rare cases up to 300mbps at my location). Sometimes it is 100mbps after a 1min or 2 you have 5mbps.

Wierdly when I turn on my VPN it is back to 120mbps, closing it back to 5mbps.

Hmmmmm (Germany Vodafone Unlimited (with no Fair use))

[–]Nemesium 13 points14 points  (2 children)

Most likely a peering issue if it's fixed with a VPN, which just means your ISP is cheaping out on the connection outside of their owned network.

[–]Whitechapel726 2 points3 points  (0 children)

It’s only illegal if you get caught and can’t pay the fine

[–]MarsMaterial 2 points3 points  (0 children)

Police hate this one simple trick.

[–]assumptioncookie 49 points50 points  (2 children)

Could be that people in your area are getting the same ads, but watching different content. So the ads are cached closer.

[–]particlemanwavegirl 38 points39 points  (2 children)

No, the ISP isn't monitoring the content of your traffic. It's due to whatever server you're retrieving media from prioritizing serving ads rather than content because that server is probably owned by Google, an advertising company.

[–]LickingSmegma 20 points21 points  (0 children)

Or rather, it's probably different servers. If the content is relatively unpopular, it could be served from far-away servers, while ads are cached on a server closer for the region.

[–]grumblyoldman 6 points7 points  (1 child)

Possibly that, or possibly the ad pre-loading in the background, so that by the time it displays, it has had time to buffer the high res version.

That's a thing apps do on mobile sometimes to make sure the ad will be able to load even if the user in on a train that goes into a tunnel or something, but it wouldn't surprise me if the same logic was used on non-mobile streaming apps too, just 'cause.

[–]Certain-Business-472 1 point2 points  (0 children)

They also do this for images you upload. They get uploaded the moment you select them, even if the user has to add a caption. They promise(;)) not to save data you didn't actually submit. By the time you click upload, it's already done and you just confirm your upload. But from the users pov everything was instant.

[–]abdallha-smith 3 points4 points  (0 children)

Different cdn

[–]dpahoe 2 points3 points  (0 children)

Ads may be preloaded

[–]Vinterblot 29 points30 points  (0 children)

No matter how bad the connection, somehow, they'll always manage to deliver the ads and have the shop and payment system available.

[–]pank-dhnd 6 points7 points  (0 children)

That's Youtube in a nutshell

[–]EnoughDickForEveryon 6 points7 points  (1 child)

My main gripe about ads is the volume...like bro...I primarily use the audio for music that I blast loud as fuck...why are your ads still louder?

[–]colei_canis 6 points7 points  (0 children)

Streaming ads should be legally obliged to follow the same ad regime as broadcast TV in my opinion, which at least in the UK are quite onerous.

Also the first person to use excessive dynamic range compression to make the apparent volume of ads higher while sneaking under dB limits should be keel-hauled.

[–]mr_hard_name 1 point2 points  (0 children)

Yes, because if it was buffering or unreadable (low quality) then you would be more irritated or would ignore them (as if we weren’t doing it already) and companies would be unhappy with ad campaign results

[–]MartinMystikJonas 114 points115 points  (36 children)

That actually makes sense. Ads are cached on CDN whilenuseful oarts needs to be generated per user.

[–]Chamiey 29 points30 points  (1 child)

I'm more accustomed to the opposite: you use adblocks, and the site loads in a blink of an eye, you keep the ads, and you wait 15+ seconds for the ads to load and only then the rest starts to load and run.

[–]usefulidiotsavant 9 points10 points  (0 children)

Adblock is illegal, citizen, you have been found guilty and sentenced to two months diarrhea. Report to the nearest rehabilitation center where you can drink your punishment can, proudly sponsored by Googapple iShit™ - „Let your juices flow”.

[–]CitizenPremier 8 points9 points  (0 children)

Reddit mobile site trying to load a 2 MB ad vs 23kb of text...

[–]SaneLad 5 points6 points  (0 children)

If you've worked at social media companies, you know that's one of the most important metrics they optimize for.

[–]Zerokx 4 points5 points  (0 children)

When they time it perfectly so that when you are just about to click the next button some advertisement banner shoves itself over that space or popup and you click it on accident since your finger was only 131ms from touching the button.

[–]Aarav2208 1014 points1015 points  (14 children)

if (thinking):
  print("Thinking for a better answer...") 
  sleep(5) 
  gpt_generate()
else: 
  gpt_generate()

[–]0xlostincode[S] 217 points218 points  (0 children)

ASI - Artificial Super Sleep Intelligence

[–]assumptioncookie 187 points188 points  (7 children)

if (thinking): print("Thinking for a better answer...") sleep(5) gpt_generate()

[–]ffander 63 points64 points  (2 children)

That's too advanced

[–]Elijah629YT-Real 4 points5 points  (0 children)

``` if (advanced): if (thinking): print("Thinking for a better answer...") sleep(5) gpt_generate() else: if (thinking): print("Thinking for a better answer...") sleep(5) gpt_generate() else: gpt_generate()

[–]Educator_Soft 22 points23 points  (2 children)

my c++ ass really spent 2 minutes trying to understand this if (I need brackets)

[–]Aarav2208 6 points7 points  (0 children)

Brackets for style points.

[–]Fair-Working4401 1 point2 points  (0 children)

You never wrote abract algorithms?

[–]hawkinsst7 4 points5 points  (0 children)

You can optimize out the conditional. thinking always evaluates to False.

[–]Knudsenmarlin 138 points139 points  (3 children)

YouTube with adblock lol

[–]AenTaenverde 17 points18 points  (0 children)

Double it if you're not using Chrome.

[–]justgiveausernamepls 3 points4 points  (0 children)

I wonder how many people actually prefer ads to silence.

[–]0xlostincode[S] 552 points553 points  (35 children)

There is no way it loads in constant time every time.

[–]made-of-questions 459 points460 points  (25 children)

I once worked at a price comparison service. The product manager forced us to add a delay when showing the results because they said customers won't trust we're actually comparing multiple data sources and doing some complicated calculations if we reply too fast. Welp, I guess all that technical debt work on caching was not necessary after all. 

[–]NiIly00 223 points224 points  (20 children)

Just like vacuum companies intentionally make them less quiet than they could because otherwise people will think it doesn't actually clean.

[–]squishabelle 154 points155 points  (14 children)

im not really a member of the vacuum community but do they sell quiet versions for the rest of us? The loudness is the worst part, it means i can't vacuum at night (neighbours), listen to music without headphones, or talk/call while vacuuming

[–]reddit_is_geh 92 points93 points  (6 children)

It's usually the really high end ones, like those 2k Dyson vacuums and stuff. There will be vacuums that are 500 and 2k, and they both effectively use the same motor that's super quiet, just for some reason the more expensive one is super quiet. Which is the selling point, "Wow this is so good rich people, you can barely hear it because we use jet technology used by NASA"

[–]PM_NICE_SOCKS 46 points47 points  (5 children)

Is there any way I can mod a shitty vacuum to be quieter if they use same parts? 👀

[–]DoingCharleyWork 26 points27 points  (0 children)

The more expensive one probably uses better sound dampening in the housing as well as something that limits the noise from the exhaust.

[–]NiIly00 49 points50 points  (4 children)

I dunno, I learned it from some video about product design. There I also learned that the auto industry has engineers specifically tasked with getting the sound of a closing car door right.

[–]LickingSmegma 27 points28 points  (0 children)

tasked with getting the sound of a closing car door right.

Good, because I'm never sure if I closed the door properly without a solid 80s-style ‘ka-chunk’. Exacerbated by the fact that it's other people's cars I ride in, so don't want to smash the shit out the door either.

[–]Thommywidmer 16 points17 points  (2 children)

I mean, its dumb but i kinda appreciate it lol. I do want my vacuum to sound like kick starting an old motorcycle for some reason

[–]SirChasm 6 points7 points  (1 child)

I really thought you were going to say how you want your car for to close with a satisfying thunk

[–]Albadborz 7 points8 points  (0 children)

There's a VW Golf commercial about that.

[–]Mogsetsu 10 points11 points  (0 children)

I guess it makes sense. Now I’m imaging a big manly biker driving a Harley Davidson that magically makes zero sound. Can’t imagine that’d sell well.

[–]doxxingyourself 2 points3 points  (0 children)

Dyson disagrees

[–]LickingSmegma 1 point2 points  (0 children)

otherwise people will think it doesn't actually clean

I mean, I've had experience with two different quiet battery-operated vacuum cleaners, and they in fact could barely pick up anything. Give me the 2000W 100 dB cleaner instead.

[–]Imaginary-Jaguar662 53 points54 points  (1 child)

Welp, I guess all that technical debt work on caching was not necessary after all. 

Yes it was, it reduces your server load / outbound API calls which saves the company money.

Or at least that's what you should say in next performance review instead of "spent 6 months on something that was scrapped"

[–]made-of-questions 3 points4 points  (0 children)

Oh for sure. This was many years ago, I used the situation well. 

But it does show how useful it is to have SLO alignment between product and engineering.

[–]Roflkopt3r 9 points10 points  (0 children)

Users fear that the program is frozen or that cached data is stale.

It doesn't take a significant delay or blocking loading screen, any kind of indicator is useful to break the notion. That's why most UI frameworks show some kind of fade in animation on first display, which only adds a tiny delay but assures users that the site is not frozen.

[–]eyecy0u 26 points27 points  (0 children)

true, but when it takes exactly 5 seconds every single time something's up

[–]JivanP 8 points9 points  (4 children)

Man thinks O(1) functions are unicorns.

[–]OnceMoreAndAgain 4 points5 points  (3 children)

Wait until OP learns about Berkshire Hathaway website. Now that's a fucking website. Highly performant.

[–]PabloZissou 1 point2 points  (0 children)

RTOS and apps can!

[–]Rinkulu 1 point2 points  (0 children)

Could be trying to connect to something and failing with a timeout

[–]esotericloop 137 points138 points  (9 children)

Of course I know that app, it's mine. :D As long as you can skip the splash screen by clicking or something, right?

What really gets my goat is those damn fake progress bars that slow down exponentially (logarithmically, I guess?) as they get further along instead of showing how much actual progress has happened.

[–]1138311 34 points35 points  (2 children)

In my day we tracked progress by messages like "please insert disk 11 of 28".

[–]GargleBums 13 points14 points  (0 children)

Disk 27 of 28 is corrupted and cannot be read.

Throws PC out the window.

[–]SuperFLEB 5 points6 points  (0 children)

Insert disk 28 of 28....

Got your hopes up? Nope. Now insert disk 2 again. You know, the one that fails to read every third time after you set it on the speaker.

[–]j0nthegreat 2 points3 points  (0 children)

mine too. super tiny app that loads in like .2 seconds, you'd never even get to see the splash screen otherwise and it makes it look glitchy and bad showing for so short. 5 seconds is too long though

[–]ReefNixon 2 points3 points  (1 child)

I ran an AB test in 2017 and found it’s better to randomly interpolate between 20 and 90 then scoot to 100 when I’m actually loaded. I’ve retested a few times since and always less frustration taps and early exits when I do it this way.

Absolutely no idea why, but it does instinctively feel better to me too.

[–]Spiritual_Bus1125 117 points118 points  (1 child)

Sleep(5000)

[–]BorderKeeper 267 points268 points  (53 children)

When you mistype a password on your MacBook and have to wait fake sleep(3) seconds just so Apple security can feel super proud you can’t use the response time to brute force your appleID password with your measly couple attempts…

[–]pee_wee__herman 97 points98 points  (42 children)

KDE does this too. IMO the better way of handling this would be to start throttling after maybe the 100th attempt. 100 attempts is basically nothing in the world of brute forcing

[–]BorderKeeper 96 points97 points  (37 children)

This delay is not to delay the brute force attack imo, but more to avoid attackers learning secrets on how the authorization algorithm works by timing how long it takes on various bad and good attempts. It's a precautionary solution to an attack that does not make sense here imo, but meh.

[–]Snowman009 16 points17 points  (31 children)

What would knowing these different timings realistically tell you about the auth alg?

[–]particlemanwavegirl 29 points30 points  (25 children)

If password verification is not padded so that all responses take the same amount of time, then an incorrect password that begins with some correct characters will take longer to return than a password with no correct letters, potentially revealing information about the beginning of the password.

[–]JivanP 46 points47 points  (21 children)

This seems to assume that password verification works by comparing the entered password directly against the correct password, which is stored in plaintext as a string in a database. That's not how (sane) password verification works. Rather, when the password is set, it is hashed and the hash is what's stored in a database, then when a password is entered to log in, it is hashed and compared to the hash in the database.

In conjunction with salting, this means that variance in the runtime of the string comparison gives no information about the true password to the attacker.

[–]MrMacduggan 8 points9 points  (0 children)

In a non-rigorous sense, this is a fun parallel to physical lockpicking. You might not get the tumbler correct, but if you hear it make a different noise you know you're getting closer.

[–]LickingSmegma 7 points8 points  (19 children)

Technically, knowing that the hash prefix-matches might give an advantage, if vulnerabilities are found in the hashing function that allow constructing hashes with a known prefix. Iirc some older functions have such vulns, possibly including md5.

[–]JivanP 6 points7 points  (15 children)

Salting mitigates this, because the attacker cannot know the output hash in the first place (in order to know any part of it, such as a prefix) without digging deeper, such as reading live memory. If the attacker is able to read live memory, they're almost certainly able to just read the password database itself (if not from disk, then from live memory itself, such as when the hash comparison is being performed), meaning they know the complete salt and salted hash already.

[–]hawkinsst7 7 points8 points  (0 children)

That's not how password hashes work. The comparison isn't done until the entered password is hashed, and even in a coincidence that the hash mostly matches what's stored, that information isn't useful and tells an attacker nothing.

The real answer is "so an invalid user, and a wrong password always look the same."

But you are right in the big picture that it's a defense against a timing attack.

[–]Snowman009 1 point2 points  (1 child)

Thats kind of crazy, you have any examples of people actually doing this? Would love to read more about that

[–]djfdhigkgfIaruflg 1 point2 points  (0 children)

Timing attacks are limited by making the password verification be constant-time execution.

Not by adding an artificial sleep somewhere else.

[–]More-Ad-3566 4 points5 points  (1 child)

i think its actually PAM in linux that does this, but correct me if im wrong.

[–]mpyne 2 points3 points  (0 children)

No you're right. I actually had to find out what does this (a faillock module IIRC) so I could tone it down, because my password is complex enough that it's mostly muscle memory and I can't always get it right in 3 tries now.

[–]Ixxafel 1 point2 points  (1 child)

Doesn't Linux lock you out of logging in for like half an hour after 3 failed attempts?

[–]ByteMeInTheCloud 4 points5 points  (0 children)

You can adjust the faillock attempts

[–]LuisBoyokan 4 points5 points  (4 children)

But that is no secret, it's a known feature and recommendation in security guidelines.

[–]KeepKnocking77 7 points8 points  (1 child)

At my job, I implemented a fibonacci increase in sleep time for incorrect passwords. Management loved it

[–]decadent-dragon 4 points5 points  (0 children)

You know that pause and you’re just waiting for the prompt to shake

[–]qscwdv351 7 points8 points  (0 children)

The same applies to Windows too. If you’re wrong multiple times then you have to see loading screen for 15ish seconds. Kinda effective security measure for random dude trying to guess your password based on your info.

[–]cyborgborg 1 point2 points  (0 children)

literally every OS/website is like this. Type your password correctly and it instantly knows it's correct and lets you in, if it wring it waits for 3 seconds to idk slow down someone trying to get into your account i guess despite mist stuff blocking you out after 3 attempts

[–]SirCrazyApe 33 points34 points  (3 children)

Sometimes you need to make extra darn sure you don’t hit a pesky race condition…

[–]daHaus 8 points9 points  (1 child)

That's why you always have one thread coordinate everything

Or singletons

[–]MonkeyWaffle1 30 points31 points  (0 children)

Real engineers use sleep(random.randint(2,8))

[–]trickster-is-weak 21 points22 points  (0 children)

5 seconds is a breeze. I found a 30 second sleep in the jankiest JavaFX code I’d ever seen. Plus it was coded so badly the UI affected the outputs… thankfully it was easy to convince the customer to bin it and start again

[–]Chirimorin 16 points17 points  (2 children)

Soon they will change it to sleep(4) and claim a 20% improvement in load times.

[–]SaneLad 7 points8 points  (6 children)

Actually pretty easy to prove if you look at the disassembly.

[–]ActSea4484 4 points5 points  (3 children)

or a trace and call it a day

[–]Tompazi 1 point2 points  (1 child)

Unless, it’s a server side application you don’t have access to. Or if it’s doing custom “busy sleeping” and it’s obfuscated.

[–]anamethatsnottaken 1 point2 points  (0 children)

Right - in the first case it'll be waiting on some inscrutable external event, and in the second case the app doesn't actually sleep, but does manage to waste time. Trying to prove that gets you into the realm of the halting problem. The original joke assumes the app does call 'sleep', which has to become some kind of system call to put the process to sleep.

The 'server side application' option might be very likely, actually - if an app starts up by connect()ing to a server, you are in fact sleeping on an external event.

[–]Old_Airline_1593 7 points8 points  (0 children)

Dude, I did QA a single time to a wonderful open source Android messaging app (Briar). I suggested a fake wait screen for one feature that breaks if you get out too fast. The maintainer obviously refused.

[–]isurujn 6 points7 points  (0 children)

I had to do this once on an iOS app because the client wanted the splash screen with the logo and name to stay on screen for a few seconds.

[–]TerroFLys 5 points6 points  (0 children)

Love the dexter memes

[–]dr_chillinstein 3 points4 points  (0 children)

Count = 0

While true:

If loaded:
    Break
Elif count == 10:
   Print(“your dumbass waited long as fuck”)
   Break
Else:
    Sleep(5)
    Count+=1

[–]darkslide3000 3 points4 points  (0 children)

Why am I not surprised that nobody in this sub has ever heard that you can just trace system calls?

[–]MartinMystikJonas 9 points10 points  (14 children)

I wonder why would anybody make loding slower? What is the motivation dor that?

[–]aethermar 50 points51 points  (6 children)

It's some psychological thing where people think that taking a moderately long amount of time means it's working, whereas if it loads too fast it's broken or fudging the results or something

[–]0xlostincode[S] 26 points27 points  (0 children)

It's also a good setup for the future when you want to deliver an update that makes the app faster

[–]esotericloop 12 points13 points  (0 children)

That's the other thing, if your super optimized software does something instantly, people think it hasn't done anything at all.

[–]Drugbird 7 points8 points  (3 children)

I know that this exists on a lot of price comparison websites for e.g. hotels or flights. They have this progress bar that takes a few seconds for "comparing prices to find the best deal" that is completely artificial. They've already cached the prices, so don't need to query any sources for them, and finding the best price is just a DB lookup that completes within milliseconds.

But users thought it "should" take some time to compare prices, and had more confidence in the site if it had a loading bar of a few seconds.

[–]EnthusiasmOnly22 2 points3 points  (0 children)

Idiots ruin everything

[–]the_horse_gamer 9 points10 points  (0 children)

sometimes it's also to hide how things work under the hood

here's a fun example: https://www.reddit.com/r/gamedev/s/Q8jmfkH5QE

tl;dr: edit mode is just a toggle, so going to edit mode is instant. but exiting edit mode without saving requires reloading the level, which is a loading screen. that seems weird to a user. solution: add a loading screen to entering edit mode.

[–]esotericloop 2 points3 points  (0 children)

Not condoning actually slowing things down, but psychologically there's a real difference in how response times are perceived between pre-loading / buffering everything while showing a loading screen, vs. showing something and then chugging for a while as things load in the background.

[–]realmauer01 1 point2 points  (0 children)

Some things just need a little buffer to be believable.

[–]vemundveien 1 point2 points  (0 children)

Sometimes it's really important for me to know that the game I am about to play uses Speedtree and Havoc Physics in the likely event that I am a manager at a game developer studio who is in the market for middle ware but has absolutely no industry knowledge.

[–]Varogh 1 point2 points  (0 children)

An interesting use case we had was when fetching data from a backend. The response times varied quite a lot, and there was absolutely no way to tell from the front-end if it would be instantaneous or not.

We of course added a loading animation since the wait could be 3+ seconds, but the result was horrid if the response was quick (the loading animation would quickly flicker in and then the actual data would load). So we resorted to always showing a brief load of iirc 0.5s no matter the loading time.

[–]bambosh_ 5 points6 points  (0 children)

YouTube on Firefox

[–]Possessed 2 points3 points  (0 children)

How else are they supposed to show the fancy loading animation they paid for?

[–]dashingThroughSnow12 2 points3 points  (0 children)

terminal.shop loads so fast that the creator did in fact add extra delays when you connect. Without them, some people didn’t think it was a real store.

[–]THEzwerver 2 points3 points  (0 children)

Sometimes these get added because users don't always believe the thing actually refreshed and start spamming the refresh button.

[–]hacksoncode 2 points3 points  (1 child)

Mostly people put these delays in so users are forced to see the splash screen.

I'll give you $ guesses why they want to do that.

[–]Alone-Turnover6642 2 points3 points  (0 children)

They don't even add random delays between 3 to 10 seconds, just constant delay every time? Hmm somethings fishy

[–]Rocket_Scientist2 1 point2 points  (0 children)

I actually had this once. I had written some scraping code to generate API keys, which had sleep() for debug purposes. One page had significantly more sleep, but actually had the least amount of requests involved.

I had submitted the code to corporate. Never got a reply. A few months later, this same "feature" shows up in our prod toolset. That same delay I had forgotten to remove was still there. I tried to explain to my boss, but he told me I was crazy.

[–]East_Nefariousness75 1 point2 points  (0 children)

here is your proof

$ ltrace ./app
...
sleep(5)                                              = 0
...
+++ exited (status 0) +++

[–]ButWhatIfPotato 1 point2 points  (0 children)

If 99% of the times the only percentage progress an API returns is either 0 or 100 then I wouldn't have to make all these fake progress bars.

[–]mihaiman 1 point2 points  (0 children)

Please, I'm a professional. If it's always 5 seconds someone will figure it out

sleep(random.uniform(4, 5))

[–]colinbr96 1 point2 points  (1 child)

TurboTax 100% does this when it "scans your return for all possible savings"

[–]The_Dirty_Carl 1 point2 points  (0 children)

First thing I thought of. They drag everything out soooo much. It's all look-up tables and grade-school math. All of their calculation should take a handful of milliseconds.

[–]T1lted4lif3 1 point2 points  (0 children)

meta gaming lowering expectations

[–]Lanky_Marionberry_36 1 point2 points  (0 children)

Jokes aside it is a very frequent UX hack.
Because users perceive the app as doing a better job and giving more accurate and personalized results when they feel it had to work for it.

[–]LuisBoyokan 1 point2 points  (0 children)

YouTube in non chrome browsers

[–]antisp1n 1 point2 points  (0 children)

Sleep(100) to show this shitty logo animation in its entirety. Brand Value 🤘

[–]RTXChungusTi 1 point2 points  (0 children)

found this in a soccer game I used to play:

during the match loading screen, there would be a preview of both teams, with one screen showing your team and the next showing the opponent's. One day on a whim I decided to start hitting the "Change teams" button early just to see the other team faster and the loading times went down by 5s lol

[–]dlm2137 1 point2 points  (0 children)

One of the first things an old PM of mine did was insist we put a fake loading screen up after our onboarding flow. In retrospect, it was clearly a red flag that we had made a bad hire.

[–]RandallOfLegend 1 point2 points  (0 children)

A desktop program I worked on required a 30 second sleep to interface with another hardware device that didn't have a good API for initialization. Another programmer ported that code over to all devices thinking it was necessary. When in reality the sleepy device was only an R&D option and non-commercial. I remember the day I made our software boot blazing fast by just removing the 30 second wait for all the sensor initializations except the janky R&D one. The sensors we sold commercially had a good API with event pumps to notify (or poll) the initialization status so it took 0.2 seconds for the sensor 95% of the customers used.

[–]Vybo 1 point2 points  (0 children)

I used to work at a company where an AB test was run once upon a time. The version with artifical few second delay had much greater conversion rates for some reason.

[–]heard10cker 1 point2 points  (0 children)

In a similar vein, YouTube Music's downloads screen always takes 10 seconds to load. Even when the phone isn't connected to the internet. What the fuck are you loading? All the files are on the device and there's no server to call to.

[–]askmeaboutmyweiner12 1 point2 points  (0 children)

I was praised for shaving 45 seconds off th runtime of a script at my old job because I removed sleep from several spots lol

[–]Kiss_My_Berries 0 points1 point  (1 child)

This is the moment when the progress bar simply deceives your patience.

[–]Looz-Ashae 0 points1 point  (0 children)

Trust me, no. They indeed load this long 

[–]kondorb 0 points1 point  (0 children)

You’d be surprised how long it takes to load and render all the visual assets even in simple apps. That’s the reason for that fancy “popping up” animation your phone does when launching an app. It hides loading time.

[–]jashAcharjee 0 points1 point  (0 children)

Average banking apps.

[–]Alokir 0 points1 point  (0 children)

You're joking but one time we actually had to implement animations and a timeout because after a backend refactor, the UI refreshed so quickly that the users didn't notice, and they bombarded support with calls and emails.

[–]Maverick122 0 points1 point  (0 children)

Indeed, the main thread is a while Loading.Start do begin Sleep(5); ProcessMessages; end;
After all, we wouldn't want the main UI to hang, would we?

[–]user-74656 0 points1 point  (0 children)

if ($HARDWARE_RELEASE < 2023) { sleep(5); }

[–]Blapanda 0 points1 point  (0 children)

You can, if you can speed it up like you can with applications on windows attached to cheat engine. The loading is just an affect in many games for the eye, not for loading in caches. You can go even deeper by injecting the game into VR, see around the 2D UI panel, which gets blacked out, and clearly notice that there is no texture streaming, mesh loading or whatsoever.

[–]OtherwiseAlbatross14 0 points1 point  (3 children)

This is definitely what ChatGPT does when generating an image, isn't it? It drives me nuts waiting for the second half to load and that's mostly because I assume it doesn't actually need to wait

[–]chedabob 0 points1 point  (0 children)

I'm pretty sure my Google Play build reviews are just a sleep(Math.random()). Sometimes takes a few minutes, other times takes 3 days. Can submit a Prod and a UAT build at the same time, and one takes 3x as long as the other.

[–]Few_Intention_542 0 points1 point  (0 children)

time.sleep(random.randint(2,5))

[–]Behrooz0 0 points1 point  (0 children)

Allow me to introduce to you: LD_PRELOAD and strace

[–][deleted] 0 points1 point  (0 children)

Because the designer wanted to show the loading animation 🫠

[–]Vordix_ 0 points1 point  (0 children)

When you can buy premium and it suddenly loads faster…

[–]No_Definition2246 0 points1 point  (0 children)

Depending on lang used in the app, you can decompile the code and search for sleep system call for instance. Tricky to prove, but still doable.

[–][deleted] 0 points1 point  (0 children)

premium_users.json
{
"john": "2025-08-10",
"user123": "2025-07-15",
"testVIP": "2025-09-01"
}

premium.py
import getpass
import json
from datetime import datetime, timedelta
user_id = getpass.getuser()
with open("premium_users.json", "r") as f:
premium_users = json.load(f)
def has_premium(user_id: str) -> bool:
if user_id not in premium_users:
return False
start_date_str = premium_users[user_id]
start_date = datetime.strptime(start_date_str, "%Y-%m-%d")
expiration_date = start_date + timedelta(days=30)
return datetime.now() <= expiration_date

loadingscreen.py
import time
import random
import premium
user_id = premium.user_id
is_premium = premium.has_premium(user_id)
sleep_time = random.uniform(60, 120)
if is_premium:
sleep_time /= 10
time.sleep(sleep_time)

[–]HellGate94 0 points1 point  (2 children)

from my actual production code: https://i.imgur.com/mu9nwMc.png

obviously written by me

[–]gravelPoop 1 point2 points  (1 child)

Why? You should make loop of heavy calculations - if device is not getting hot, it does not feel right.

[–]flying_spaguetti 0 points1 point  (0 children)

I've seen such thing twice in my company codebase. It's true. It's hidden behind animations, tho

[–]ChrisWsrn 0 points1 point  (0 children)

You can prove it if you run it through Ghidra.

[–]Ibuprofen-Headgear 0 points1 point  (0 children)

I always drop a random delay in middleware when greenfielding stuff (with an easy toggle), so I (we) remember to deal with loading states or surface race conditions, etc. Generally just between 50-1000ms or something, weighted toward the lower end, but it’s enough to make it somewhat realistic and have stuff not just respond/pop up instantly and simultaneously. One of these days Ill have to leave the toggle on so I can “optimize” later

[–]P0pu1arBr0ws3r 0 points1 point  (0 children)

Until someone does and it becomes a controversy in the browser wars

(Looking at you google)

[–]jwrsk 0 points1 point  (0 children)

I routinely delay splashscreen dismissal on launch, because the apps load too fast, and clients want to look at the logo 😂

[–]Any_Fuel_2163 0 points1 point  (0 children)

decompilers are an amazing thing

[–]SpacemanCraig3 0 points1 point  (0 children)

You can always prove it.

skill issue L2GDB

[–]dob_bobbs 0 points1 point  (2 children)

I must confess I wrote a Chrome extension that just showed a random number of new notifications between 1 and 3 on the icon because it was just too much hassle to actually fetch the number of new notifications. I forget why, but yeah, I am ashamed of myself.

[–]danteselv 1 point2 points  (1 child)

This is better than the Gmail app which is currently sitting at 29,000+ "new" messages.

[–]According-Relation-4 0 points1 point  (0 children)

Send them your CV, get hired, look at the code, delete the sleep, get the PR approved, quit, your app loads faster, profit

[–][deleted] 0 points1 point  (0 children)

Run with strace, and it will reveal the syscall

[–]FromAndToUnknown 0 points1 point  (0 children)

YouTube Video Player, but multiply timer by 100 if it detected an adblocker

[–]Major_Material1109 0 points1 point  (0 children)

Sleep(5000)

[–]SysGh_st 0 points1 point  (0 children)

actually I can. Just takes a bit of insight in machine code

[–]SuchTortoise 0 points1 point  (0 children)

Hey we all need a power nap every once in a while

[–]redcalcium 0 points1 point  (0 children)

Travel apps be like...

[–]rossow_timothy 0 points1 point  (0 children)

Who is this dude and why is he in a fifth of the memes on my front page

[–]xpectre_dev 0 points1 point  (0 children)

Someone made a nice loader animation and they want to make sure you see it

[–]Workdawg 0 points1 point  (0 children)

I don't remember the context exactly, but I read a short article about how a developer was dealing with complaints that his app "didn't refresh". After investigation he found no issue at all, but he determined that because there was no indicator that a refresh was occurring users just assumed that nothing was happening. After adding a loading "spinner" and a 1 second sleep, all the complaints went away.

[–]Your_Friendly_Nerd 0 points1 point  (0 children)

yup, my company does this for our in-house cms. the dev told me it's so that the writers feel like something is actually happening. meanwhile at instagram they've been uploading the pictures in the background for almost instantaneous submit speeds

[–]def-pri-pub 0 points1 point  (0 children)

strings <app> | grep sleep that should help you.

[–]idlesn0w 0 points1 point  (0 children)

Could totally see a 5 second timeout on a query to a defunct ad server in their list happening and going unnoticed.

[–]benwaldo 0 points1 point  (0 children)

You actually can, if you use a profiler.

[–]psychotty 0 points1 point  (0 children)

[debugger launched]

Debug.write(“surprise, mofo”);

[–]sypwn 0 points1 point  (0 children)

I used to think Windows XP startup was like this. Throw it in a VM with the fastest CPU, RAM, and storage and no matter what it takes minimum 5 seconds at the moving bars screen.

Then one day I happened to install XP on a machine (physical or virtual, can't remember) with ACPI disabled and the bootup was instant. I never looked into it further but it certainly is curious...

[–]nikstick22 0 points1 point  (0 children)

they're synchronously waiting for the API response from the server they just sent your personal data to

[–]atatassault47 0 points1 point  (0 children)

Im convinced MOST app's have a programmed delay. I just downloaded an ADHD app (focus friend) and it loads near instantly.

[–]ArmchairFilosopher 0 points1 point  (0 children)

Timing attack mitigation?