The lowest level of truth telling is stating facts, but even stating facts can be extremely manipulative.
If I were to say:
"2x as many white Americans were killed by police as black Americans in 2018."
This a true fact.
If I take note of the fact that black Americans only constitute 13% of the population, then I can say
"A black American is 2.3x as likely as a white American to be killed by police."
This is also a true fact.
So not only are facts capable of telling a narrative, but it gets much more complicated once you start introducing conclusions.
If you say "A black person is 2.3x as likely as a white person to be killed by police in America. American police are being racially discriminatory when killing civilians."
This is a fact and a conclusion, and most news consists of facts and conclusions. Both the fact and the conclusion serve a particular narrative, and that's an issue. The problem is that a news organization with a different set of objectives, or simply operating under a different framework, would be entirely capable of coming to an entirely different conclusion, or introduce entirely different facts alongside it.
"A black person is 2.3x as likely as a white person to be killed by police in America. However, despite making up only 13% of the population, black Americans committed 36% of homicides, with an overall much higher representation in violent crime across the board. Only 5% of police shootings are with an unarmed victim, with the rest resulting from an armed altercation."
Different narrative.
In America, we understand that there is absolutely nothing more dangerous than an entity that feels entitled to control what is true. It might make things easier, and it might actually produce better results so long as the entity doing so is competent and benevolent, but nearly every structure in America is meant to serve as a bulwark for the cases in which the entity in power is precisely the sort that you do not want to be making those decisions. And to be frank, Europe should probably be more wary of that.
There is a big difference between Observation (which is what Snowden is doing) and Analysis (followed by Solutions). It's not healthy to confuse the two.
Snowden is pointing out an issue. And he has done it with courage that I massively respect. You hardly see it these days. And that makes it anxiety and fear inducing, as the solutions are unknown.
But think of it this way - tomorrow someone might hand you a diagnosis of cancer. You can freak out about it or you can find a Cancer specialist to see what options are available. Asking the technician who gave you the report what the odds are, doesn't make any sense. He knows only how to create the report.
In this case just look to history, to understand how these things play out. History is the Oncologist.
Intelligence agencies have hard problems to deal with. On top of it, they are giant bureaucracies which means cockups, incompetence, turf wars, hiding issues are the norm. All that amplifies the problems, causes defensiveness, over-reactions and reactions to reactions.
If you read the history (and these days there are tons of resources) this sequence of events (of overreach) has unfolded a thousand times. There are a whole bunch programmes that have been shutdown because one group or the other got carried away or did damage. That history (in out current environment of over information/disinformation/misinformation) is what will always be a source of hope and faith.
This article is wonderful and I hope as a setup for second article, "How to Rewrite it in Rust"!
> However at best, the temptation to RiiR is unproductive
> A much better alternative is to reuse the original library and just publish a safe interface to it.
Just as models are a lower dimensional representation of a more complex problem, [1] I have to re-iterate that there are no truth(ism)s in software and as in all engineering, there are trade offs. RiiR can and often is a valid choice. The author talks about "introducing bugs", under an engineering approach to a rewrite, more like a language-port, rewrites can _find_ a lot of bugs. One such way is as follows.
1. keep the same interface in the new system, client code should work against either system.
2. have a body of integration tests, capture these from the field OR write a small collection of orthogonal tests, somewhere between unit and integration.
3. use the tooling, bindgen, etc and generate as much of the interface programmatically as possible.
4. iterate on the port, doing differential testing against both systems.
Doing a language port is comparable in work to long term maintenance and refactoring of an existing codebase. As the tooling gets better, RiiR will be more of a smooth oxidization.
If you own the C/C++ that could possibly get rewritten, I'd think one needs to rationalize NOT RiiR. Better tooling (IDE, build), perf tooling is improving, low bug count, increased team velocity, build is improved, etc.
But the biggest reason to RiiR is safety. Integrating a body of C/C++ code into your rust codebase introduces a huge amount of unsafe code, much worse than surrounding your entire rust program with unsafe { }.
At least do what is outlined in the article but ALSO compile the native code into Wasm and run it from within a sandbox.
edit, something like a library for reading (parsing) a file format, should absolutely be RiiR or run from a sandbox. Data parsing and memory corruption vulnerabilities are excellent dance partners.
Imagine playing a huge board game with a bunch of very smart (as in, MIT math PhD smart) players that spend every waking hour trying to come up with strategies, and every time you come up with a good strategy the entire metagame of all players quickly adapts to its existence so the game stays interesting (except for some that lose before they can adapt and have to leave the game.)
Factors in a good game strategy might include fast thinking, every historical move a player played in the game, human psychology, poker-type bluffing, reverse engineering algorithms based only on their outputs, correctly predicting the future of industries and companies, headlines on the news, sentiment analysis on social networks, predictions of election results (and stuff like the Brexit referendum), as well as the complicated rules of the game itself, and Sicilian Reasoning (http://webdocs.cs.ualberta.ca/~darse/rsb-results1.html).
Some things you might do as part of a strategy: charter a fast ship to send information to your friends in another market before it becomes public, so they can buy a lot of stuff before it's price goes up; buy a donut every week in the same shop and keep track of receipt serial numbers to estimate changes in a franchise's weekly sales before anyone else knows them; use satellite imagery of Walmart parking lots and some computer vision algorithms to get a very good estimate of their sales; borrow $10Bn from your friends and use it all to sell British pounds in a very short period of time, forcing the British government to stop pinning the pound-dollar exchange rate and making $1Bn in the process; install a spy network throughout Europe so you get information on the result of the battle of Waterloo a day before the King's intelligence service, spread a rumor that Napoleon won, buy everything that got cheaper because of the rumor, then the next day sell it when the truth that he lost arrives and use the money to more or less buy everything of value in Britain.
At each point in time there is a clear tracking of scores so you can know exactly how well you're doing relative to every other player.
And the best thing is, you get paid the best salaries in the market to play this game.
I love being an entrepreneur because of how open the rules of the game are and how many creative moves I can pull off to get advantage without having to convince some judge or committee or boss that this is a good idea. Strategic quants have all this and the additional benefits of immediate feedback and a great salary with low risk.
If I were to say:
"2x as many white Americans were killed by police as black Americans in 2018."
This a true fact.
If I take note of the fact that black Americans only constitute 13% of the population, then I can say
"A black American is 2.3x as likely as a white American to be killed by police."
This is also a true fact.
So not only are facts capable of telling a narrative, but it gets much more complicated once you start introducing conclusions.
If you say "A black person is 2.3x as likely as a white person to be killed by police in America. American police are being racially discriminatory when killing civilians."
This is a fact and a conclusion, and most news consists of facts and conclusions. Both the fact and the conclusion serve a particular narrative, and that's an issue. The problem is that a news organization with a different set of objectives, or simply operating under a different framework, would be entirely capable of coming to an entirely different conclusion, or introduce entirely different facts alongside it.
"A black person is 2.3x as likely as a white person to be killed by police in America. However, despite making up only 13% of the population, black Americans committed 36% of homicides, with an overall much higher representation in violent crime across the board. Only 5% of police shootings are with an unarmed victim, with the rest resulting from an armed altercation."
Different narrative.
In America, we understand that there is absolutely nothing more dangerous than an entity that feels entitled to control what is true. It might make things easier, and it might actually produce better results so long as the entity doing so is competent and benevolent, but nearly every structure in America is meant to serve as a bulwark for the cases in which the entity in power is precisely the sort that you do not want to be making those decisions. And to be frank, Europe should probably be more wary of that.