C compiler undefined behavior: calls never-called function - <AUTHOR> https://gcc.godbolt.org/#%7B%22version%22%3A3%2C%22filterAsm%22%3A%7B%22labels%22%3Atrue%2C%22directives%22%3Atrue%2C%22commentOnly%22%3Atrue%7D%2C%22compilers%22%3A%5B%7B%22sourcez%22%3A%22MQSwdgxgNgrgJgUwAQB4IGcAucogEYB8AUEZgJ4AOCiAZkuJkgBQBUAYjJJiAPZgCUTfgG4SWAIbcISDl15gkAER6iiEqfTCMAogCdx6BAEEoUIUgDeRJEl0JMMXQvRksCALZMARLvdIAtLp0APReIkQAviQAbjwgcEgAcgjRCLoAwuKm1OZWNspIALxIegbGpsI2kSQMSO7i4LnWtvaOCspCohFAA%3D%3D%22%2C%22compiler%22%3A%22%2Fopt%2Fclang%2Bllvm-3.4.1-x86_64-unknown-ubuntu12.04%2Fbin%2Fclang%2B%2B%22%2C%22options%22%3A%22-Os%20-std%3Dc%2B%2B11%20-Wall%22%7D%5D%7D <comment><USER3> This is a technically correct compilation of the given C program. All executions of a program containing undefined behavior are invalid. That means, not just the part of execution "after" the undefined behavior, but the part of execution "before" as well.

