Lies, damn lies, and front-end tracking
alexeymk.com
alexeymk.com
Really wish I read this more. And not just for the landing page.
This doesn't bode well for the end of Moore's law. That is Moore's law in the performance sense, i.e. guaranteed future single-core performance increases [even if small], not Moore's law as in the the doubling transistor density.
Isn't Google's AMP just a bunch of Javascript too? So even their "fix" is just perpetuating the issue
However, ::knock on wood::, I don't seem to have encountered it that much.
Maybe it's because of how I browse, and that I don't follow "football" news, but I almost never see the URL in my browser, nor links to it anywhere.
How do people typically come across AMP content?
I use Firefox on my mobile and I always wondered why people keep complaining about Amp, since I never see it.
Most B2B SaaS's, which I would bet is the most common front end developer on HN, do not see significant benefits from fast loading. They will see issues with slow loading, and they can't ignore bundle size, but the benefits to development speed from a pure JS front-end from this kinds of sites is realised as value by the client.
B2C SaaS, and you start to see a different story, largely due to the wider variety of devices and more mobile friendly focus.
Non SaaS, product sales or news focused businesses facing joe public are likely as you say.
SourceHut does this. It's not a categorical impossibility, but I agree devs are generally going to be inclined to continue with 'business as usual'.
Does it really make dev work that much harder though? I'm not really qualified to comment. Presumably it's going to simplify things in at least some ways.
> do your company a favor - educate those in charge about how much page load time matters.
There you have it - the people making the case for less JavaScript may be the devs themselves.
Moore’s law is only about the latter, it says nothing about performance.
I was wondering when this was going to be the norm.
Can't block third parties for privacy if the first party talks to them behind the scenes.
(If I understand what this means)
edit: for the specific case of conversion tracking as mentioned in the article, I would hope that only referred by Facebook/Google would be reported.
The problem is that beyond whatever functionality the developer of the app intended to use the SDK for, it also does its own thing of stalking the user even if the app doesn't end up using any SDK features at all.
I doubt many competent server operators would be willing to run Facebook-supplied binaries on their precious servers, especially given Facebook’s track record of SDK crashes. (Not to mention PCI requirements, etc.)
https://en.m.wikiquote.org/wiki/Turtles_all_the_way_down
In this context, I'm referring to the "trust us, it works" attitude that people who sell/provide analytics on front-end tracking use to justify their effort/expense. Based on experience, when you point out obvious problems doing analytics with JS, they keep repeating the mantra "but you _need_ front-end analytics" infinitely.
Lots of user experience professionals find utility in data that serves discovery and design sprints. Lots of product management professionals find utility in data that serves validating incremental feature engagement.
- Front end tracking did not lie, the people tracking it were not aware. If opendoor was spending on Ads, the marketing team would be the first to see a disparity between the clicks on an ad network and pageviews on their end.
- As such this is also a reason why you need to check your server hit logs with your Analytics.
- Where is the author is right it Frontend numbers being incorrect largely due to blockers
- His understanding of bounces is also incorrect. Bounce is when there is no second "interaction event", many marketing folks fake-fix the bounce rate, by sending a scroll event as an interaction event.
- I always tell people that analytics numbers are "signals", not "metrics", they are not accurate enough to be called "metrics"
Like you, I also work to make sure people understand that client side data is not necessarily accurate, but still refer to it as metrics and KPIs, just with the caviot that we should bank on consistancy over accuracy, keeping our analysis geared towards behavior and trends versus most business people's immediate desire to take it to an operational/business intelligence type place.
1) Your site loads in under 3-4 seconds for any user.
2) The user is interested enough to wait 3-4 seconds until the page loads.
Then most issues will be solved.
The problem with ads in many cases is that the traffic they send is of very low quality or just bots. In the end you already know from your ads provider how many users they say they sent and you should always use that when calculating ad conversion rate.
Also note that using Cloudflare will count as bounced users who never actually even tried to load your page (bots, crawlers, scrapers, all HTTP requests).
100 ms max on backend processing, 500 ms max on first time to interaction. Client connection speeds matter, obviously. 3-4 seconds is get your fired ass out of here in my world.
That being said, for good UX the target should definitely be under 1 second to interactice, but even on desktop, if your users can't wait 3 seconds after they click the ad, they are not actually interested at all in your product.
People are also used with waiting a bit after they change sites/applications when they initiate the transition, so transition feels faster than it is. It starts feeling slow when you are already on the blank page, having time to look at the loading spinner.
I'm not saying slow is good, but I highly doubt that you can make any site have 500ms TTI for any user (they could easily have 150ms ping to your closest server). I assume that TTI means having access to all website functionality, not some simplified placeholder UI.
And you can doubly tell how much of a PM you are by assuming that everyone is accessing your product by ad and how much you don't care if they are interested after 3-4 seconds. That's a lot of money you're leaving on the table.
Low-end mobile devices are not the right metric for TTI.
Most people don't realize how fast the web can be because they don't bother to benchmark until they are well into the tooling choices and feature development and maybe someone somewhere decides to complain about speed.
A functional Pyramid app with dynamic templates using Mako, and some db queries via SQLAlchemy can fully load in under 100ms.
The bottom line is that speed is a feature. It's not just one feature; it's your most important feature if you want users. It's more important than developer productivity; it's more important than any other feature. You don't know this because you work in a b2b/enterprise space where users don't have a choice. Their managers make the choice. But if you ever work directly on consumer products you'll find this out really quickly. The difference between ~.5 sec TTI and 4 sec TTI is millions of revenue per minute in eCommerce.
But even though it's b2b doesn't mean it has to be bad and suck people's time away from them. You have the option to learn something and change your priorities. But you won't.
I just want to say that I'm not a PM and I don't even work in a corporation. I have worked my entire career focusing on performance (learned programming for and during algorithmic contests were every millisecond really matters, made open-source contributions that vastly improved performance, worked in the gaming space where even users care a lot about performance, and working in the analytics space, where I created a high performance, lightweight alternative to some heavy and data demanding alternatives).
I respect your opinion, but my comment was based on experience, knowledge of human behavior and analytics and A/B tests ran on millions of users. I do agree that it might differ from product to product, but in the majority of cases you just get to a point where it is "fast enough", users no longer notice and spending more time on optimizations takes too much effort for the benefits it brings.
3-4 sec TTI is to be expected from a fully static, server-rendered website delivered from an AWS CF edge through a realistic sloppy mobile connection.
Even at 5+ sec TTI you will probably have green PageSpeed with rating in the nineties if everything else is good.
This may be different for mobile apps.
Nit: TCP doesn't handle TTL, IP does.
These deals are made by people who don't use the software because they passed some checklist of features and security audits, not because they are good.
Consumer websites, blogs, and especially eCommerce websites can't get away with that without losing users almost instantly.
The moral of the story is that if you are already a big, wealthy company with a big reputation, you can afford to be shit. If you aren't, you're making a big mistake with 3-4 sec load times.
> We explicitly only changed the infra which served our landing pages, and kept the content - the HTML/CSS/JS - identical. Once the new infra was shown to work, we would begin to experiment with the website itself.
- http://alexeymk.com/2020/07/14/lies-damn-list-and-front-end-...
Tracking that makes your life better is useful. If Opendoor knows you are looking for a new house in Arizona, and they can show you just the right house before it's sold to someone else, isn't that fantastic?
That's part of living in a diverse world.
I don't know about you, but I don't want a myopic world for myself. The perfect ad targeting system removes my agency; decides what I want and can afford on my behalf; makes my world significantly smaller.
I'm surprised how much hate there is on HN - the entire future of technology feels like it's heavy on data, personalization, and prediction, but a lot of comments read like a parent or grandparent that was targeted and is loading up their shotgun.
The technology isn't the enemy, some of the use is. And in some cases, we need legislation to catch up, like it gas started to for things like loot boxes / gambling in kid's games.
Maybe? When I look at a couple houses to help get comps for a family member and I get innudated with real estate listings for somewhere I don't live and don't want to live for months, that's certainly not fantastic. See also car shopping, or really anything where one sale is valuable enough to target me.
Also fun --- when you look at documentation or ratea for a service provider when you're their number 1 customer, and ads for that service provider follow you around for weeks. Yeah, I guess I'm highly likely to buy, cause you put me in your SEC filings as a top customer.
It's not just a choice between relevant and irrelevant ads, it's that plus many more factors. Even if ads were super accurate, I'd prefer irrelevant ads to having my personal habits finely catalogued in order to subconsciously affect my buying or voting choices. And it is subconscious. Anecdotally, I recently noticed I'd started to want a particular type of personal care accessory. I realized the only reason this happened is because I'd been subjected to dozens of ads for this item over several weeks. I have zero need for this item, zero interest in owning one four weeks ago (even though I already knew the product existed), and nobody would even know the difference if I had one or not!
It is possible to do targeted advertising without surreptitious tracking. I listen to podcasts and often buy through their promo links. I'm happy to tell the advertiser where I heard the ad, because I like the content. And it's all explicit - no spying required.
When you listen to an episode of a podcast, an advertiser can get data from the file download, so at the very least they know your location and your phone profile. Say you download a podcast from a certain location Brooklyn, using iPhone X, an advertiser can profile you to be upper-middle-class and show you a Peloton ad, while same podcast download of an old Android phone is going to get an ad for a short-term loan.
The advertisers are hungry for ways to get more data because right now it's still a black box, you throw money in, and maybe someone buys. They would much rather target with precision, than with banner ads.
I don't actually need any ads, so this is a false choice.
You don't have to decide between targeted personalized ads and their toxic rats tail, or no ads at all. There's a middle way called contextual ads which is bound to the topic you're consuming.
I bought into this reasoning for some years until I realized that I never saw a useful ad (except on Facebook properties, which is ironic since they are the ones who know least about me as far as I can tell.)
(Yet even so, backend-triggered tracking is probably less privacy-intrusive than frontend-, even if you’re sending the data to Google or Facebook or whoever.)
More server side data harvesting will not make that less intrusive.
Is it unethical if I keep track of how many people buy which hats, so I know which kinds of hats sell best?
What about if I keep track of what hats each of my customers buys, so that I can tell which hats I might want to bundle together into hat packs?
Maybe I’m not super technical, so I pay a 3rd party service to analyze my transaction logs and tell me the above answers.
Or I realize some hats aren’t selling, so I check to see if people are going to that page and just not purchasing, or never going to that hat’s page at all.
To say that sites use tracking to “manipulate” users is playing pretty icky word games. Yes. The purpose of all marketing is to “manipulate”. So are opinion columns in newspapers. Job interviews are an employer manipulating a candidate and a candidate manipulating an employer. Manipulation is just a scarier-sounding word for “persuasion”.
If it makes the analogy more palpable, I’m selling virtual hats for my video game.
The parsing and execution of third-party javascript is definitely non-trivial if you profile it, especially on lower end devices.
Finally, browser download priority requires async and defer attributes on scripts (usually), or other clever ways of deferring loading.
Though after working with a few of these A/B testing vendors, I'm firmly convinced that you'd be better off long term implementing your own A/B testing service on top of some internal admin UI builder like Retool.
This makes sense for a tool like Optimizely which has to block rendering.
> The parsing and execution of third-party javascript is definitely non-trivial if you profile it, especially on lower end devices.
Given that this is supposed to happen after the page has already loaded, does this matter? If the thing you are optimizing for is page load time, and it takes a few 100ms after the page has already loaded to run the JS, does that actually negatively impact the user experience?
> Finally, browser download priority requires async and defer attributes on scripts (usually), or other clever ways of deferring loading.
When you add third party JS, shouldn't this be taken care of for you? Scripts for adding third party JS should already make use of async and defer as needed. What's a case where you would need to actually think about async and defer when making use of third party JS?
On a standard product-ey site with retargeting ads, user tracking, etc. this third-party slowdown is significant.
All of this is exacerbated on lower-end devices, and non-WiFi Internet.