
38 People are looking at this post right now - joeyespo
https://twitter.com/OphirHarpaz/status/1184486445039411201
======
boulos
The Twitter thread pointed to a BBC article [1] that certainly suggests that
the UK’s regulators don’t think this is okay. I’ve found that Booking.com
legitimately treats independent rooms as “only one left” (e.g., the B&B has
named rooms, so there’s _always_ just one of a kind for each) but I suspect
any investigation into most of these sites leads to “this is full of
misleading dark patterns”.

[1]
[https://www.bbc.com/news/technology-49740143](https://www.bbc.com/news/technology-49740143)

~~~
Insanity
Booking.com is horrible to use in my opinion. It is handy but you need to
ignore the dark patterns on every. Single. Page.

Honestly it makes me want to use the website less, and does not urge me to
buy.

~~~
djsumdog
Last time I had a phone screening with the, I learned their entire codebase
was in Perl, with no plans on migration to anything else. There were almost no
unit tests anywhere. Most developers could push directly to production.

Everything the girl on the phone said was horrifying and I decided not to
continue. Their recruiter kept trying to call me over Skype though, and they
offer more than most other companies of that size in the EU, so I suspect
they're pretty desperate.

This was back in 2015 so maybe it's changed, but it sounds like a terrible
place as far as technology and tech debt goes.

~~~
kbenson
> their entire codebase was in Perl, with no plans on migration to anything
> else. There were almost no unit tests anywhere. Most developers could push
> directly to production.

One of these things is not like the others. Not liking Perl is a valid
personal choice, but doesn't say much about the codebase. The others are
telling though. More so if it's true given that Perl has a very heavy culture
of testing (the TAP protocol comes from Perl, and Perl is known for being very
test heavy in its module ecossytem), which means they would be going against
that culture to have no unit tests.

That said, I'm not sure if we should consider "the girl on the phone" doing
the screening as knowledgeable about the process. That description doesn't
convey that you thought very highly of her, so I'm not sure why we should take
her word as authoritative...

~~~
riffraff
The third hand knowledge I have of booking.com was that lack of unit tests was
an explicit choice. I.e. they felt it was more efficient to just catch bugs in
production and be quick to fix them than spend time in unit tests that got
obsolete fast and add friction.

I didn't buy in the narrative, but it was an interesting perspective.

~~~
kbenson
I agree, that sounds like management being afraid to deal with the technical
debt they've accrued.

------
DavidSJ
A while back I was working at a web startup (since folded), and management
decided they wanted to inflate the usage numbers reported on the home page.

I was asked to write the code for it. I refused, telling my boss that I didn’t
want to lie to our users. He said, “it’s not for them, it’s for the board.”
“So we’re lying to the board, then?” I asked. He dropped it, and the task fell
to another engineer.

The first version was deployed, with one slight oversight: he forgot to round
the number the algorithm generated, so the home page displayed something like
“157,311.18461947940563848871625 active users this month!” The bug was quickly
rectified.

~~~
Eli_P
I'd pitch that to the board like the algorithm was just smart enough to detect
the partial activity coefficient ranging in [0, 1].

------
poisonborz
So some manager came up with this, tasked a PO, who tasked a team, and a
frontend developer implemented it - and in this chain, in the end, everyone
complied. I know it's not like murder, but especially in a field where it's so
easy to hop into another job/project, one should have greater integrity.

~~~
matz1
Can't assume they don't have integrity. They might just have different moral
values.

I would gladly implement this any day. Its not illegal.

~~~
ben509
> They might just have different moral values.

This is why "values" is a terrible word to use to describe morals.

Values are subjective things like modesty or frugality. Those are values,
because how you dress or spend your money generally have consequences only to
yourself.

Something becomes immoral when it deprives another person of their inalienable
rights; it causes them harm. Others' rights aren't subject to negotiation,
that's what "inalienable" means.

That one can often get away with bullying or lying might make it _seem_ like
it's just a personal choice. That is, until people get fed up with it and hold
that person to account for their actions.

~~~
matz1
Same thing with morality, its subjective.

There are no such thing as inalienable rights. Every right has to be earned
and fight for.

~~~
cgriswald
One of the ways you earn and fight for those rights is by not claiming they
don’t exist. There are already enough people in the world who think you don’t
deserve those rights. Best to keep the goal posts far away and convince as
many others as you can that that’s where they belong.

~~~
matz1
Yes, any rights exist because someone earn it or fight for it.

Its not just given from god or something.

~~~
ben509
And yet tribes and nations that recognize and protect inalienable rights are
consistently able to defeat those that assume the strong should have power
over the weak.

The reason being that individuals living in societies with inalienable rights
feel they have more worth fighting for, and they are more industrious and able
to build robust trust networks.

None of that is subjective, it's all how the universe works, so, yes, you
could plausibly attribute it to God or any kind of creator.

~~~
matz1
The strong does always have power over the weak. The right that exist right
now is because someone powerful enough to fight for it and maintain it,
otherwise those right doesn't exist.

Rights are subjective, meaning it depends on the particular society, even it
may have different meaning to everyone. Example: The rights for woman in
Afghanistan and USA are different.

------
jchw
A dark pattern implies something that is intentionally misleading. This is
just lying. This is not a dark pattern because it’s Worse.

~~~
buboard
I mean, you can't be sure they're lying. Odds are nonzero that 38 ppl _were_
looking at that flight

~~~
tmh88j
>I mean, you can't be sure they're lying. Odds are nonzero that 38 ppl were
looking at that flight

I suggest you click on the link, they absolutely are lying. They're using JS
to generate a random number between 28 and 45. If there happens to be 38
people looking at that flight it's entirely coincidental.

------
5-
Here's the twitter thread in the screenshot:
[https://twitter.com/OphirHarpaz/status/1184486445039411201](https://twitter.com/OphirHarpaz/status/1184486445039411201)

~~~
lainga
Someone else in that thread asks:

> I wonder if they report a lower price to Google as well.

Presumably for the little boxes which show up below certain Google ads with
price points []. I know that's against Google Ads' policies, but has anyone
heard of it happening nonetheless?

[] [https://support.google.com/google-
ads/answer/2497706](https://support.google.com/google-ads/answer/2497706)

~~~
burk96
Yes it happened to me, a hotel was priced significantly cheaper on Google and
on their site initially. When the price went up I just called the hotel and
the higher rate was their standard and only rate that they offered. The
initial advertised price was never an actual option.

~~~
cameronbrown
I work for Google.

You can report fraudulent ads with the form here:
[https://support.google.com/google-
ads/contact/vio_other_aw_p...](https://support.google.com/google-
ads/contact/vio_other_aw_policy)

~~~
GrumpyNl
Google should do a better job at fraudulent ads instead of waiting for a
consumer to complain.

------
zzo38computer
Yes, I think it is false advertising, so should be illegal.

~~~
lainga
The only way out of it I can think of would be: if the site could prove that
some number of people, greater than 45, were hitting that specific query on
that specific page, then vacuously, they could say that any number of people
between 1 and 45 were also looking at the offer.

But then, why wouldn't they just display "at least 45 people" or the exact
number? I'm struggling to find some way of doing this which could be any
stupider (`view_notification_random` ??) than what we see.

~~~
nothrabannosir
The source code literally calls Math.random. I hope that defence wouldn’t fly
in court, even if accidentally true.

~~~
rolltiide
Always get in the seat of the defense.

I would absolutely have made a few headless browsing bots masquarading as
users just incase this scenario occurred

Look your honor the logs say other users, “people”, were looking regardless of
our random function

~~~
nothrabannosir
Would admitting to gaming those numbers make your defence somehow stronger? Or
would you withhold that information, and perjure yourself?

~~~
rolltiide
Depends on the charge and the consequences of those charges

------
GordonS
Incredible that they would implement such a dark pattern using easily
discoverable client-side code.

I've seen these kind of messages before on several travel sites, and always
immediately figured they were bogus, but I obviously can't be 100% certain
they didn't influence me in some way - but how can it possibly be legal to
deliberately lie like this to try to trick people into giving you money?

~~~
elil17
It’s not legal (false advertising) but it’s not something anyone will sue over
because of how hard it is to show damages

------
kuon
Lately, I found that booking directly with the companies was often the same
price or cheaper that all site I could try. It might be different in US (I
book flights from Europe, because, well, I live there). Lufthansa often has
the best price directly on their site.

Same thing for hotels, you can get a better price if you book directly with
the hotel, but of course you don't get all the booking.com (or similar site)
niceties like free cancellation.

~~~
BrissyCoder
Same thing in Australia. I use sites like lastminute and trivago as search
engines then contact the hotels directly.

If I stay in an AirBnB that is good I'll make sure I get the hosts contact
details so can bypass AirBnB next time I stay there.

------
pirsquare
Before anyone has any interest in replicating this - keep in mind that:

Trust is earned. Credibility is built.

Go long - don't create fake social proofs and ruin your own reputation. I can
say with assurance that nobody in this thread will buy anything from OneTravel
or their founders again.

~~~
stevewodil
Counterpoint: I had never heard of OneTravel and now in a little while I will
have forgotten about this incident, but the name recognition will still exist
for me, and therefore I'm more likely to trust them.

~~~
closed
I don't think this lines up with memory research. It's true that people
commonly make source monitoring errors, but generally feeling negative affect
toward something enhances memory. People might forget the specific company,
but I doubt they would feel more trust toward travel companies in general.

[https://en.m.wikipedia.org/wiki/Source-
monitoring_error](https://en.m.wikipedia.org/wiki/Source-monitoring_error)

[https://www.apa.org/science/about/psa/2011/10/positive-
negat...](https://www.apa.org/science/about/psa/2011/10/positive-negative)

------
duxup
There's a product I've bought regularly at Amazon, it perpetually has 3 or
less left in stock, but never goes out of stock.

Also I was buying airline tickets and Delta told me there were just 2 left at
this price for ... a plane nearly 70% empty.

~~~
kevinkimball
In delta’s case that is correct. There are two left at that price (in that
fare bucket). After they sell those seats, they will be selling from a higher
fare bucket and the price will go up

~~~
duxup
Maybe but the pricing charts I've seen show fairs rising and falling.

That may be the case at the moment but if they shift those buckets I think it
is also untrue unless it says 2 left.... unless we just change the price
later.

~~~
kortilla
buckets (a.k.a. fare classes) can change in price. Also, some airlines will
not sell certain fare classes on certain days or release all of the fare class
seats at once.

The airline definitely isn’t lying when they say there are a certain amount
left at that price. I’ve seen the price change at those exact amounts when
booking tickets for groups of people individually.

------
gherkinnn
I love imagining the Jira ticket for these.

“As a desperate guy trying to save his marriage with a last-minute holiday, I
want to know just how many other lost souls I am competing with, so I loose
what little dignity I have left”

~~~
mc3
"As an evil corporation, we need to make money, so we'll lie to the customer."

------
jakub_g
FWIW: I got pissed some time ago about Booking.com and Easyjet doing this, so
I created an adblocker filter list to filter out those messages.

I haven't really checked lately if it still works, but feel free to use and
contribute if you want. It should work with ABP and uBlock Origin.

[https://github.com/jakub-g/no-urgency/blob/master/no-
urgency...](https://github.com/jakub-g/no-urgency/blob/master/no-urgency-
blocklist.txt)

All you need to know to contribute is basic CSS.

~~~
SifJar
Related: Chrome extension specifically for this

[https://chrome.google.com/webstore/detail/no-stress-
booking/...](https://chrome.google.com/webstore/detail/no-stress-
booking/kkfmoaflbacidmgmkddkhjfdepckmggg)

~~~
jakub_g
ah good, thx for the link!

------
srameshc
And I always assumed they use some sockets to sync that count from server. How
dumb to just fake on the client side.

~~~
oxplot
%99.999 of people aren't going to look up the legitimacy of this. Why spend
development effort where the likelihood of getting caught is so low. And even
when "getting caught" isn't that big a deal.

~~~
slededit
Because the FTC only needs to look at it once for them to give you a big fine
or put you out of business. They take time but they do get around to these
things. I was watching an old taped documentary on YouTube, and when I looked
up the products in the commercials a good number of them were taken down by
the FTC.

------
raben_
Funny thing is that it works. 15% CR uplift in the last website where I tested
it

~~~
techsupporter
Of course it works, because lying to people to instill a sense of urgency
plays on our base emotions and gets us to do things we might not rationally
do.

Sellers of snake-oil and other fake "remedies" have been using this sales
tactic--"your friends and neighbors have already tried it, look here, see this
line of people ready to buy!" that are all plants--since the days of the
horse-and-buggy.

Doesn't mean we should still keep lying to our friends and neighbors.

------
sbanach
Happens all the time. Here's another good one:
[https://www.nbim.no/](https://www.nbim.no/) (the Norwegian Sovereign Wealth
Fund)

Is a <1s live ticking number implausibly high frequency? Of course, it's just
spooling out numbers on a timer.

~~~
hoseja
I'm OK with those, it's likely a semi-accurate interpolation.

------
microcolonel
If you work long enough on web-based software for a wide enough variety of
companies, you too will get a chance to refuse to write that feature.

------
colmvp
I'm noticing that even Etsy does this by saying that "n people have this their
baskets right now."

That might be so, but it's not like most of the items are scarce. For example,
I ordered a t-shirt and the seller just used a local t-shirt company to
produce the shirt and mail it to me since it was cheaper than mailing a shirt
through international delivery lol

------
tomxor
The responses in the redit thread are interesting: So many people claim they
have experienced legitimate versions while making a purchase, although provide
questionable evidence to support that it was valid. Is this some psychological
bias for buyers?

~~~
theevilsharpie
You can look at practically any popular Reddit thread complaining about X, and
find dozens of anecdotes about how they also had problems with X. Once you see
these threads enough times, you start to wonder how many people are discussing
an actual personal experience, vs. parroting what they've read or heard from
someone.

I'd be interested to know if there was some type of scientific or trade name
for this kind of behavior.

In any case, bear in mind that the plural of anecdote is not data.

------
perfectstorm
one of my friends used to work for Agoda as a software engineer who said
similar things about his company using dark patterns to fake urgency. This is
very common in the travel industry and i've seen many companies employing
similar tactics.

~~~
tahdig
Agoda seems to be owned by Booking Holdings which I think implements these
kind of dark patterns most aggressively.

------
pkaye
When booking hotels, I prefer to call them up directly. Many times just being
nice to the staff you can get a much better deal than elsewhere online. And
also better cancellation policies.

------
csorrell
another dark pattern these kinds of aggregator sites do is up the price on
flights/hotels that you've recently viewed. so if you are looking at a flight,
then continue to browse for a bit to see other options, when you come back to
that flight the price will have increased, as though it were no longer
available. if you clear your cookies or open in another browser though, you'll
find the original lower price again.

------
ignoranceprior
Is this legal?

~~~
brinox
I can only speak for Germany, where it's definitely not.

~~~
orangepanda
Can you cite a law?

For future reference.

~~~
jotaen
E.g. §5 UWG [1], the law against unfair business practices (“unlauterer
Wettbewerb”). See also [2].

[1] [https://www.gesetze-im-
internet.de/uwg_2004/__5.html](https://www.gesetze-im-
internet.de/uwg_2004/__5.html)

[2]
[https://de.wikipedia.org/wiki/Unlauterer_Wettbewerb](https://de.wikipedia.org/wiki/Unlauterer_Wettbewerb)

------
sword_smith
I like that these things are being revealed and I previously read stories that
these techniques were getting less effective since more people are aware of
them. That's at least half the battle. Legal punishment of this behavior is
not something I think I would support since I would be worried about it being
impossible or at least very hard to enforce properly.

~~~
etiam
Governments the last few decades seem to insist on the power to seize the
electronic money of just about anyone. Not sure that's a happy development,
but as the capability's there anyway, couldn't one just serve the advertiser
an order to defend their false claim in court and take the fine out of their
bank accounts if they don't show?

I'm being facetious here, but not entirely.

~~~
sword_smith
> Governments the last few decades seem to insist on the power to seize the
> electronic money of just about anyone.

Going tangential here but that is why Bitcoin is so powerful. Because it takes
that power away from government.

------
barnaclejive
Wow, if you are going to do this, at least have the JS call some endpoint like
"/check-how-many-people-also-want-this/some-id" and name the element "how-
many-people-also-want-this". As a dev tasked with implementing this dark
pattern that is the least you could do.

------
foxhop
Related, faking notification counts to get clicks is a dark UX pattern:

[https://www.remarkbox.com/finally-a-disqus-
alternative.html](https://www.remarkbox.com/finally-a-disqus-alternative.html)

------
lifestyleguru
In a mobile app one wouldn't even have a way to investigate this.

~~~
dewey
Why is that? You can easily look at the requests and see where the numbers are
coming from. It's not as easy as right clicking in the browser but if it would
be a normal Desktop app it would also not work like that.

~~~
aembleton
Because they are being generated locally using Math.random.

------
bedros
cheapoair.com did a similar trick on me few years back.

I searched flights and after finding my flight, I clicked book. waiting for
few seconds with a spinning thing , I got error message that the airline
increased flight price, and I have to pay the new price.

So, I went straight to airline website to check their price, and it was lower
than the first low price cheapoair showed me.

since then, I always check direct pricing before booking

~~~
klingonopera
I've experienced the opposite case, got a flight suggestion by a booking
agency, checked prices for the same flights directly at the airline, and they
were higher.

------
kennywinker
I have two reactions:

1) lol

2) This should be illegal.

~~~
microcolonel
Might be unlawful anyway, if you could argue that you were sold "a plane
ticket being considered by 38 people" rather than just "a plane ticket".

------
winrid
Heh. I bet there will be legal issues with this approach at some point.

They should use the thing I made, watch.ly :) No lies that way! Shameful plug.

------
jayflux
I want to add Hanlon's razor to this.

Some are pointing straight to malice and intentional misleading.

It wouldn’t surprise me if they wanted to make it genuinely work originally,
but realised they could save a lot of money, resources and sprints just faking
it in js.

More laziness and “oh shit this project was bigger than we thought let’s find
a shortcut” than outright malice.

~~~
ggm
That's not Hanlon's razor: they had a moment where they commit an act of fraud
by intent, not by incompetent behaviour.

~~~
jayflux
The point is, rather than setting out to maliciously deceive people it could
have just been laziness.

There’s multiple angles to what could have happened.

~~~
ceejayoz
"I'm going to commit fraud out of laziness" is plenty malicious.

------
tahdig
I imagine sometime in 2030 when a 60 yo uncle/aunty sees this "38 people are
looking at it", calmly right clicks on the HTML elements and sees the use of
math.random and says "Nope, bye bye stupid website".

I think these tricks are closing on their end of life as percentage of
internet-native people are increasing.

~~~
tesin
I think it's natural to feel like the populace is heading to a more competent
place as the elderly age out, but anecdotally I think the opposite might be
true. I've met kids in middle/high school who didn't understand how to do
rudimentary OS operations, resolve email disconnections, update apps that
didn't come from a store etc. The worst was when I taught a semester as an
adjunct. Most of my students simply were unable to zip files together and send
them as an attachment... Internet native in the iOS era is seemingly much
worse than the XP era

------
atian
~45 must be an okay approximation of concurrent visitors they get per popular
search.

------
alainchabat
is there any plugin/website to find out the "normal" price of a hotel / flight
at a given time?

~~~
hacym
Hopper is an app that will do it got flights, and I think Google Flights will
also tell you if the price of a flight is good or not.

Dunno about hotels.

------
Iv
How is this legal?

------
vinayakkulkarni
finally, a use for Math.random()

~~~
mschuetz
What's wrong with Math.random()? I use it all the time (graphics) and it works
like a charm.

~~~
guessmyname
Read these articles to know what is wrong with Math.random()

• [https://medium.com/@betable/tifu-by-using-math-
random-f1c308...](https://medium.com/@betable/tifu-by-using-math-
random-f1c308c4fd9d)

• [https://hackernoon.com/how-does-javascripts-math-random-
gene...](https://hackernoon.com/how-does-javascripts-math-random-generate-
random-numbers-ef0de6a20131)

•
[https://news.ycombinator.com/item?id=10751396](https://news.ycombinator.com/item?id=10751396)

• [https://v8.dev/blog/math-random](https://v8.dev/blog/math-random)

> _Many random number generators in use today are not very good. There is a
> tendency for people to avoid learning anything about such subroutines; quite
> often we find that some old method that is comparatively unsatisfactory has
> blindly been passed down from one programmer to another, and today’s users
> have no understanding of its limitations. — The Art of Computer Programming,
> Volume 2, by Donald Knuth_

~~~
thaumasiotes
That hackernoon post is... unimpressive. Its main argument seems to be that
Math.random() uses a PRNG instead of a source of true randomness. That is not
compelling. It becomes less compelling accompanied by claims like this:

> So now the question is: what PRNG does JavaScript use?

> The answer: none.

There is zero discussion of why xorshift128+ might be suitable or unsuitable
for any given purpose, or of what its characteristics are. The whole thing is
just the observation that, if you can understand the _raw mechanics_ of the
PRNG, you can have a good laugh at the idea that deterministic bitwise
operations are "random".

It does mention that browsers standardized on xorshift128+ in the nearly-
forgotten days of 2015, which would seem to make your Knuth quote inapt.

------
jamesfisher
Love this: HN link to Reddit screenshot of a Twitter thread. Welcome to the
modern web.

