[0] NaN === NaN returns false?. 0.0001 + 0.0002 !== 0.0003? weird.
NaN means "no idea what we've got here". When you get to say that phrase, would you expect it to be used for exactly one thing and one thing only? To me "I have no idea" means the possibilities are endless (infinite). We can only compare for equality when we know what we are looking at, otherwise it's just "status unknown". Yes, it might be equality - the chances are infinitely small though.
If you take the argument a step further and say "but I got the two NaNs that I compare doing the exact same operation, so even if I don't know what I've got from a mathematical point of view whatever it is it should be equal". In that case you are not actually comparing the NaNs but the path(s) that got you there.
I must say I find the whole NaN, null, 0 vs. undefined interesting on so many levels. There is a world of a difference between knowing you've got nothing (null or 0) and not knowing what've you've got at all.
"null": I have no bank account. "0": my balance is 0. "undefined" or "NaN": I lost my memory after yesterdays binge drinking and don't know who I am and if I got a bank account or not. Knowledge vs. no knowledge.
The joke was, of course, surrounding the Mozilla incedent where Brendan Eich stepped down from his position as CEO apparently because of a perception that he was promoting inequality. This characterization was due to his support of prop 8 (a bill about marriage equality, or lake there of).
To completely ruin the joke's punchline[1], was that the "problems he had with equality" were actually his understanding of types and language development and are evident in javascript.
Of course that is untrue, was a joke, and Brendan Eich is a legendary programmer whose contributions I am grateful for.
[1] Joke's punchline could be ruined by it being both a bad joke needing an explanation, being in poor taste, and generally just not being a funny joke.
I thought it was damn funny. There was definitely an unintended outburst at my desk.
But then...... I also thought it was spectacularly hypocritical of Mozilla to fire him for having what amounted to... ideals. Which is what Mozilla supposedly works to protect.
They didn't fire him for having ideals. One, because they didn't fire him, and, more significantly, because the problem was not him having ideal, but him being unable to determine or unwilling to take the steps necessary to effectively manage a major PR incident affecting Mozilla's relationship with users, employees, and other important stakeholders. (Or, given that he actually resigned, maybe he was quite able to determine and willing to take the necessary steps, but those steps were inconsistent with him remaining as CEO.)
I cannot support this.
1. Brave won't "sell ads", that's not how it works. Marketers buy space for ads and spend to create the ads themselves. Websites or publishers sell space for ads, sometimes directly to brands/agencies. If ads use no tracking and host the ads' images and other assets on a non-blocked domain, no problem.
2. Where we propose to do better is with "indirect" or programmatic ads. These are so out of control, publishers make money from them but disclaim responsibility when a piece of ransomware malvertisement places in the offered space. We aim to put tracker-free, sandboxed ads in these spaces and share revenue (equal shares to the user and to Brave: 15%) with the bulk of the revenue (55% direct, 70% in total per the default settings) to the website.
We're thus working to align incentives in the system that currently work against the user's interest.
We also support pure ad/tracker blocking, if you prefer.
On top of either mode, we're buildling an anonymous system for micropayments as well as aggregated ad metrics, so no one can re-identify a Brave user from a revenue stream.
Of course, we're not yet doing anything more than blocking all third party / indirect ads and trackers. To get better user-aligned revenue models in place, we'll need to scale up and win over some top publishers for trial/testing purposes.
So if you want the fastest (native code wins in perf and mem use) browser that blocks ads by default, I hope you will give Brave a try.
Longer answer: we would be selling anonymous ad spaces based on matching tags (like standardized keywords) on-device/in-browser against a set of tags for ad deals whose buyers sign up to pay us only when those ads perform (have anonymously confirmed viewable impressions).
The tag matching is private -- no cookie or other identifier comes out of the device/browser, no tags out either.
The (few, three or four) tags for each ad space come from local inference, weak AI, running on-device. The goal of this AI is to work for you on your device, studying your data, to pick the best small set of tags for the ad space. Only a few, even just one, spaces per page might be filled. The ad serving is async as well as sandboxed, so it doesn't delay page load.
This private and device-local inference uses the sum of your browser state, which is a superset of what remote trackers see via cookies and fingerprinting. Think of tab opener relationships, absolute viewability/visibility, evolution from search and social interactions to browsing sites to buying. As with browser history, you can clear the summaries inferred from your data.
We are building cross-device, client-private-key-encrypted sync (as other browsers offer, although not always client-encrypted). To handle inevitable key loss, as with user multisig wallets, we will rely on a separate Key Recovery Service. So we won't have keys for your data or the results of inferences made from it. But you will have the benefit of inference studying all your browsing on all your devices, as they sync and the inference runs incrementally.
If we pull all of this off, we'll have built a private data platform where our users own their own data cross-device, along with valuable results from analyzing their data on their devices. Kind of an upside-down, individuated, private Google.
You're seeing movement toward "segment of one" marketing tech (companies who track you as an individual, across apps and even offline credit card purchases). These trackers may run afoul of regulators, as they zero in on PII.
We think Brave's way of defending your data on device is better: more precise and of course more private. Clustering among users and sync'ing with non-browser data can come later, and via ZKP protocols like the one we're using for the Brave Ledger (see https://brave.com/blogpost_3.html).
We also see IoT (home, car, internal/wearable computing) as a field in need of our "anti-cloud" approach. Of course backup is important, and some transacting with cloud services wins, but giving all your data away from the start puts you at a permanent disadvantage. It also accrues rising privacy and security risks.
Users won't get paid fairly for their attention and time (never mind their location and health data!) until they defend all such data from trackers. We're building a system for doing this, using a browser as first line of defense. (There will be other lines of defense.) Anonymous ads are just one way to get users their fair share.
Our principle of users getting their fair share means we take the same ad revenue cut as our users get, and pass the bulk on to the publisher or website (or account, if YouTube or the like). We'll follow this principle for other possible revenue including from search, if we can work that out.
Your data, on your devices, with a fair share to you, are key points of the brand value we hope to build.
Honestly, I think Brave is good for everyone - including advertisers. There are interesting new patterns to develop here, I'd bet. With every change in tech comes new possibilities, Brave is opening the door to a lot of potentially new ideas/strategies here IMO.
The big problem is how much of the digital advertising "rent" goes to Google and Facebook alone, for so little. Perhaps 80% of 70B/year in the US alone. This will not continue. What's next? We have an idea.
> ... even though fairly close to Gecko-based browsers like Mozilla Firefox in the way it works, is based on a different layout engine and offers a different set of features. It aims to provide close adherence to official web standards and specifications in its implementation (with minimal compromise), and purposefully excludes a number of features to strike a balance between general use, performance, and technical advancements on the Web.
[0] https://thestack.com/security/2016/02/03/chromodo-browser-di...