Since the program unconditionally calls an uninitialized (actually zero- initialized) function pointer, that is undefined behavior. It therefore has no valid executions. The compiler is legally allowed to generate whatever code it wants, and that is considered valid according to the standard. It just so happens in this case that it probably generated no code at all for main, falling through to code that it did generate. (and my guess as to why it did generate code for NeverCalled() is because it's non-static and could be called by functions outside this compilation unit; NeverCalled keeps EraseAll() alive.)

edit: the above is only true if the compiler knows main is the entrypoint to the program.

<comment><USER4> > It therefore has no valid executions. The compiler is legally allowed to > generate whatever code it wants

If the compiler concludes that the program has no valid executions, then why not just generate an error message at compile time?

I wonder in what other engineering disciplines this kind of attitude (i.e. silently punishing users for mistakes by generating arbitrarily misbehaving code) is considered acceptable. It seems unethical to me. Perhaps compiler writers should think more about what constitutes sound engineering, rather than what happens to be permitted by The Standard.

<comment><USER5> > If the compiler concludes that the program has no valid executions, then why > not just generate an error message at compile time?

I agree that that would be nice to see in this case, and it seems like this particular case would be low-hanging fruit, but it's not that simple. In particular, the compiler in this example most likely does not reason globally; it never actually decides that "the program has no valid executions". It does a series of local transformations, presumably based on facts of the form " _if_ we can reach this point, _then_ certain values are invalid".

Another thing about such error messages would be that they would push compilers more in the direction of verification tools, _which they aren 't, and cannot be_.

Consider:

        int f() {
          return 1 / 0;
        }

        int g() {
          int a = 0;
          return 1 / a;
        }

Clang warns about the first function, but not about the second one. If it warned about the second one, I could write a third function that always divided by zero, but that it could not warn about. If it learned to do that, I would find a fourth one, etc. This is an arms race that compilers cannot win, and they shouldn't try. You should use separate verification tools for that, which do the opposite of compiler warnings: They don't reject the program if it's trivially buggy, they reject it _unless_ you prove that it is _not_ buggy.

If compilers had more such warnings, programmers would be tempted to say "look, there is no warning, the code must be fine". That's the whole "if it compiles, it's correct" approach that gives some gullible people a false sense of security in other languages.

<comment><USER6> I certainly hope that there are not many programmers thinking "if it compiles, it's correct" after having made their first logic error, though I realize some Haskell programmers make statements that are close to that.

Clang and gcc will warn you about some of these issues if you give them the right flags (so much so that -Wall no longer means literally all warnings, IIRC), but then you run into static analysis' problem of burying you in false positives for conditional / data-dependent undefined behavior.

I have found it instructive to play with Dafny, one of the languages where the compiler does require you to prove that a variety of bugs will not occur, but 'play' is the operative word here. It is not a feasible option for C.

C has always been a language for (among other things) creating optimized code, but the implication of that has changed. Originally, it meant / required being 'close to the metal', but since then, effective automated optimization has come along, and the metal itself has become considerably more complicated (partly as a consequence of more capable optimization). As C programmers, we should understand that these changes have occurred, and what they mean for programming in C - or not use the optimizer.

<comment><USER7> > I certainly hope that there are not many programmers thinking "if it > compiles, it's correct" after having made their first logic error, though I > realize some Haskell programmers make statements that are close to that.

No, the Haskell slogan is "If it compiles it works". "It works" is something quite different to "it is correct".

</comment></comment></comment></comment></comment><comment><USER8> So, the compiler finds out that the function pointer Do is either undefined or points to EraseAll, and since calling an undefined function is undefined behavior, the compiler assumes that 'Do' always points to EraseAll?

Is this what is happening?

While this is certainly unexpected, I can't fault the compiler here. The example emphasizes the need for tools to check for undefined behavior.

</comment><comment><USER9> The undefined behavior is that the static variable "Do" (a function pointer) is used without initialization. The compiler optimization is that since, in the whole program, the only value to ever be assigned to "Do" is the function "EraseAll", the compiler statically initializes "Do" to "EraseAll". Doesn't seem too crazy.

<comment><USER10> Actually the optimization is not statically initializing Do, it is inlining the function calls via the Do pointer. I actually think this a quite useful optimization.

You can see that if you "fix" the program by checking Do before calling it, it still inlines the call in the True branch:

[https://godbolt.org/g/9KS2r9](https://godbolt.org/g/9KS2r9)

<comment><USER11> Of course, in some cases NULL checks will be optimized out (this is why GCC has acquired the -fno-delete-null-pointer-checks flag ...). At one point, this has been a huge source of conflict: basically, when you have something like

if (NULL != s) { s->a = 1; }

s->b = 1;

then GCC may optimize away the NULL check because referring to s->b after the block protected by the NULL check indicates that the NULL check is superfluous. I this case, this is actually true, but in cases that involve aliasing that is not detected by dataflow analysis, there might be circumstances where the NULL check is required. Discussion of something related is here[0]; my example might not be very good.

An even more insidious case is [1](strong language), where manual overflow checks are optimized out because the overflow technically invokes UB.

Compiler optimization gone wild.

[0] [https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71892](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71892) [1] [https://gcc.gnu.org/bugzilla/show_bug.cgi?id=30475](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=30475)

<comment><USER12> Your example also presents undefined behaviour, so the compiler is free to do whatever it wants.

<comment><USER13> That's like saying "You used the power drill incorrectly, so it's free to explode and burn your house down."

At some point safety matters, and the more likely human mistakes matter.

</comment></comment></comment></comment></comment><comment><USER14> If you rename "NeverCalled" to "Initialize" and "main" to "ExecuteAfterInitialization", the behavior is much less mysterious.

NeverCalled is a "public" function since it isn't marked static, so the author of this code intended for it to be called externally to initialize Do.

The compiler's optimization produces a correct program along the only valid execution path: Compile this as an object file, and link it with some other code that calls NeverCalled and then main.

If you mark NeverCalled as static, the compiler outputs an explicit "Undefined Instruction", because there are then no execution paths that don't invoke undefined behavior.

<comment><USER15> No, there is no valid execution path because of undefined behaviour. It doesn't cease to be undefined because of imaginary additional code.

Compilers are not in the business of creatively guessing what "the author of this code intended".

<comment><USER14> It's not creative or guessing. If you write a function without "static" it means you intended for it to be called externally.

It's not theoretical at all: Before I saw this thread, I was in the middle of writing some Haskell that loads some non-main symbols from an object file derived from an executable's source code, and invokes them. People carefully mark which functions are or are not static to ensure their executables don't get bloated. I'd be very annoyed if my C compiler didn't take symbol visibility into account when optimizing, because I depend on it all the time.

<comment><USER15> If I write a function without "static" it means I want to _allow_ functions in other modules module to call it, it isn't implied that it will be actually called.

Real life analogy: declaring a static function is like locking your car because you don't want it stolen: only hackers can access it through forbidden means. If instead you leave your nonstatic car parked in the street, open and with keys in the ignition, you are making it easy to steal (probably you want it to be stolen, there might be an UB corpse in the trunk you want to get rid of), but you cannot be sure that a thief will actually come along and take it away; you are just advertising that they should.

</comment></comment></comment></comment><comment><USER16> So, is this on the underhanded C shortlist yet?

I wonder how many static analysis tools will pick up that the function will be run.

And then I start wondering if the static analysis tool "scene" realizes how important their work is for security...

<comment><USER17> > the function will be run.

You can't be sure, that's just what one compiler does today. Static analysis tools tend to refer to the standard.

        $ tis-analyzer foo.c -val

        /tmp/foo.c:16:[kernel] warning: Function pointer and pointed function have incompatible types.
                      Pointer type: int ()
                      Non-function: {0}
                      assert \valid_function(Do);
        ....
        /tmp/foo.c:16:[value] Assertion 'Value,function_pointer' got final status invalid.

In other words, the pointer is not initialized.

<comment><USER18> What worries me is that almost every other compiler supported by godbolt would wipe your drive. It's not an anomaly of Clang - it's something fundamentally wrong in the design of compilers that allows them to do this at right optimization levels.

Which means that if I have a method that wipes my entire production database but never ever call it, it might still get called because of mistake like this one where someone forgot to initialize a function pointer.

<comment><USER19> >> Which means that if I have a method that wipes my entire production database but never ever call it, it might still get called because of mistake like this one where someone forgot to initialize a function pointer.

Do you actually have a method like that? Somehow I doubt it. Also, the example is completely contrived. If you have an uninitialized function pointer it's going to be pretty uncommon that there's only one possible function for the compiler to conclude is the right one. Also, you should not be testing on a production system.

On a note related to your example, many automotive ECUs have the ability to re-flash over the vehicle network. In many cases the OEM requires that they do not contain any code to erase or program their own flash memory. This is for the reason you cite - if somehow (for whatever reason) that code were to execute it may brick that device. This then requires that the bootloader download a couple functions to RAM prior to updating its own code - <USER2> functions are the ones that erase and write flash. This is also convenient for some micro controllers that can't modify flash while code is being executed from it.

</comment></comment></comment></comment><comment><USER20> I just read the C++ Primer because I wanted to hack on some C++ code and the number of things you can do in C or C++ that result in "undefined behavior" is annoyingly large. There are some functions where they could have added a bounds check to the implementation, but the whole philosophy of the language seems to be that when choosing between lack of bult-in checks that would lead to easy to make errors that would cause undefined behavior and small speed increases on microbenchmarks the language designers choose the latter.

<comment><USER21> For what it's worth, in _Design and Evolution of C++_ , Stroustrup says that when he was designing features, he would often think of a simple rule that he couldn't enforce (e.g., "couldn't enforce" being "if you violate this rule, the results are undefined") and a complex rule that he could enforce. He generally tried to pick the simpler, easier to teach rule. Unfortunately, that means there's more undefined behavior if those simpler rules are violated.

</comment></comment><comment><USER22> This might well be valid according to the standard, but I find it very depressing how many people consider it reasonable behavior.

<comment><USER23> This is a very specific case, if there is any other function that sets the pointer, the behavior is what you'd expect. [https://godbolt.org/g/C3SYXt](https://godbolt.org/g/C3SYXt)

<comment><USER24> It might be what you expect for that particular compiler, but there's no guarantee. A different compiler might decide that because `Do` has only two possible values, that it should replace the dynamic function call with an if condition deciding between two static function calls like I did here manually, to trigger the bug again: [https://godbolt.org/g/kWcvvb](https://godbolt.org/g/kWcvvb)

</comment></comment></comment><comment><USER25> This is a really cool, graphic example of the importance of avoiding undefined behavior even if you can't see it segfault or whatever.

</comment><comment><USER26> Do compilers emit warnings here (do they usually do that when there is a known UB?)

Here it's clear that "NeverCalled" is never called so it's clear that Do is never assigned, so the Call can't produce anything useful.

EDIT: Ugh missed the lack of "static" on the NeverCalled. Never mind.

Is this too hard to decide with certainty in C because of how you could do some pointer gymnastics and just fiddle with the field without the compiler realizing, so in order not to spit out false positives, compilers just have to assume the author knows what he's doing and allow the suspected UB without warning?

I'm just used to higher level "safe" languages (Rust, C#, etc), where lack of assignment is usually determined with certainty.

<comment><USER27> "Here it's clear that "NeverCalled" is never called so it's clear that Do is never assigned."

I don't think that is clear. If the given file is linked with another file that initializes a static variable with a function that calls NeverCalled, the initialization will be done before main is called, and so NeverCalled _will_ be called. The compiler can't tell from just analysing the one file shown here whether or not NeverCalled is called.

<comment><USER26> > I don't think that is clear

Right. I missed that the uncalled function was public. So the issue is not clear until you link I suppose, so only detected "globally" whether the function is called. is it fair to say that that kind of global analysis is rare in the compiler+linker toolchain world for C, and usually left to static analyzers instead?

> The compiler can't tell from just analysing the one file shown here whether > or not NeverCalled is called.

Right, and making it static you get the -Wunused-function. Great. This warning is about the NeverCalled function being unused though, and not about Do being unassigned before it's called. Curious, is there any way to get a warning for this? This is UB, correct? And the assignment is now known not to happen?

        typedef int (*Function)();
        static Function Do;
        void main() { Do(); }

</comment></comment></comment><comment><USER28> Still better than having demons fly out of your nose.

</comment><comment><USER29> There's only one value "Do" will ever have. He might as well set it from the beginning ;)

<comment><USER30> The only value it will ever have is NULL (but calling through a NULL function pointer is UB so it can instead call system() :)

<comment><USER29> It's uninitialized, not NULL.

edit: I was wrong, see below.

<comment><USER31> C11 6.7.9 (10):

If an object that has automatic storage duration is not initialized explicitly, its value is indeterminate. If an object that has static or thread storage duration is not initialized explicitly, then:

— if it has pointer type, it is initialized to a null pointer;

<comment><USER32> How is the C11 standard applicable to a C++ program?

<comment><USER31> I didn't notice it was C++. In C++14:

From 3.6.2:

>Variables with static storage duration (3.7.1) or thread storage duration (3.7.2) shall be zero-initialized (8.5) before any other initialization takes place

and from 8.5:

>To zero-initialize an object or reference of type T means

>\--if T is a scalar type (3.9), the object is initialized to the value obtained by converting the integer literal 0 (zero) to T

and from 3.9:

>Arithmetic types (3.9.1), enumeration types, pointer types, pointer to member types (3.9.2), std::nullptr_- t, and cv-qualified versions of these types (3.9.3) are collectively called scalar types

</comment></comment></comment></comment></comment></comment><comment><USER33> On that subject: CppCon 2016: Michael Spencer "My Little Optimizer: Undefined Behavior is Magic" ([https://www.youtube.com/watch?v=g7entxbQOCc](https://www.youtube.com/watch?v=g7entxbQOCc))

</comment><comment><USER34> Compilers (and thus, compiler writers, i.e., people) have gone off the deep end with C. In search of endless over-optimization (don't worry, they will tell you that this optimization is "important" because some stupid benchmark runs 21% faster), programmer intent (as well as mistakes) are turned into bizarro behavior. Why we accept this is beyond me. For C, in particular, it has made writing code that uses plain old C ints way more challenging than it needs to be, among other things. We need to rethink what is important: a little more performance, or representing (to our best possible guess) what the programmer actually intended. </rant>

<comment><USER21> > We need to rethink what is important: a little more performance, or > representing (to our best possible guess) what the programmer actually > intended.

I remember reading an old book about implementing a compiler. The book actually recommended that compilers should make an effort to fix simple mistakes; e.g., compilers should add semicolons if needed, check whether an undefined variable or function was actually a misspelled variable or function, etc. I wasn't sure whether I should laugh at the naivety or shudder about what kind of code that would have led to. Especially given that each compiler would be lenient in different ways from competing compilers.

<comment><USER35> This is basically what happened in real life with HTML, with the results you predict.

</comment></comment></comment><comment><USER30> icc does this as well on the same example.

<comment><USER15> GCC is the most fun, jmp straight into the uninitialized function pointer.</comment></comment>


Why we must oppose the new copyright directive - <AUTHOR> https://blog.joinmastodon.org/2018/06/why-we-must-oppose-the-new-copyright-directive/ <comment><USER2> That article does not seem to have a date. Since this is a very time-related subject, it would be very helpful to have one.

<comment><USER3> [https://blog.joinmastodon.org/](https://blog.joinmastodon.org/) lists 25.6.18 as the date.

</comment></comment><comment><USER4> Couldn't the internet community at large create their own sovereign nation, w/ an elected parliament to basically overrule the EU, if the EU enacts legislation for the 'internet', or other nations the internet can sever all connections w/ that location and they can go build their own internet if they choose or they can back down w/ their demands/unethical laws?

Or heck the internet gov't could impose 'tariffs' on nations in EU, on all data to pay legal fees.

I can see a lot of American businesses just stop allowing EU traffic, that would obviously cut back on a lot of issues.</comment>


Ask HN: Cheapest and best MacBook? - <AUTHOR>

I'm currently looking for a MacBook to use primarily for code, note taking possibly some minor AI/PS as well.
I've used desktops only so far, so I was wondering what the best model to choose would be
Is an Air good enough? Or will I need a Pro? <comment><USER2> I use a 2009 MBP with 4G RAM and 240G SSD. Need to replace the battery. Still going strong.

If I was buying new, I would go for an 13" MBA with 8G RAM. The i7 upgrade is nice to have but not essential. As for storage I would settle for 256G SSD and use a USB3 external drive for backup and non-active storage.

For me: The 11" MBA screen is a bit small and battery life a bit limited. The MacBook keyboard bothers me and the 12" screen feels smallish too. My eyes are not that good, so the Retina screens don't make that much difference. YMMV.

Of course, if money was no object, then a 15" MBP with the lot would be my choice :-)

</comment><comment><USER3> MacBook Air - nice and light. I even dropped a cup of coffee all over the keyboard when I just had it, 4 years ago. Still running without any issues besides battery life but that's probably my fault and easy to replace.

</comment><comment><USER4> MacBook Air. Great design, really lightweight and should be good enough for coding. (editing photos etc will require a pro)</comment>


Simplifying the Page Security Icon in Chrome - <AUTHOR> https://googleonlinesecurity.blogspot.com/2015/10/simplifying-page-security-icon-in-chrome.html <comment><USER2> Wow, this is incredibly stupid: conflating http and https with minor errors. It should show half a lock icon and half of a page icon, diagonally-split to indicate mixed/unsecured content. Globbing the two together creates false comfort and hides problems.</comment>


Layman's Guide to the Banach-Tarski Paradox - <AUTHOR> http://www.kuro5hin.org/story/2003/5/23/134430/275 <comment><USER2> This has been brought up here many times:

<http://searchyc.com/banach+tarski>

I actually think the wikipedia article is pretty good:

<http://en.wikipedia.org/wiki/Banach-Tarski_paradox>

I think the article lunk to here is not actually a very good explanation. It mixes folksy and technical too freely, really being neither one nor the other, and even though I actually know the proof quite well (and its 1D and 2D relations) I still found it unhelpful and awkward.

YMMV - I'd be interested to see if anyone here finds it enlightening.

<comment><USER3> I think it was pretty good. Its not really for people who don't know math, but for people (like me) who know _some_ math but have never looked into the paradox. The key here is to explain what pieces means and the whole cloud idea. With that, I sorta get it (I think so anyway, I'd need to understand the proof better to see if my intuitive feeling is correct).

That being said, I notice a problem immediately. Why do we need 4 pieces? From the explanation, its pretty much giving a sort of "algorithm" for creating the 4 (or 5) pieces. Essentially, start somewhere, and go around and around, and put each "atom" into one of 4 sets. I.e. the first "atom" goes into the first bucket, the second atom into the second bucket, etc... Then, take bucket 1 and 2, and translate them (really just to avoid intersection) and then rotate set 2 so that the atoms are "half way" between those of set 1, and do the same rotation for bucket 4.

So... why not just call buckets 1 and 3 "bucket A" and buckets 3 and 4 "bucket B" and just do the translation?

I know enough to know that my "algorithm" doesn't work, but its what the intuition here suggests. So, there is still some gap in my understanding.

I'm curious how far an intuitive explanation can go. I'll take a look at the link someone else gave below, but does anyone have an intuitive answer to my question?

</comment></comment><comment><USER4> The initial description deceived me (e.g. the layman :-)). It used the word "piece" in a very technical way. Piece means contiguous chunk in layman's terms, it typically does not mean a set of fragments of the object (that would be many pieces).

If someone told me you could, mathematically speaking, take 5 piles of fragments of a sphere and combine them into two identical spheres, it would still be slightly mysterious, but it would only take the words "infinite density" to make it clear, instead of three paragraphs explaining what "piece" means. :-)

Anyway, I still thought the following explanation was pretty clear. It was probably not the absolute correct mathematical intuition, but what summarization of extremely technical topics are completely correct?

</comment><comment><USER5> I love Maths, but this one got me. I admit publicly it is beyond me. When I was small my grand mother used to tell me this story:

One night as the priest was lying with his wife, he said, 'Wife, if you love me, get up and light a candle, that I may write down a verse which has come into my head.' His wife, getting up, lighted the candle, and brought him pen and inkstand. The priest wrote, and his wife said, 'O Master of my soul, won't you read to me what you have written?' Whereupon he read, 'Amongst the green leaves methinks I see a black hen go with a red bill'.

To this day I have not grasped what she meant with this story.

Please can you remove the Layman from the title?

<comment><USER6> > To this day I have not grasped what she meant with this story.

The story is from a 19th century Turkish book: "The Turkish Jester: Or The Pleasantries Of Cogia Nasr Eddin Effendi" (<http://www.gutenberg.org/etext/16244>).

<comment><USER7> For many more (and rather better written) Nasredin stories (all of which are highly interesting, entertaining, illuminating, or all three at the same time), see my father's story-blog:

<http://nasredin.blogspot.com/>

Start from the first one:

[http://nasredin.blogspot.com/2007/10/yes-there-is-nothing- ne...](http://nasredin.blogspot.com/2007/10/yes-there-is-nothing-new-in-world- but.html)

</comment></comment></comment><comment><USER8> Simple version of B-T in 1D:

[http://www.math.ucla.edu/~tao/resource/general/121.1.00s/tar...](http://www.math.ucla.edu/~tao/resource/general/121.1.00s/tarski.html)

</comment><comment><AUTHOR> for those who want to have a go at a better/more mathematical exposition, <http://www.math.hmc.edu/~su/papers.dir/banachtarski.pdf> is an excellent rigorous exposition.

<comment><USER9> And Stan Wagon's book "The Banach-Tarski paradox" is outstandingly good. (But intended for mathematicians; look before you buy.)

</comment></comment><comment><USER10> I understood the paradox but did not buy the explanation at all.

<comment><USER11> It's not a great explanation b/c it doesn't go into what "measure" and "volume" mean.

Tough to do without going through a full course but a slightly-less-handwavy explanation would go like this:

There's a mathematical tool (called measure) that formalizes-and-generalizes the notion of "volume".

It generally behaves very much as you'd expect; your intuitions about how "volumes" combine and intersect will generally apply.

There's a catch, though: the way the tool is constructed leaves open the possibility of a non-measurable set, meaning a set for which the definition of the tool leaves you unable to assign that set a well-defined "volume"; you can't just assume that the measure of a set exists.

If you assume the Axiom of Choice then not only are such sets possible, but you can construct non-measurable sets.

The core process in Banach-Tarksi looks like this:

(1) take the sphere (a 'nice' set, which we'll say has "volume" V)

(2) divide that sphere into some sub-sets that are non-measurable (are sets for which our tool cannot supply a measurement) (2.a) Effect on total volume: should have no impact, as the parts we have reassemble to an object of known volume

(3) move the subsets around by sliding-and-rotating them (3.a) Effect on total volume: should have no impact, as neither sliding nor rotating changes volume

(4) wind up with 2 spheres (both 'nice' sets, each with "volume" V)???

The paradox comes from getting double the volume through a sequence of operations that are apparently volume-conserving.

You can go with this a couple different directions.

I'm not convinced this _should_ be an intuitive outcome.

An intuitive, hand-wavy explanation for what's "really going on" would be something like non-measurable sets carry around infinite amounts of finely- detailed structure (too finely-detailed to perceive using our measuring tool); depending on how you position some sets relative to each other their finely- detailed structure might either cancel out (adding no volume) or reinforce each other (adding lots of volume).

That said I think the real lesson here is that your intuition is trying to have its cake -- a non-measurable set -- and eat it too -- have the "volume" of a non-measurable set be preserved under volume-preserving operations.

</comment></comment><comment><USER12> my first thought is: this happens all the time, if by tiny pieces you mean atoms. gently heat a balloon until it swells to twice its size. am i missing something?

<comment><USER13> A balloon is mostly empty space. The paradox deals with solid spheres rather than atomic matter.

<comment><USER12> true. what i meant was that my off-the-cuff physics radar did not automatically think this was impossible. i used a gas as an example, but solids can also be restructured into different volumes and shapes. for example, diamonds, charcoal and graphite. i'm no doubt missing the precise definition of the math problem...i was just responding from my practical layman perspective.

</comment></comment></comment><comment><USER14> It occurred to me that a better way to approach explaining the B-T paradox to a layman might be through the story of the infinite hotel. If you aren't familiar with how an infinite hotel that is full can still make room for an infinite number of guests, a good introduction is here: <http://diveintomark.org/archives/2003/12/04/infinite-hotel>

Let's assume you know and understand the infinite hotel thing from one of Martin Gardner's books, the link above or any other source. Visualize a number line with the points 1, 2, 3, 4, ... on it marked as "rooms". Now when you make room for just five new people, by moving existing guests 1->6, 2->7 and so on, and freeing rooms 1-5, you can look at it as shifting all the "room points" five units to the right. When you need to make room for an infinity of new people, and you move guests 1->2, 2->4, 3->6 and so on, this isn't a simple shift, because points move non-uniformly: the farther away, the farther you move. But it turns out that that's just because you don't have much freedom of movement, so to speak, in one dimension.

It's even more useful to look at the hotel process "in reverse": say you have all the rooms taken, now people in rooms 1, 3, 5, 7... all move out and renumber themselves, founding another hotel of the same kind, while people in rooms 2, 4, 6, 8... squeeze together, each moving to the room half their original number. So you start with one hotel and you get two identical ones, again with all the rooms taken. And again, the manner of movement here is non- uniform, but it's because one dimension is too crowded.

In two dimensions, there's a way to shift an infinity of points to become two identical infinities, but all the movement is simple shifting together or rotating together. You divide the points similarly to the even versus odd numbers division in the hotel example, but because you have a lot more space to move around in two dimensions, it turns out you can move all the "evens" and all the "odds" uniformly with respect to each other, as if you were shifting and rotating them together in the physical world. But the end result is the same: two infinities where one was, and the basic idea is just the one with the hotel rooms. The actual way you divide the points into two groups in two dimensions and shift/rotate them is the tricky technical part of the proof you'll have to take on faith here. It's not very complex math, but it does require some abstract higher math knowledge, at about the level of a math major college degree.

OK, so given all that, what do we do with a ball? In a ball, we first look at just its surface - the sphere - which is really two-dimensional. You can take an infinite mesh of points in two dimensions - the one we learned to "duplicate" with the hotel process above - and stretch them over the sphere, like a lattice. It's not too difficult to show that by wiggling around this lattice of points you can cover the whole sphere with its copies, and the tricky hotel-like rotation and shifting that you do with one lattice, you can do with all of them together in sync. So it looks like we are breaking the sphere down into two parts, and shifting/rotating them around to get two spheres next to each other. Each part is the composition of one half of the infinite lattice - one half of the "hotel rooms" in the two-dimensional hotel - collected over all the wiggled lattices together. Only it turns out to be more complex to unify them like that, so it requires four parts and not two.

Now, these four parts are unbelievably complex-looking. Just as with the original hotel puzzle there's a break with intuition where you get two of the same from one, here you do this infinitely many times at the same time, in two dimensions. Nothing like that could be done in the physical world. You're basically taking the sphere, breaking it down to individual points, and them juggling them very intricately hotel-like in an infinity of configurations together. The point is, any intuitive notion of "volume" or "space taken" by the sphere breaks down in this process, becomes irrelevant. With the infinite hotel, two hotels are also taking up twice more "space", but we don't perceive _that_ as especially freaky on top of everything else, because they stretch to infinity anyway. But they don't have to; there's an infinity of points inside a fixed volume too. You could host the infinite hotel on a surface of a sphere if you were willing to make the rooms really tiny (one point each), and this is kinda what happens in the Banach-Tarski paradox. So the paradoxical sense of getting something from nothing is because in the physical world, we can never go to the scale of individual points, where the notion of "volume" loses relevance. But in math we can.

Well, back to the ball - if I convinced you, with lots of handwaving, that you can break down the sphere into four unbelievably complex-looking parts and reassemble them into two spheres, balls are now easy. Every time you do something to a point on the sphere, think of a ray from that point to the ball's center, and do exactly the same shifts and rotations to all the points on that ray. This way, you're sort of shifting and rotating many concentric spheres at the same time, all the way from a single point in the center to the surface of the ball. And each sphere gets reassembled into two of the same, so the entire ball gets reassembled into two of the same. You do need a bit of a special treatment for the very point in the center, and that's your fifth "part".

<comment><USER15> Your response is a reasonable explanation of Hilbert's hotel paradox, but that paradox is really different from the Banach-Tarski paradox. In particular, the Banach-Tarski paradox is _false_ in two dimensions. (One technical reason for this is that you can embed a nonabelian free group into SO(3), the rotations on the sphere, but not into SO(2), the rotations on the circle.) This means that you should not think of the Banach-Tarski paradox as being a Hilbert- hotel-like statement about a two dimensional lattice.

</comment></comment><comment><USER16> There is always a gap between formalism and intuition and sometimes quite interesting things happen between these gaps. The Banach-Tarski paradox is labeled a paradox because it says something about how geometry and topology are formalized in set theory. There are other formalizations of geometry and topology where such things are not possible.

</comment><comment><USER17> [http://www.biblegateway.com/passage/?search=Matthew+14%3A13-...](http://www.biblegateway.com/passage/?search=Matthew+14%3A13-21&version=KJV)

Now, quick: what happened to the 2 little fishies?</comment>


Microsoft President: Democracy Is At Stake. Regulate Big Tech - <AUTHOR> https://www.npr.org/2019/09/13/760478177/microsoft-president-democracy-is-at-stake-regulate-big-tech <comment><USER2> > that governments need to put some "guardrails" around engineers and the tech > titans they serve

The evil engineers! Not the managers, CEOs and so on, but engineers. The true root of evil.

Finally someone recognizes who's really at fault </sarcasm>

<comment><USER3> Stop pushing the blame upstairs. If you knowingly build software that hurts people, you share the blame. The job market for programmers has never been better. "My boss told me to do it" is not an excuse.

I, for one, hope more engineers involved in fraud (eg VW), privacy breaches (eg Facebook) etc get tried and punished. It might help make programmers realize that yes, your work actually affects real humans and yes, you're partly responsible for getting it right.

If your boss makes you write evil crap, quit and get a better job. No need to be all courageous and write an angry blog post, most of us are wimps and that's fine. But that doesn't mean you can't vote with your feet. We need engineers to stop being willing to work anywhere as long as the pay is good and the tech is cool.

<comment><USER4> The moment you open that door you have created the ultimate scapegoat in every corporate decision. Now every engineer is personally responsible for corporate decisions. It's easy when you look at VW and Facebook, but the more nuanced these things get, the more that what your advocating for is that programmers have to be lawyers as well.

This horrible precedent and pushes the blame for _everything_ downstairs. Meanwhile, corporate execs have the very corporate shielding you're advocating that _engineers_ don't. Maybe you think they too shouldn't have such protections, but how you can advocate for personal liability for programmers without _first_ implementing personal liability for executives is beyond me.

This so incredibly short-sighted.

<comment><USER3> I don't advocate that corporate execs have shielding and the engineers don't. Where did you read that?

It sounds to me that you're misreading my comment on purpose, to make an us- vs-them argument that I fundamentally disagree with. This isn't about engineers vs bosses, it's about doing the right thing no matter what's on your business card.

The argument "if we can't shift the blame up, it'll automatically go down" simply doesn't make sense to me. You, and you alone, can choose to stop building evil shit.

<comment><USER4> I read that by the fact that you only talked about punishing engineers.

And I'm not misreading your comment on purpose, trust me I had to read it 4 times just to make sure I wasn't crazy and I was actually reading what I thought I was: someone advocating that bottom of the food chain employees be criminally liable for code they write.

You are making an us-vs-them argument, to be sure. Your "us" is consumers and your "them" are employees, rather than corporate executives that make the decisions.

I'm not a lawyer. I expect if I'm being asked to do something, it's been vetted by our corporate legal team. I should not be expected to know every aspect of criminal and civil law to protect myself _from my employer_.

What you are suggesting is absurd, but fortunately, I think most would agree with me on that.

<comment><USER5> Disagree. The idea that whatever you are asked to do has been vetted by others is an abdication of ethical responsibility. At present, a lot of what tech companies do is still legal, but that doesnt make it right. It's still legal because the maps of cyber law are largely still uncharted. An engineer working on a project that tracks user behavior without consent (for example) shouldn't be absolved or responsibility because their manager said it was okay.

<comment><USER6> Sometimes it is not clear cut.

Getting the same result in different ways can legal or not:

 _Obvious example:_

Saving a x amount of money from taxes using a legal loophole is legal.

An exact equal company trying to save the exact same amount of money by lying to is doing something illegal.

 _Far less obvious example:_

Around here (and possibly elsewhere, I don't know) if you make a drink from wine and spirits you have to pour the spirit first because increasing the strength of wine is illegal, but decreasing the strengt of spirits are OK.

<comment><USER7> A curious alcohol law with an interesting side effect. Where are you located?

<comment><USER6> Norway.

I thought it was an old joke, but someone I have reason to believe said it was true and you could get in trouble for it.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> The threats to democracy arguments are so overblown. We're about to have a huge election. There is no literal threat to democracy. Hmmm...it must be some kind of metaphor.

So what do people mean when they say this? The NPR piece says Smith suggests "the Internet giants will cannibalize the very fabric of this country". This metaphor seems hyperbolic as well. To use "cannibalize" means that something will eat itself. So, they Internet giants are the fabric of the country and they will eat the fabric. Something is missing there.

The next paragraph then negatively describes Smith's regret of his previous calls for deregulation. This seems firmly unrelated to democracy, as all forms of government have regulation, and regularly adjust regulation to get better effects. However, it does seem related to the power of government over organizations such as Microsoft. Is the "threat to democracy" really meant to indicate the loss of the power of the government over individuals relative to increases of power of other organizations?

"For one, he argues, it's time to reform the U.S. law that says Internet platforms are not liable for just about any of the content running through their pipes" This would dismantle the Internet. Did he forget to read [https://www.amazon.com/Twenty-Six-Words-That-Created- Interne...](https://www.amazon.com/Twenty-Six-Words-That-Created- Internet/dp/1501714414) ? It would force your ISP to become a censor. It's the complete opposite of the idea of moving power towards an elected government and away from corporations.

Anyway, I was worried for a bit reading the headline, but it looks like our elected government is safe for the time being and this is just more hyperbolic bullshit.

<comment><USER9> > There is no literal threat to democracy.

What would you consider a threat to democracy?

<comment><USER8> New limitations on which candidates can run for election.

New limitations on which citizens can vote.

Interference with the vote collecting and counting processes.

Not respecting the outcome of an election.

Those would all be threats to democracy. What isn't a threat is Google, Facebook and Amazon trying to guess which ads you'll click on.

</comment></comment></comment><comment><USER10> The claim that big tech itself is a threat to democracy needs to be debated. While they do manipulate their customers and sell their personal information for profit, the companies themselves have also been manipulated by the various groups in the world that are the actual threat to democracy.

The political polarization might not be caused by technology but instead only amplifies it.

One example where the tech companies are "guilty" is by having everyone live in their own confirmation bias bubble which is enabled by the algorithms they created. What we seem to forget is that we all lived in confirmation bias bubbles before the internet.

We all believed our own local version of what the United States was until the various points in history where the dissonance was interrupted.

Now globalization and social media have shown people how different their respective views happen to be, feeding the polarization even more, and we find it easy to put the blame on technology.

<comment><USER11> The only part of your argument that's relevant is the part about selling personal information for profit. The rest is immaterial to the problem with unregulated industry, and in fact incorrect when it comes to the end-result of things like "political polarization". Governments and private companies are _more than happy_ to see the mass organization and demonstrations of the 20th century turn into yelling at auntie on Facebook. Social media is the /dev/null of critical thought; a pressure valve for grievances that can be quickly assuaged by faves. The polarization of views online just makes us more silent IRL, much to the delight of our employers.

<comment><USER12> The article itself barely touches upon the titular "stake." NPR inserts "election interference" and Smith is quoted in reference to personal data acquisition as a potentially dangerous wealth transfer/concentration.

Since election interference is widely reported and understood to have been an intel operation aimed at polarizing U.S. public opinion with legitimate and illegitimate information, I dont see how treebeard is irrelevant.

Sidenote: It's still unclear, to me anyway, just how effective the influence was. In these crazy times, I should clarify that I'm not denying it occured.

<comment><USER13> Even beyond how effective the election manipulation was or wasn't, no one is asking whether the vague 'regulations' (by the US gov?) will do anything useful at all.

I suspect not but this all sounds reactionary "something must be done" where the utility of the something is always downplayed.

<comment><USER12> Agreed, of course. And, thanks for bringing my sidenote back onto topic (:

The subject of the article is not too well-defined, which reflects our inability to come to terms with the associated Big Issues. So, yeah, it's difficult for me to imagine forward thinking regulation coming out of the current conversation--such as it is, in main editorial media and government.

In my personal life, having a productive conversation about the current and future impacts of data (non)privacy is next to impossible due to the inherent complexity of integrating the subject with pre-existing ideological frameworks. I do not think I'm brighter than them, just happen to have a long- standing interest. Based on observation, politicians seem no better equipped.

</comment></comment></comment></comment></comment><comment><USER14> Make no mistake, this is just MS calling for regulatory capture so they have few people to compete with their products. They are in it for their profits, not the good of mankind.

<comment><USER15> Any time I see a statement put out by any of the tech incumbents, I ask myself, "How does this statement benefit the company?" And usually, there is a clear path to an answer. It's for profits, it's never for the public good. These are companies after all. If they're asking to regulated, it means buying a seat at the table, creating the illusion of regulation, with none of the downsides imposed by actual regulation.

<comment><USER14> From the 80s until the 90s Microsoft never lobbied the government, and they dominated. They got hauled in front of congress and were chastised for not lobbying, then a year later were hit with their infamous antitrust suit. The government bullied Microsoft into paying them off - just like the damned Mafia, except it's legal. Now we see Microsoft begging the government to basically do this AGAIN. It's sick, corrupt and a perversion of capitalism and democracy.

</comment></comment></comment><comment><USER11> Nothing more than a cynical play by Microsoft to get a seat at the table for the inevitable avalanche of regulation coming.

<comment><USER16> Tech incumbents have an incentive to argue for regulation since they typically his small companies harder.

</comment></comment><comment><USER17> It sounds like he wants to require tech companies to ban speech that the US is constitutionally forbidden from banning itself.

<comment><USER18> Yeah its not really about protecting democracy it always boils down to protecting monopolies from competition.

<comment><USER19> Money does not care about democracy :)

</comment></comment></comment><comment><USER20> Once upon a time public opinion was manipulated by TV and the big newspapers; now it is manipulated by new media companies. My stupid question is: where is the big difference?

<comment> barry-cotter The people who used to be able to manipulate public opinion are really, really pissed off that others are doing it and they're even more pissed off that manipulating public opinion has become more difficult and people who aren't respectable members of the elite are being listened to by the public.

Before the internet Sanders, Trump, AOC, Yang, they would never have gotten anywhere. The ruling class is pissed off that people aren't doing what they're told and they want to stuff the communications revolution genie back in its bottle.

<comment><USER21> To tell you the truth, I think that Trump would have done well in any political era, particularly those where unflagging public speaking was necessary to get the gig.

Good political instincts, ability to speak extemporaneously (a rare ability in the modern era). I expect that he could have picked up a House seat fairly easily on the way to a Presidential campaign as sort of a Williams Jennings Bryanesque character.

I do agree though that the internet has changed the character of politics (painfully obvious). Anything that breaks the back of newspapers and broadcasters as gatekeepers isn't such a bad thing, the trick is to avoid having youtube/facebook/etc. become activist successors to the NYT and CBS.

</comment></comment></comment><comment><USER22> There is actually a pure free market solution to this problem.

Microsoft should sell their stake in Facebook and publicly announce they are distancing themselves from FB. The dominos will just start falling automatically, one by one. For _sure_ , it will start some serious soul searching among the companies whose primary business is data exploitation.

But of course, this will not happen, because Microsoft desperately needs Facebook to be strong so that its AI team can actually challenge Google's dominance in AI (Tensorflow).

[https://internetofbusiness.com/microsoft-and-facebook- team-u...](https://internetofbusiness.com/microsoft-and-facebook-team-up-on- open-source-ai/)

So we keep hearing these weird platitudes by folks who probably are never going to be affected in any big way by this so called "cannibalization of the fabric of this country".

</comment><comment><USER23> If they pass a law requiring platforms to be responsible for content their users post, it'll be easy for big incumbents like Facebook to fall in line.

It will be much harder, however, for new platforms with less resources to comply. They may have to shut down instead.

<comment><USER24> Yea but that would kill Facebook by a 1000 lashes overtime.

<comment><USER25> So killing any startup's chance of hosting user created content is ok as long as it kills Facebook?

<comment><USER24> You are most certainly putting words in my mouth. The words on the internet should be protected under the 1st amendment no matter how disgusting and no one should have to shoulder that burden except the members of society themselves in how they go about their conduct. In my opinion, it is not people's responsibility to be unoffensive, but rather it is our own responsibility to not let offensive thoughts permeate our being.

<comment><USER25> My apologies. I went back and reread your comment and I clearly misread it

</comment></comment></comment></comment></comment><comment><USER26> Says the president of the largest spyware ("telemetry") distributor in the world

<comment><USER27> "Please regulate the competition!"

<comment><USER28> True, but that's because given their revenue model, this would impact them less than the corps which have embedded their tentacles deep into personal data of their users. Adtech is, by now, addicted to people freely giving up thief data and rights to their data.

Never the less, whatever happens when the elephants wrangle, it's good for end users.

</comment></comment></comment><comment><USER29> Big tech is a threat to democracy? What a backwards, self-serving hunk of junk. Big tech might be the only way to sustain democracy. Technology gives governments the power to instill a lasting total dictatorship, something completely unprecedented in the history of mankind. Of course they are afraid that big tech takes away from their pie by becoming too powerful and preventing them from setting us up for an eternal dictatorship.

Wake up people. China is the canary in the coal mine. If big tech doesn't step up and provide some sort of a shadow government, pressuring our real government, we are actually really screwed. Going forward, the government NEEDs to be undermined by the private sector, this is the only way to provide a power balance.

<comment><USER30> Corporations aren't accountable to everyday people, democratic governments are. Both big tech and big government should be kept in check, but governments accountable to their populace I think are the only realistic way to keep technology companies in chexk.

</comment></comment><comment><USER31> What I'm worried about is, Europe doesn't even have this debate. It's all currently in the hands of where those technologies were invented, America. It leaves you, US people, to arbitrate between freedom of speech and hate censorship, monopolies and fair competition. Whereever we go in terms of defining democracy and what it means at the time of technology, we're dependent on you. Europe certainly, probably Asia too.

Example of the current status of France: \- We don't have protected freedom of speech, there are penalties for insults, defamation and hate speech (against the protected groups only) (statistics about ethnicities are forbidden, which means no statistics about crime and ethnicity) (applied only for influential people, it seems), people have an expectation of what is said has been verified so they are not used to checking the info so they are... gullible (sorry, no better word). So I would say there is no tradition of free speech here, with the usual required education that goes with it (about the fact that people can freely tell lies).

\- The new law is about to enter in action: Platforms must remove « hate speech » content, and keep it (I don't know how much time) so the police can build a case if they want to attack.

Recently, stories about the books published by our minister of equality using a false name (books about advice for sexual life) have been removed, using the « hate speech » procedures. So pretty much everything is hate speech. We have no protection for political dissidence here. Everyone's a progressive, everything else is « hate speech » and problems grow because they are not addressed.

</comment><comment><USER32> I don't disagree, but this is an easy thing to say when you're a competitor of companies that would be hit much harder by that regulation.

</comment><comment><USER33> > For one, he argues, it's time to reform the U.S. law that says Internet > platforms are not liable for just about any of the content running through > their pipes — hate speech, death threats and ads for counterfeit goods or > illegal guns.

Only if it comes with full regulation of said platforms as publishers, which they would then be - and imo already are today.

Enough with this having it both ways.

</comment><comment><USER34> Perhaps not really relevant to the discussion, but what is the role of Microsoft's president within the company?

<comment><USER35> Runs the commercial side of the company (sales/marketing/operations). No direct control over product development.

</comment></comment><comment><USER36> Would I be wrong to translate as follows?

>Today, the tech giants — whose tools have been used to interfere in fair and free elections — are posing a much bigger threat to the political stability of many countries, including the U.S.

"Democracy does not work because people are easily manipulated by propaganda, so we need enlightened overlords to create better propaganda that will manipulate people to support my interests... uh, I mean, to support what's good for them."

>Smith has proposals that are not popular in Silicon Valley. For one, he argues, it's time to reform the U.S. law that says Internet platforms are not liable for just about any of the content running through their pipes — hate speech, death threats and ads for counterfeit goods or illegal guns.

"I love censorship. Let's have more of it!"

</comment><comment><USER37> For those you don't know: Brad Smith was the chief legal officer who got Microsoft out of Antitrust with a slap on the hand. For this marvelous achievement, he has since been given promotions all the way to the position of the President.

</comment><comment><USER35> I see a lot of criticism that this is self-serving by Microsoft, that they're advocating for regulation that will hurt their competitors like Google and Amazon much harder than themselves.

I say... *that's great." Privacy advocates can get one of the world's most powerful companies as an ally, just by a common self interest. I don't mind that this is self serving from Microsoft, I hope they are successful. Other allies could be the media companies hurt by Facebook, advertisers bidding up each other on Google, etc. there should be a selfish coalition of privacy defenders just to protect their own businesses.

</comment><comment><USER38> The problem isn't a lack of regulation. Increased regulation could be a partial solution.

The problem is a weak economic model. In the online economy software (products) have little or no value. The value is placed almost entirely upon media and data transactions. Those two are symbiotic but they are neither the same nor codependent. This economic model is what needs to be fixed.

Entrepreneurs out there if you want to do good for the world, make absurd money, and be disruptive then that economic model is what you should disrupt. Go, disrupt the shit out of it.

</comment><comment><USER39> Hard to take something like this seriously coming from Microsoft's president. Either he wants regulation to keep competition out or to hinder competitors or he'd regulate Microsoft himself if he really believed in regulation. He doesn't. This is just a ploy. Should these companies be regulated? Of course. But let's not believe they want it for the good of everyone else. They have selfish interests only. Period. Believing this drivel is foolish.

</comment><comment><USER40> Warning. Regulation almost always favors incumbents.

<comment><USER41> This argument is always repeated within the first ten minutes of these discussions, but I don't really understand why anyone assumes that competition is somehow the panacea to every problem on the planet.

I don't want ten unregulated facebooks who all leak my data, I want one facebook that plays by reasonable rules. The dynamics of social networks which don't deliver value if they're fragmented has made the competition focus obsolete. When Zuckerberg makes this point he is obviously speaking in his self-interest but he is absolutely right and the dominance of his platform proves it.

The world isn't better off if half of the information is on bing and half of the information is on google, the world is better off if those large companies which do deliver benefits to end consumers by virtue of their centralisation are bound by law to implement reasonable standards.

<comment><USER42> This oversimplified "regulation is bad" idea is pushed by a lot of think tanks (e.g. CATO, americans for prosperity, freedomworks, heritage foundation) set up by the Koch brothers. They have close links with the media, which is why these weirdly specific views get parroted a lot.

If you've ever read a story about the evils of hairdresser licensing (for instance), it's from them. They have been on a crusade against regulation since a lot of their fights with the environmental protection agency.

<comment><USER43> You make it seem like some weird fringe view funded by a handful of people. To the contrary, it's been the dominant mode of public policy since the 1980s across the whole western world. Reagan, Clinton, Thatcher, Howard, Harper, etc. Even Trudeau and Macron, who are ostensibly left-leaning, are doubling down on privatization and deregulation: [https://www.theguardian.com/environment/true- north/2016/nov/...](https://www.theguardian.com/environment/true- north/2016/nov/22/justin-trudeaus-giant-corporate-giveaway;) [https://fee.org/articles/emmanuel-macron-is-surprisingly- pro...](https://fee.org/articles/emmanuel-macron-is-surprisingly-pro-market- for-a-socialist-sometimes/)

The top 10 countries in the Koch-funded Heritage Foundation economic freedom index doesn't even include the US: [https://www.heritage.org/index](https://www.heritage.org/index). (It does however include the entire rest of the Anglosphere.)

<comment><USER19> >who are ostensibly left-leaning

They absolutely are not. They're capitalists, neoliberals, in all senses. There are no left wing economic policies being created anywhere in the western world right now.

<comment><USER44> They would have to be, because they favor deregulation. You can't define your way out of an argument. If "everyone in the western world" operates this way, you're making his point for him.

</comment></comment></comment></comment></comment></comment><comment><USER43> What is the economic rationale for regulating "big tech?" What market failure would be addressed by such regulations?

</comment><comment><USER45> Convenient thing to say when your company has already gone through antitrust where as your competing tech companies have not.

</comment><comment><USER46> Brad Smith clearly wants to corner software engineers and leave them no choice, but to unionize. I understand that this is not Brad's idea and he just delivered the message from the MS board meeting.

However the big tech does need regulation and this regulation is called GDPR. We need laws that make it a criminal offense to use user data without an explicit written consent in a standard form set by law per each use of this data.

</comment><comment><USER47> > that governments need to put some "guardrails" around engineers and the tech > titans they serve

No. We don't need "guardrails" at all. We have an existing legal system that works quite well to discourage companies from profiting from ventures we don't like: we simply make those ventures illegal. Companies have been able to make a profitable business out of harvesting personal data, abusing consent, etc., _because these things aren 't illegal_. GDPR et al is the start of laws in this area, but a financial penalty is simply a business cost. If I can make $500B with a 25% chance of a $5B fine, the rational action is of course to proceed.

If there was a law about certain types of consent being legally required for certain types of data, THEN an engineer, manager, or exec can decide to either a) report the violation to authorities or b) become complicit themselves. When breaking these laws comes with real penalties (jail time, not fines), then the business can choose between a) do something illegal and government puts everyone in jail and takes all assets or b) don't do something illegal, which is exactly what we want.

Bottom line: No special regulation is required here. Simply make a law extending the personal data productions afforded by existing regulations and let the system do its job.

</comment><comment><USER48> Regulate yourselves, FFS. I don't want my paid operating system to send my private information constantly to your company.

<comment><USER49> Quit using software you can't control.

\---

> And what? Use 'Linux desktop'? No thank you.

Yeah, it's pretty amazing. My wife uses it. I've used it for the past decade. XFCE is fully featured, smooth, and very light-weight. Others have been great too. Want software? Just install it with the package manager. Games? I used to run them in a windows VM when I really wanted to.

<comment><USER50> That is naive. Organizations and people depend on specific software and there is not replacement for any kind of app that is spying on you.

<comment><USER49> I've been doing it progressively over the past 10 years. I don't carry a smart phone (I'm looking at Linux ones now though). My wife and I use Linux on our laptops. I'm learning more every year about how to control it.

It's not naive, it's just difficult. But it's worth doing.

\----

What worth do I get? I get expertise. I get knowledge. I'm a programmer. I don't have a OS sending my information to Microsoft. I don't have to worry nearly as much about malicious software. I don't have to run an Antivirus (AV) and AV scans constantly to feel confident in my computer's security. I get access to powerful open-source software. I get to keep learning about even more powerful software - repeatable environments and builds, that give me even more confidence in my ability to create value for myself and others. I get a lot of value for it.

<comment><USER48> And what 'worth', may I ask, did you get?

</comment></comment></comment></comment></comment><comment> sorin-panca In the wake of left wing alternative media gaining momentum, and left wing representatives and candidates enjoying huge public support, Microsoft now wants regulation on platforms.

</comment><comment><USER51> Expropriate Microsoft.

<comment><USER52> Why?

</comment></comment><comment><USER53> Zuckerberg & Co are going to play the 'we will loose to China card'. Which is going to slow down any kind of regulations...

What's weird is, why there is no great rumbling against China's big tech within China. By now Chinese big tech should have wrecked the same unintended consequences and damage as American big tech. Whats going on there?

I am guessing once things blow up there then we see global consensus on regulating Big Tech.

<comment><USER54> China isn't a democracy?

</comment></comment><comment><USER55> Why can't big tech self-regulate? Why must it always be a solution that depends on big government instead? Why should anyone trust the government given the last few thousand years of history?

<comment><USER56> Why do we need big government to prevent us from stealing or killing each other? Maybe the whole society should self regulate?

<comment><USER57> This is a straw man. A government can try to stop theft and violent crime without building regulatory moats around incumbent companies.

Though in many places governments aren't great at preventing theft and violence. That's why even in developed countries, many companies hire private security, citizens learn self-defense, and some people carry pepper spray, knives, or even firearms.</comment></comment></comment>


If this type of dark matter existed, people would be dying of unexplained wounds - <AUTHOR> https://www.sciencemag.org/news/2019/07/if-type-dark-matter-existed-people-would-be-dying-unexplained-gunshot-wounds <comment><USER2> It's an interesting article in spite of the silly title. The researchers made a joke article and it went more popular than the serious research article :(.

I propose to change the title to "Dark matter detection in traces in granite (and humans)" but it breaks all the official and unofficial guidelines.

Note that the volume and lifetime of granite is much bigger than humans, so if they didn't find any trace in granite they don't expect to find one in humans. Also, IIUC there is nothing special about organic matter.

How "loud" would it be an event like this in the middle of the sea? Can it be heard with the acoustic detectors to detect roge nuclear explosions?

<comment><USER3> Do you really find weird (or bad) that a joke is more popular than a boring research paper? It's a good way to wake people's curiosity about topics they never think about. Probably, it worked on you too as you have read the article :)

</comment></comment><comment><USER4> Hm. They claim to have zero unexplained gunshot-like injuries in Canada, the United States, and Western Europe over a ten year period. I find this hard to believe. Even if every gun injury was currently attributed to an identifiable shooter (a claim which would itself surprise me) miscarriages of justice are a known thing and people do get convictions overturned.

It's still an interesting idea, but where did "none" come from?

<comment><USER5> The article alludes to the answer, but the paper is linked in the article, and answers this more preciselyat the beginning:

> Hence their destructive effect is likely to be qualitatively different from > that of a bullet; a macro impact typically heats the cylinder of tissue > carved out along its path to a temperature of 10^7 K[18, 19], resulting in > an expanding cylinder of plasma inside the body. While some studies have > been done on collisions of hypersonic, micron-sized projectiles with fixed > targets[23], these differed significantly from macro collisions in that the > experimental projectiles were of much lower density, and the targets were > "hard" rather than "soft". Nonetheless, it is reasonable to take the kinetic > energy deposited by a macro as a threshold for significant damage to the > human body. Energy con- servation requires that the macro energy ultimately > be deposited in the body in some form, whether mechanical or thermal, which > will result in an equivalent amount of damage.

Victims would look they'd been shot with a laser bullet out of sci-fi. As is mentioned in the article, they found no evidence of bullet wounds that also featured vaporization of tissue.

> These deaths would not go unnoticed—they would leave victims dead or dying > with a tubular wound where their flesh was vaporized.

<comment><USER6> Presumably odd angles of entry would also be a clue. A shot that enters near verically while the victim was standing would be extremely unusual in a one- story building if you aren't expecting the "bullet" to have come from space

<comment> pure-awesome Also, wouldn't there be a tunnel all the way from the top of the building and through the person?

People would wonder if a government agency wasn't using some sort of drone or satellite weapon to eliminate targets.

</comment></comment></comment></comment><comment><USER7> From a terminal ballistics background, it seems very unlikely that this injury would appear to be a gunshot wound.

Bullets behave very differently according to their mass and velocity, not just their energy. A wound channel for this a particle would likely be very different from any bullet.

</comment><comment><USER8> Purely anecdotal at this point but I remember hearing on the news in the mid 90s about a woman in the Boulder/Denver area who was killed by a "stray bullet" of unknown origin while sitting in her house. So these types of deaths are not _entirely_ unheard of, if we just go by the scant details of this article.

<comment><USER9> Deaths featuring bullets that cause _tissue vaporization_ are pretty unheard of, though. These would cause a _very_ different sort of wound versus that of a bullet.

<comment><USER10> Also, if they find a bullet in you, it's a different sort of "unexplained stray bullet".

</comment></comment></comment><comment><USER11> Maybe this is what spontaneous human combustion is? People burst into flames randomly.

If this hit a human body and expanded as a ball of plasma, it might not look like a bullet wound like they think but it'd just burn the person alive, and there's plenty of recorded accounts of that happening.

Previously it's been attributed to the body losing control of its ability to regulate its temperature (homeostasis) but this mechanism seems way more plausible, they get hit by a particle of this that expands as a super heated ball of plasma and burns them alive inside out.

</comment><comment><USER12> This is a joke article, right? Isn't this like trying to prove meteorites by unexplained stonings?

<comment><USER13> It's clearly intended to be funny, but the reasoning is perfectly sound. If a particular kind of dark matter candidate existed, it would need to be distributed with a density that would result in occasional very obvious, very fatal collisions with people. Since we have no record of people dying due to inexplicably having large columns vaporized through their bodies, we can exclude this particular class of dark matter candidate particles.

The more serious component of the research focused on searching for these events in old deposits of granite.

</comment></comment><comment><USER14> This is an interesting outcome. It is something that I've also been bothered by the Dark Matter hypothesis which is how it is always "somewhere else". Dark energy theories tweak the equations the other way and are equally troublesome. The idea a bunch of people can be used as a detector is pretty humorous too.

I expect that resolving this question will be the source of many Nobel prizes.

</comment><comment><USER15> Reminds me of the concept of negative mass matter as dark matter. That would make getting hit by it very difficult as it repels and is repelled by regular matter and thus would constantly flee all normal mass. Not sure it would be very consistent with the observed universe though.

<comment><USER16> Actually, a: negative mass would have the _opposite_ effect as dark matter - gravitationally repelling all nearby matter - so you'd need even more dark matter to make up for it; b: negative mass is actually _attracted_ to positive mass[0], so quantaties of dark negative mass small enough to not have noticable gravitational effects would follow the same orbital trajectories as positive dark matter.

0: Eg, if you have two particles with equal and oppositely-signed mass in otherwise free space, they'll "fall" in the direction of the positive particle. The two-particle system has zero mass, zero kinetic energy and zero force driving its accelleration, which could be taken as a pretty good argument that negative-mass particles don't actually exist.

<comment><USER17> Does this mean if you had a rock of negative-mass and a rock of positive mass in space they would chase each other?

<comment><USER16> Yes; see second paragraph. It's probably highly unstable if there are any other gravity sources involved, but I don't have a good physics simulator on hand to check.

</comment></comment></comment></comment><comment><USER18> Finally a Kennedy assassination theory I can believe

</comment><comment><USER19> On a similar note: "How close would you have to be to a supernova to get a lethal dose of neutrino radiation?" [0].

BTW, this happens in the novel "Iron Sunrise" by Charles Stross, where people on an Earth-like planet suffer the misfortune of their star reaching (artificially) the supernova stage.

[0] [https://what-if.xkcd.com/73/](https://what-if.xkcd.com/73/)

</comment><comment><USER20> What is the probability of this occurring within a noticeable time-frame?

Without an estimate a lack of occurrence does not disprove anything. Even if dark matter is supposed to make up 85% of the universe it is unlikely to be distributed in the same way as other matter. For example if it does not interact with gravity, or as strongly, it could be comparatively uniformly distributed or at least more dispersed compared to matter. In which case the probability of a particle intersecting a human would be astronomical.

Just opening this door, but some actual estimates from those with the domain knowledge and experience would be nice.

</comment><comment><USER21> What if we just took a bunch of old steel I-beams, cut them into sheets, ground and polished them flat, then scanned with a scanning tunnelling electron microscope and looked for evidence of interaction with dark matter? You could run an experiment with observations going back to the production of the steel... 100+ years of data at the get go.

<comment><USER22> That sounds much more expensive, per cubic meter of material, than observing humans. You can observe a hundred million cubic meters of human just by reading medical reports.

</comment></comment><comment><USER23> What exactly was it again that leads humanity to assume dark matter is a thing?

Last I checked, it was the unexplained speed of the outer parts of spiral galaxies that lead us to assume that dark matter must be the cause.

Have there been any recent developments to further solidify that dark matter is a thing?

<comment><USER24> No, there are dozens of distinct verifications; its presence is established essentially beyond the shadow of a doubt. It is anything but an assumption.

See for instance [https://en.wikipedia.org/wiki/Dark_matter#Observational_evid...](https://en.wikipedia.org/wiki/Dark_matter#Observational_evidence)

Also [https://www.reddit.com/r/space/comments/a8vgm9/how_many_of_y...](https://www.reddit.com/r/space/comments/a8vgm9/how_many_of_you_think_that_dark_matter_is_just_a/) has a good summary.

<comment><USER25> ...and yet I find it weirder than what I understand of QM.

<comment><USER24> Then you don't know enough qm.

</comment></comment></comment></comment><comment><USER26> Well, we probably wouldn't; if it was common enough in that universe we'd probably have evolved to deal with it. And we might be very different.

<comment><USER13> Evolutionary processes aren't going to select for resistance to rare high- energy events. They are not common enough to significantly impact fitness and too drastic for small mutations to influence survival. Humans evolved from millions of years of hominid evolution on the African savanna, and have have evolved no immunity to lightning.

<comment><USER26> Well, yeah, if it was pretty rare it wouldn't have any effect.

</comment></comment></comment><comment><USER27> > a macro impact typically heats the cylinder of tissue carved out along its > path to a temperature of 10^7 K[18, 19], resulting in an expanding cylinder > of plasma inside the body

bummer</comment>


Ask HN: What's the best mental/physical change you made this year? - <AUTHOR> What was the best mental or physical change you made that has had the biggest impact on your productivity? <comment><USER3> I changed the way I read (non-fiction) books. In the past, I tried taking notes as I was reading the book, based on both published research - and my own anecdotal experience - regarding retention of read material. That was fine, except I found myself taking overly detailed notes, and sometimes it felt like I was all but transcribing the damn book I was reading. This process was also very slow. But I didn't want to give up note-taking altogether, so I decided to try something counter-intuitive.

Now, I read these books _twice_. I do a first pass where I take no notes whatsoever.. not even light pencil marks on pages or use of those fluorescent page flags. I read fairly fast (depending on how dense the material is) - <USER2> quite the way I'd read a novel, but not too far off. Then, almost immediately after finishing, I read it a second time; but this time I take my notes. Except now, having had the first pass, I already have a better idea of what the salient points are, and I find it easier to filter the note taking down to the high points. Note that on this second pass I will read very quickly, or even skip over entirely, certain sections, based on my prior knowledge from the first pass. This lets me focus in more on the really important stuff.

Anyway, I know it sounds weird, but I think I wind up spending less time with a given book, even though I'm reading it twice. And even if it's a wash on total time, I wind up with more focused notes. And probably better overall retention just for having seen most of the material multiple times.

So far I'm on about book number 4 or 5 using this approach, and it seems to be working pretty well. It may not be for everybody, but I'm going to stick with it for the time being.

</comment><comment><USER4> Fix in stone the time to go to sleep. 7 days a week. No matter what. Emergencies apart, nothing justifies breaking this rule.

Now getting regular, reliable rest, waking up naturally ( no alarm ) and yet earlier because of this, with all good effects it has on health, work, and even dealing with other people.

</comment><comment><USER5> Exercising regularly at least 4 days a week. No exceptions.</comment>