austincheney
Google monetizes search but not with Google ads. This is the primary distinguisher. Its an auction selling space on page for a supplier to provide their own textual content. Google's online advertisement businesses don't sell space on Google pages, but online ad products for other peoples' pages.
Google considers all of this as ad revenue, but distinguishes search from their advertisement products in their revenue filings.
From your second source. I guess you were conflating ad revenue to online advertisements. Its all ad revenue, but its not all online advertisements.
Google’s primary business is search. They monetize search in a couple different ways. The primary revenue model for search is micro auctions to determine ranking of product placement on search results.
I don’t have numbers but I suspect Google ads get far more eyeballs than do their search results. The distinction though is margin not quantity. Ads aren’t worth very much. Google ads generate a higher margin than Facebook ads but still tiny, like maybe fractions of a penny. When I was at Travelocity a million years ago I remember hotels bidding up to $18 per click for placement on searches related to Las Vegas. Not only is that click-through worth a fortune it is also relevant and thus far more likely to be clicked.
EDIT
Death by a thousand paper cuts.
Somebody provided a source below, they clearly did not read, which explains all of this:
https://www.cnbc.com/2021/05/18/how-does-google-make-money-a...
> Search is Google’s most lucrative unit. In 2020, the company generated $104 billion in “search and other” revenues, making up 71% of Google’s ad revenue and 57% of Alphabet’s total revenue.
This section of the article further details how the auctions differ from online advertisement products.
I don't have the source but Google's chief economist has been very clear about how the micro auctions work and generate revenue separately from display ads.
You are not participating in the same interviews that I am then. Most developers know querySelectors, for example, are super slow. They will fight to death to retain them and anybody who suggests any alternative is not compatible for hiring. If they know its slow and deliberately choose to avoid faster alternatives how is that not degrading performance on purpose? How is that not common?
With the DOM querySelectors are dramatically slower than using static methods with arbitrary strings as arguments. This is likely because a query string must be parsed against each child node to determine if the child node is a match to the supplied query. Likewise, modern OSs use ancient conventions to search the file system, such as wildcards, along with more modern advanced search syntax. These are rules that must be parsed against each child artifact from a tree segment. My application deliberately doesn't do that.
To compound matters Windows, don't know about OSX, caches search results so that subsequent searches are a little less slow, which incurs a greater performance penalty on first search. My application doesn't do that either. Each search triggers tree traversal, so its always as fast reading from the file system.
Mentioning any of this during a job interview makes for intriguing conversation with the interviewer. I do detect genuine interest and curiosity from the interviewer. At the same time they know their team will fight to the death at many mention of alternatives to querySelectors and/or JSX, so you have just effectively terminated the interview. Anything there after is purely for the interviewer's personal interests.
The pandemic affected everybody almost equally by political jurisdiction so demographic stratification suggests there is more to blame in addition to the pandemic. Looking at young children in my area my first blame is convenient access to touchscreens.
That is easy to say as marketing first personality with access to money. In this case shipping anything is critical and you can fix it later.
As a bootstrapped technologist product quality is all you’ve got. If the product isn’t revolutionary then nobody cares and you won’t change their opinion. So, in this case you need to get it mostly right, because you won’t get a second chance at a first impression.
I am not seeing any other programming language continuously improve their execution speed this much.
Look at DOM performance. Chrome has a ceiling of about 45m ops/s where FF max speed is dependent upon your ram and bus speed reaching beyond 4-5b ops/s. In both though querySelectors perform at about the same speeds as slow as 25000 ops/s.
I have written an OS GUI that executes in the browser. It loads, including full state restoration in about 120ms. I was recently interviewing with a search engine company, one of the big ones, where I could demonstrate that JavaScript tool can execute file system search much faster than the OS and produce better results. They seemed really impressed.
Despite all of this my biggest learning about performance is that mentioning performance during job interviews shows that you are incompatible with other JavaScript developers and will not be hired.
Unless there is a solution that directly addresses hiring bias this company will fail like all the others before it for exactly the same reason: their clientele will apply bias (the actual cause of the problem), be unhappy with the result, and then blame the service provider. In sales the client is never wrong, which means the service provider is always wrong. This is why software overspends on recruiters and then invents fantasies like React developers with a year of experience are rare.
Your financial transactions are already tracked by numerous parties. This is neither secret nor suspect. Without visibility over the transfers, distribution, and behaviors therein how would governments and financial institutions account for ethical violations?
There is also pregnancy. An employer cannot terminal an employee for taking time to give birth and taking some more time off immediately after.
These are the two most obvious reasons though I am sure there are many more that they cannot enforce.
Senior used to mean someone experienced enough to become an advanced problem solver. Those days are long over.
Now senior is equivalent to expert beginner. They are really fast and confident at using tools. This advanced and rapid tool usage means they can solve some problems quickly, but they cannot imagine any solutions aside from their favorite tools. The most important limitation there is that most senior developers cannot write original software. It’s a world of a few commonly known problems with commonly applied repeated solutions and everything else is discarded with excuses that equally lack originality.
If, as a JavaScript developer, you are able to write original software without popular tools you are commonly viewed as something like a dark wizard, equal bits of magic and evil. People view this as mysterious and incompatible with reality (you won’t be hired).
Back in August the project was mostly working. Multi-file copy worked across the network and across the security model. At that time I did not have any encryption working (TLS, WSS). I am working on this now. Certificate management/deployment is something I am new to and its a bit more challenging in a fully decentralized application. There are three stages to this:
1) Certificate creation
2) Certificate installation into the OS trust store
3) Certificate exchange between agents
I can do a self-signed root server certificate with confidence. I would rather have a root certificate for user level of the security model and signed device certificates for increased security against device spoofing, but I am failing to get correct. I can make it work like a hammer in Windows, but its not correct and it won't work at all in Linux. I suspect certificate exchange will easily be part of the invitation process, but then I need to device a certificate challenge as an enforcement measure. This is a humbling experience reminding at every step that I don't really know what I am doing.
Also there was a catastrophic routing problem. You could perform all file operations except copy from one remote user/device to a different remote/user device. Everything is super simple when the network effect is two nodes (a request/destination and a source). When there is only two nodes you don't need any routing support. Even when the security model actually pushes the transmission to three modes, such that you are sending to a user's primary device and the transmission must relay to that remote user's secondary device the transmission is still simple as this is assume by the security model without additional work. When the transmission expands to three separate nodes (request, source, destination) you have to introduce routing. The routing is greatly complicated by the security model.
Now that I am working on routing file copy over the network is broken. Once I introduce encryption and routing I will ready the project for public beta and then resume work on audio/video calls.
There is a lot of freedom, performance, and security you sacrifice when you need so much help that you need a third party to simply just do it for you.
That is my application that creates an OS GUI in the browser. Plenty of features with o framework.
* Code size (on the front-end) 2mb unminified.
* Load time in the browser (including state restoration) about 120ms.
* The first version took 15 days to write from scratch.
When people claim there MUST be a framework its clear they have no idea what they are talking about. It is clearly a case of Dunning-Kruger effect where they can compare their experience with frameworks on one hand... and they have nothing to compare it to, because its all they know.
Usually critical thinking means two things simultaneously:
1. Degree of willingness to defy group dynamics. Group can refer to an immediate group such as family or employment team yet also more broadly as culture or identity. This defiance is not spontaneous, as in an adolescent behavior for increased independence, but cognitive and intentional.
2. Degree of willingness to act. Under stress people typically defer to a fight or flight dichotomy of decisions. When either the fight or flight conditions are unclear they do nothing. A willingness to act suggests that in the face of uncertainty a willingness to commit to a decision, even if wrong, and execute as opposed to doing nothing as a posture for uncertainty avoidance.
Client/server is very easy, because there is a centralized common point of access that manages everything. In a serverless model you have to connect via identity that has no fixed address.
Ideally, the goal of software is automation. When that actually does occur both the employer and engineer make more money as there are fewer mouths to feed.
We suck pretty bad. SPAs are often the default because that is what the framework dictates and nobody trusts a JavaScript developer to delivery any kind of quality product without some epic massive framework, including ourselves. This is the standard for hiring, performance, and delivery and nobody dares deviate. If its not an NPM package written by an anonymous stranger or an API on the framework its not an option. We don't trust each other and management doesn't trust us, so let the framework dictate our every decision.
True, but irrelevant. I have written an OS GUI, including full file system support, in the browser that performs faster than native OS GUIs. My biggest learning from this is talking about performance in a job interview is the fastest way to kill the interview. Performance, like security, requires trade offs that deviate from comfort. If the common developer is insecure comfort is the only thing that matters.
JS hiring expects the following: React components, 2-6 weeks of JS practice, the ability to use map/filter on arrays, and CSS. If you overshoot that you begin to enter unknown territory that intimidates other developers. The better you are the less employable you become as the further from the bell curve you drift.
If you are wondering why this is or how we got here the answer is trust, or the lack thereof. In software there is a long standing bias: if you can see it visually its worth less. I have been doing this work for more than 20 years and that bias predates my work, so its been around for a while. Bias is continuously reinforced by the lack of standards in software hiring and the inability of employers to train their employees.
This lack of trust means that employers do not trust their employees to perform original work and likewise the developers don't trust each other. This is why absolutely everything, I mean this literally, is a downloaded NPM package, because the developers will trust an anonymous stranger to write original code before they trust anyone they know. There is all kinds of excuses to qualify this, of which some are bizarre and nearly all lack any kind of merit.
This is why its irrelevant what the browsers provide. Its baked into the framework, an NPM package, or ignored.