A Not-Called Function Can Cause a 5X Slowdown - <AUTHOR> https://randomascii.wordpress.com/2018/12/03/a-not-called-function-can-cause-a-5x-slowdown/ <comment><USER4> Windows has a real problem with huge monolithic dlls that inexplicably pull in other huge monolithic dlls. Especially when each dllmain() has its own weird side effects. It leads to bizarre behavior all the time such as this.

The weirdest thing that ever happened to me was when Visual Studio 2012 hung in the installer. After debugging with an older VS, it turned out the installer rendered some progress bar with Silverlight, which was hung on audio initialization, which was hung on a file system driver, which was hung on a shitty Apple-provided HFS driver. Uninstalling HFS fixed the installer.

Why does an installer even need audio when it never played sound? Because Microsoft dependencies are fucked.

<comment><USER5> I've never gotten the hate for static linking, which would avoid issues like this. You'd always have the version of your dependencies that you're expecting.

Also, dynamic linking completely neuters LTO. There's not much point to (theoretically) saving a few megabytes of RAM when you're pulling in twice as much unused code.

<comment><USER6> > I've never gotten the hate for static linking

I believe most of the dislike for static linking can be traced to a single incident: a really bad (as in "remote code execution" bad) vulnerability in zlib, CVE-2002-0059. Back then, it was common to statically link to zlib (and zlib is a very popular library, the DEFLATE algorithm it implements being the "standard" compression algorithm), so instead of just replacing a single dynamic library and rebooting, everything had to be audited for the presence of embedded copies of zlib.

Quoting from a message from a few years later ([http://mail.openjdk.java.net/pipermail/build- dev/2007-May/00...](http://mail.openjdk.java.net/pipermail/build- dev/2007-May/000055.html)):

"[...] Updating the main system zlib package was easy, but finding all the embedded copies was a nightmare. I think we ended up grepping every binary and library in every package for symbols and other bits of code that looked like zlib. All the different versions involved compounded this. And when everything is found and patched and built and tested there's the cost of bandwidth to distribute all the extra stuff. So when people talk of removing static libraries they're talking about real costs -- time and money. After zlib there was a definite feeling of "never again"."

<comment><USER7> Unfortunately, this is conflating static linking with bad dependency management. ("Just copy it into your own repo", is a different step, that is unnecessary to do the second step, "and link it statically")

There is no reason I see why you couldn't just have a build that produces the library .a file for zlib, which can then be pulled in as a dependency of your build / linked in statically.

I totally agree, they had a nightmare situation on their hands, but I don't think static linking was solely to blame :-)

<comment><USER8> I have 100s of binaries on my system. Which ones do I need relink?

<comment><USER5> You can write a script to look at package files' makedepends, and rebuild everything that uses the offending library.

</comment></comment></comment></comment></comment></comment><comment><USER9> Great post, but it made me sad because of how people limit themselves when it comes to tests.

Tests are the things you do after the code works, maybe if you have time. Managers generally only care about hitting a %. Colleagues dodge and avoid them. I don't remember any awards for tests or testers.

But tests are so powerful and so cheap...

<comment><USER10> > But tests are so powerful and so cheap...

Most evidence suggests the opposite, though tests have become better in time.

<comment><USER11> Yeah, I firmly support testing, but if the code you are working on isn't explicitly written to make writing tests easier, than odds are (in my experience) that writing the tests will take longer than writing the code.

<comment><USER12> I have been known to write shitty code, but am always looking to make the next set of code less shitty or even redo something I'm working on if the time allows. I'm getting better, but have a long way to go. I have a feeling that my code would be bad to write tests against. What would entail making code easier to test against? Small bits of code meant to be included that does one specific thing? Wrapping that included coded into functions and/or objects and then creating a test suite to hit all methods etc?

<comment><USER13> I'm not a real proponent of TDD, but... try writing some tests first, when you develop a new feature. Or at least, write them sooner - before your implementation is "done"; write them when you think you figured out the design. See, tests are a new use of your API/interfaces - if you find it hard to test stuff that's important, maybe you didn't model the problem right?

Rules of thumb:

\- Don't test implementation, test business workflows ("functional/component tests" are most important; unit tests are sometimes/often nice, but don't overdo it! If a simple refactoring breaks lots of tests, you're doing it wrong - testing implementation detail, not business logic); e2e tests are good and required, but are often slow and when they fail they don't necessarily always isolate the problem very well

\- Seek a functional coding style, once you get used you'll find out it is easier to test and easier to reason about (no state means you just test the logic, and it's easy to unit-test too)

\- Largely ignore code coverage (use it as a guideline to see whether there are important parts of your app that you ignored/ whether you forgot to add tests for some business workflows/ corner cases).

\- Avoid test hacks like calling private methods via reflection or whatnot. Remember, tests exercise your APIs - you either have the APIs wrong, or you're trying to test irrelevant implementation details.

\- Look for invariants, and test those. Things that should always be true. Often times, there are multiple acceptable results - avoid exact-match tests when that happens (e.g. if you make a speech-to-text system, don't test that audio clip X produces exact output Y; often times, a genuine improvement in the algorithm might break some of your tests).

TBH I think correct testing is much harder than the industry gives it credit for. Maybe that's why it's so rarely encountered in practice :)

<comment><USER14> I'll take umbrage with your last point:

"Look for invariants, and test those. Things that should always be true. Often times, there are multiple acceptable results - avoid exact-match tests when that happens (e.g. if you make a speech-to-text system, don't test that audio clip X produces exact output Y; often times, a genuine improvement in the algorithm might break some of your tests)."

No, you should test for exactly the output you have coded to generate. Otherwise, you do not know when you have behavior regression. You would expect to have to update the text-to-speech tests when you modify the text-to-speech algorithm. But if you're modifying another algorithm, and you start seeing tests break in the text-to-speech algorithm, you're probably introducing a bug!

A failed test means nothing other than the fact that you have changed behaviour -- and should therefore trigger on any behavioural change. It's your opportunity to vet the expectations of your changes against the actual behaviour of the changed system.

<comment><USER13> I respectfully disagree. A test should fail, ideally, only when behavior change is undesirable (i.e. contracts are broken). Optimizations, new features etc. should not break existing tests, unless old functionality was affected. And then there's the whole thing about separating functional from performance concerns - even degraded performance shouldn't fail the functional tests.

In fact, the example I gave was real-life - a friend from Google changed their speech recognition tests to avoid exact matches and it was a significant improvement in the life & productivity of the development team.

[edit] There's also another damaging aspect of exact-match tests: they often test much more than what's intended. Take for instance a file conversion software (say from PDF to HTML). You add a feature to support SVG, and test it with various SVG shapes - it's easy & tempting to just run the software on an input PDF, check that the output HTML looks right (especially in the relevant SVG parts), and then add an exact-match test. Job done, yay! Except that, you do this a lot, and it will slow you down like hell. Because when it fails in the future, it's very hard to tell why (was the SVG conversion broken? or is it some unrelated thing, like a different but valid way to produce the output HTML?). Do this a lot and you won't be able to trust your tests anymore - <USER2> change and 400 of them fail, ain't nobody got time to check in depth what happened, "it's probably just a harmless change, let me take a cursory look and then I'll just update the reference to be the new output".

<comment><USER14> You're building a bit of a straw man. If you have 400 tests that fail with a single behavioural change, why are you testing the same thing 400 times? And you don't need an in depth investigation unless you didn't _expect_ the test to break. And if you did expect the test to break, then you ensure that the test broke in the _correct_ place. If a cursory glance is all you need in order to confirm that, then that's all you need. Tests are there to tell you exactly what _actually_ changed in behaviour. The only time this should be a surprise is if you don't have a functional mental model of your code, in which case it's _doubly_ important that you be made aware of what your changes are actually doing.

In your Google example, would their tests fail if their algorithm regressed in behaviour? If it doesn't fail on minor improvements, I don't see how they would fail on minor regressions either.

<comment><USER13> 400 is an arbitrary number, but it's what sometimes (often?) happens with exact-match tests; take the second example with the PDF-to-HTML converter, an exact match tests would test too much, and thus your SVG tests will fail when nothing SVG-specific changed (maybe the way you rendered the HTML header changed). Or maybe you changed the order your HTML renderer uses to render child nodes, and it's still a valid order in 99% of your cases, but it breaks 100% of your tests. How do you identify the 1% that are broken? It's very hard if your tests just do exact textual comparison, instead of verifying isolated, relevant properties of interest.

In my Google example, the problem is that functional tests were testing something that should've been a performance aspect. The way you identify minor regressions is by having a suite of performance/ accuracy tests, where you track that accuracy is trending upwards across various classes of input. Those are not functional tests - any individual sample may fail and it's not a big deal if it does. Sometimes a minor regression is actually acceptable (e.g. if the runtime performance/ resource consumption improved a lot).

<comment><USER14> > It's very hard if your tests just do exact textual comparison, instead of > verifying isolated, relevant properties of interest.

I think you have this assumption that you never actually specified that exact- match testing means testing for an exact match on the _entire_ payload. That's a strawman, and yes you will have issues exactly like you describe.

If your test is only meant to cover the SVG translation, then you should be isolating the SVG-specific portion of the payload. But then execute an exact match on that isolated translation. Now that test only breaks in two ways: It fails to isolate the SVG, or the SVG translation behaviour changes.

> In my Google example, the problem is that functional tests were testing > something that should've been a performance aspect. The way you identify > minor regressions is by having a suite of performance/ accuracy tests, where > you track that accuracy is trending upwards across various classes of input. > Those are not functional tests - any individual sample may fail and it's not > a big deal if it does. Sometimes a minor regression is actually acceptable > (e.g. if the runtime performance/ resource consumption improved a lot).

... "Accuracy", aka the _output_ of your functionality is a _non-functional_ test? What?

And I never said regressions aren't acceptable. I said that you should know via your test suite that the regression happened! You are phrasing it as a trade-off, but also apparently advocating an approach where _you don 't even know_ about the regression! It's not a trade-off if you are just straight-up unaware that there's downsides.

<comment><USER13> > That's a strawman

It wasn't intended to be; yes that's what I meant; don't check full output, check the relevant sub-section. Plus, don't check for order in the output when order doesn't matter, accept slight variation when it is acceptable (e.g. values resulting from floating-point computations) etc. Don't just blindly compare against a textual reference, unless you actually expect that exact textual reference, and nothing else will do.

> "Accuracy", aka the output of your functionality is a non-functional test? > What?

Don't act so surprised. Plenty of products have non-100% accuracy, speech recognition is one of them. If the output of your product is not expected to have perfect accuracy, I claim it's not reasonable to test that full output and expect perfect accuracy (as functional tests do). Either test something else, that does have perfect accuracy; or make the test a "performance test", where you monitor the accuracy, but don't enforce perfection.

> And I never said regressions aren't acceptable.

Maybe, but I do. I'm not advocating that you don't know about the regression at all. Take my example with speech - you made the algorithm run 10x faster, and now 3 results out of 500 are failing. You deem this to be acceptable, and want to release to production. What do you do?

A. Go on with a red build? B. "Fix" the tests so that the build becomes green, even though the sound clip that said "Testing is good" is now producing the textual output "Texting is good"?

I claim both A & B are wrong approaches. "Accuracy" is a performance aspect of your product, and as such, shouldn't be tested as part of the functional tests. Doesn't mean you don't test for accuracy - just like it shouldn't mean that you don't test for other performance regressions. Especially so if they are critical aspects of your product/ part of your marketing strategy!

<comment><USER14> OK I'm caught up with you now. Yes, I agree with this approach _in such a scenario_. I would just caution throwing out stuff like that as a casual note regarding testing without any context like you did. Examples like this should be limited to _non-functional_ testing, aka metrics, which was not called at all originally. And it's a cool idea to run a bunch of canned data through a system to collect metrics as part of an automated test suite!

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> Bruce's write-ups are just great, sheer joy of reading.

<comment><USER16> True - and also remind me why I will stay away from windows

<comment><USER17> I regret to inform you that, while I think the current Windows development methodology could use better testing (to put it mildly), things like [1][2] still crop up in other platforms.

[1] - [https://bugzilla.kernel.org/show_bug.cgi?id=201685](https://bugzilla.kernel.org/show_bug.cgi?id=201685)

[2] - [http://lkml.iu.edu/hypermail/linux/kernel/1811.2/01328.html](http://lkml.iu.edu/hypermail/linux/kernel/1811.2/01328.html)

<comment><USER18> [2] was resolved quickly. A much revised version has landed recently.

[1] is a strange bug, because the devs have consistently been unable to reproduce it, despite constantly looking over the issue. Users of ZFS have hit problems, also, suggesting that it is not an EXT4 bug, but a very subtle problem elsewhere in the block subsystem.

<comment><USER17> [2] was resolved after it landed in stable release branches, which is a bit late for how much impact it had.

[1] was, in fact, root-caused to a blk-mq bug.

[https://patchwork.kernel.org/patch/10712695/](https://patchwork.kernel.org/patch/10712695/)

</comment></comment></comment></comment></comment><comment><USER19> This reminds me of a desktop heap exhaustion problem IE would regularly trigger for me back in the XP days:

[https://weblogs.asp.net/kdente/148145](https://weblogs.asp.net/kdente/148145)

It all came down to a registry setting that MS neglected to bump up much from the original Win 98 defaults. IIRC the conservative default even persisted into Win 7.

That 3MB limit would bring down my 48GB system...

</comment><comment><USER20> This bug is fixed in the latest insider builds at least.

Using the author's own testing tool:

With the Spring 2018 release:

        F:\tmp>.\ProcessCreatetests.exe
        Main process pid is 46940.
        Testing with 1000 descendant processes.
        Process creation took 2.309 s (2.309 ms per process).
        Lock blocked for 0.003 s total, maximum was 0.000 s.
        Average block time was 0.000 s.

        Process termination starts now.
        Process destruction took 0.656 s (0.656 ms per process).
        Lock blocked for 0.001 s total, maximum was 0.000 s.
        Average block time was 0.000 s.

        Elapsed uptime is 7.08 days.
        Awake uptime is 7.08 days.

        F:\tmp>.\ProcessCreatetests.exe -user32
        Main process pid is 44584.
        Testing with 1000 descendant processes with user32.dll loaded.
        Process creation took 2.624 s (2.624 ms per process).
        Lock blocked for 0.014 s total, maximum was 0.001 s.
        Average block time was 0.000 s.

        Process termination starts now.
        Process destruction took 1.617 s (1.617 ms per process).
        Lock blocked for 1.122 s total, maximum was 0.648 s.
        Average block time was 0.026 s.

        Elapsed uptime is 7.08 days.
        Awake uptime is 7.08 days.

With an insider build:

        C:\tmp>.\ProcessCreatetests.exe
        Main process pid is 9928.
        Testing with 1000 descendant processes.
        Process creation took 2.440 s (2.440 ms per process).
        Lock blocked for 0.003 s total, maximum was 0.002 s.
        Average block time was 0.000 s.

        Process termination starts now.
        Process destruction took 1.306 s (1.306 ms per process).
        Lock blocked for 0.003 s total, maximum was 0.001 s.
        Average block time was 0.000 s.

        Elapsed uptime is 4.78 days.
        Awake uptime is 3.93 days.

        C:\tmp>.\ProcessCreatetests.exe -user32
        Main process pid is 14144.
        Testing with 1000 descendant processes with user32.dll loaded.
        Process creation took 4.756 s (4.756 ms per process).
        Lock blocked for 0.022 s total, maximum was 0.004 s.
        Average block time was 0.000 s.

        Process termination starts now.
        Process destruction took 1.823 s (1.823 ms per process).
        Lock blocked for 0.003 s total, maximum was 0.001 s.
        Average block time was 0.000 s.

        Elapsed uptime is 4.78 days.
        Awake uptime is 3.93 days.

There's no longer a difference in lock blocked time whether or not you load user32 during process destruction. Nor does the very obvious mouse stuttering still happen.

<comment><USER21> Woah! That is fascinating. I had heard nothing about this. Your uptime is a bit shorter on the insider build but the change in lock blocking is too dramatic to be explained by that.

I notice that all of the elapsed times are worse on the insider build - <USER3> that perhaps a slower machine? And are there enough CPUs on that machine to trigger the bug? That is, I'd like to believe that the bug is fixed but I'm skeptical.

<comment><USER20> True, the above comparison might not have been the most scientific :P The Spring 2018 results were run on a much more powerful desktop than the surface pro 3 used for the insider results.

Here is the results for the April 2018 Update rerun on the same surface for a more apples to apples comparison:

        C:\tmp>.\ProcessCreatetests.exe
        Main process pid is 6448.
        Testing with 1000 descendant processes.
        Process creation took 4.382 s (4.382 ms per process).
        Lock blocked for 0.007 s total, maximum was 0.000 s.
        Average block time was 0.000 s.

        Process termination starts now.
        Process destruction took 0.592 s (0.592 ms per process).
        Lock blocked for 0.002 s total, maximum was 0.002 s.
        Average block time was 0.000 s.

        Elapsed uptime is 0.01 days.
        Awake uptime is 0.01 days.

        C:\tmp>.\ProcessCreatetests.exe -user32
        Main process pid is 11364.
        Testing with 1000 descendant processes with user32.dll loaded.
        Process creation took 4.707 s (4.707 ms per process).
        Lock blocked for 0.009 s total, maximum was 0.000 s.
        Average block time was 0.000 s.

        Process termination starts now.
        Process destruction took 1.248 s (1.248 ms per process).
        Lock blocked for 0.904 s total, maximum was 0.902 s.
        Average block time was 0.181 s.

        Elapsed uptime is 0.01 days.
        Awake uptime is 0.01 days.

The mouse movement hanging behaviour is easily evident with the April 2018 release. I didn't notice the same on the insider build.

</comment></comment></comment><comment><USER22> Great read but what's up with the 6 banner ads interspersed in the content page ? Maybe a few too many ?

<comment><USER23> With NoScript blocking execution of javascript, there are zero banner ads interspersed in the content page.

</comment></comment><comment><USER24> Also good to know: I seem to recall similar if not worse slow-downs happen if you try to pull in Windows Sockets (WS2_32.dll).

</comment><comment><USER25> Unless the compiler can _prove_ you're never going to run into that case, it can't remove the call, and because the call is an imported function it still has to create the import and have an entry in the IAT for it, so it needs to be resolved at load time. Not all that surprising IMHO.

<comment><USER26> The author even said "we immediately knew what to do", which is kinda the contrary of surprising.

The interesting bit is not that a slow loading dependency got imported anyway, but why that dependency is slow and that it can get imported very easily indirectly.

</comment></comment><comment><USER27> Is there a way to tell whether a .net program is also affected by this behavior?

<comment> mark-r I just checked a C# app I had laying around with depends, and it depends on user32.dll which depends on gdi32.dll.

It's hard to imagine a Windows program that _wouldn 't_ depend on one of those critical DLLs. The only thing that saves us is that we don't often create and destroy hundreds of processes at a time.

</comment></comment><comment><USER28> wow, how come the mere presence of a function causes a DLL to get loaded? Is it because in order to compile, the DLL (or its export definition) needs to be present, and the compiler does some magic because of that?

<comment><USER29> Lazy binding isn't without downsides, it requires internal synchronization of its own, which means it's possible to write multithreaded programs that will suffer latencies due to lock contention during symbol resolution. Depending on OS (not sure this applies to Windows), it can also mean what used to be fatal startup errors are delayed long into process life

</comment></comment><comment><USER30> The title is really misleading. "Dependencies cause overhead even when unneeded" would be more accurate.

<comment><USER31> That strips out the interesting part, though. A 5X slowdown for an actual, useful, real-world project is interesting. Vague "overhead" could mean nothing more than some bigger binaries.

</comment></comment><comment><USER32> tl;dr the method presence pulls in a dependency that runs slow buggy code.

so click bait.

<comment><USER33> This is a stupid dismissal of a well-written piece of investigative debugging. This article is the kind of thing I'd like to see more of on HN.

<comment><USER34> I also liked the article but to be fair, the title is actually a little clickbaity. The slowdown has nothing to do with not-called functions, it's just about DLL-dependencies.

<comment> mark-r Not clickbaity at all, it's the essence of what makes the problem interesting. The fact that a DLL dependency can slow down your program at shutdown is not at all intuitive, particularly when it's a system DLL that should be bullet- proof.

</comment></comment></comment></comment><comment><USER35> Imagine if you use layers and layers of abstraction (e.g. Java lasagna programming style), how slow it could be

</comment><comment><USER36> > "The first fix was to avoid calling CommandLineToArgvW by manually parsing > the command-line."

> "The second fix was to delay load shell32.dll."

If your build pipeline is continuously spawning processes all-over, to the point "delay loading" makes a significant difference - it's time to start re- evaluating the entire pipeline and the practices employed.

<comment><USER37> Do you know of a build system that can handle a source tree as large as _an entire web browser_ without spawning a lot of processes?

It's hard to tell what, if anything, you are recommending here. Pass thousands of files to a single compiler invocation? Ignore the problems and stop trying to make process creation and clean-up faster?

<comment><USER38> > Pass thousands of files to a single compiler invocation?

Sure. Or pass it a file with all the filenames. Or have the compiler work as a server that takes compilation requests over a socket. It's not like passing thousands of filenames between two processes is a deep unsolved problem.

<comment><USER39> So, the solution to concurrency problems is to serialize everything?

<comment><USER40> "Concurrency is everything serialised, properly."

<comment><USER39> The posts we are replying to here seem to have a very narrow concept of what 'properly' entails in this case.</comment></comment></comment></comment></comment></comment>


Bitcoin Fork Monitor - <AUTHOR> https://www.btcforkmonitor.info/ <comment><USER2> A more visual approach, but different underlying concept here: [https://coin.dance/blocks](https://coin.dance/blocks)

</comment><comment><USER3> A thread from last week with more details about why forks may be expected in the next week or so.

[https://news.ycombinator.com/item?id=14758587](https://news.ycombinator.com/item?id=14758587)

<comment><USER4> and then [https://news.ycombinator.com/item?id=14788663](https://news.ycombinator.com/item?id=14788663)

</comment></comment><comment><USER5> This web site looks like a good dashboard! Although, I'm not up on the technical details of everything going on here, so some of it is confusing to me, because there's not as much background as I'd like.

I've spent some time reading around, and here is my _guess_ as to what the site is describing:

Behind the scenes, achow101 ([https://github.com/achow101](https://github.com/achow101)) is running four Bitcoin clients:

* `Bitcoin Core` is running the client from [https://bitcoin.org/en/](https://bitcoin.org/en/) ([https://github.com/bitcoin/bitcoin](https://github.com/bitcoin/bitcoin)) ([https://bitcoincore.org](https://bitcoincore.org)). This client does not support Segregated Witness, and it does not support larger block sizes (so blocks larger than 1 MB are ignored).

* `UASF (BIP 148)` is running the client from [https://bitcoinuasf.org](https://bitcoinuasf.org) ([https://github.com/UASF/bitcoin](https://github.com/UASF/bitcoin)). This client supports Segregated Witness. This client does not support larger block sizes (so blocks larger than 1 MB are ignored).

* `btc1 (segwit2x)` is running the client from [https://segwit2x.github.io](https://segwit2x.github.io) ([https://github.com/btc1/bitcoin](https://github.com/btc1/bitcoin)). This client supports Segregated Witness, as well as changing the block size to 2 MB (blocks larger than 2 MB are ignored).

* `Bitcoin ABC (UAHF)` is running the client from [https://www.bitcoinabc.org](https://www.bitcoinabc.org) ([https://github.com/Bitcoin-ABC/bitcoin-abc](https://github.com/Bitcoin-ABC/bitcoin-abc)). It supports blocks of <8 MB in size (initially defaulting to 2 MB). This client does not support Segregated Witness.

As I understand things, right now there are two events which have hard-coded dates:

* At midnight UTC on August 1, the `UASF (BIP 148)` client _will_ fork, in that it will start ignoring new mined blocks which do not support Segregated Witness.

* At 12:20 UTC on August 1, the `Bitcoin ABC (UAHF)` client _might_ fork. I say _might_ because the fork will be triggered by someone mining a larger-than-1-MB block (the "trigger block") on or after 12:20 UTC. (1 MB is the largest block that the `Bitcoin Core` and `UASF (BIP 148)` clients will recognize). At that point, `Bitcoin ABC (UAHF)` nodes will treat the "trigger block" as valid, and the fork has occurred.

Also, there is another event which may take place, depending on various conditions:

* If—sometime soon (before midnight UTC on August 1), and for a long-enough period—enough people indicate support, then the `btc1 (segwit2x)` node will fork with the `UASF (BIP 148)` node (in that both nodes will start supporting Segregated Witness). Sometime after that fork, the `btc1 (segwit2x)` node will fork off into its own fork, which will have support for 2 MB blocks.

And of course, there is one event which will happen at some point:

* `Bitcoin Core` will release a new version, adding support for Segregated Witness, or for a different block size, or both. `Bitcoin Core` nodes, when they upgrade, will then join one of the forks.

Anyway, I _think_ that's right, but this has gotten really complicated, and I'm trying to skip over the specific details, and the rationale (since, as tempay mentioned, that's been discussed recently).

If I misunderstood something, please let me know!

<comment><USER6> You are correct, but as it seems almost certain at this point that SegWit2X (btc1) will reach its threshold in time, we can simplify.

SegWit2x rejects non-SegWit blocks. So with the majority it has it can't cause a fork in the chain (until the HF 3 months later), and neither will BIP148.

So with the rather safe assumption SegWit2X reaches its threshold in the next few days, the only expected fork in the chain by August will be Bitcoin Cash (Bitcoin ABC/BU/big blocks) on one chain and Segwit on the other.

<comment><USER7> So to super-simplify it. Who wins with this assumed scenario, the scale on chain/big blockers or the off chain/blockstream faction?

<comment><USER8> Segwit2x is a compromise that gives the Blockstream faction what they want (Segwit), but ties it to a small (2x) block size increase. So they both win some and lose some.

However, the twist is that Blockstream gets Segwit first, while the 2x block size increase is 3 months away. During that time I expect Blockstream to be screaming to everyone that will listen to try to stop the block size increase from actually happening. They will likely not be successful but it will sadly continue to be a contentious issue until at least the end of October.

<comment><USER9> Seriously, "the Blockstream faction"? Jesus. Nearly everyone in the bitcoin ecosystem, myself included, want to get segwit activated for the technical improvements it brings to the table. This has _nothing_ to do with Blockstream.

<comment><USER10> "Nearly everyone" is a lie. You're probably living in a bubble of /r/bitcoin, which is heavily censored.

Many people want larger blocks, we want on-chain transactions scaled way up. I'm yet to hear a good argument against large blocks. Storage is dirt cheap. Connections between servers are generally at least 1Gbps.

<comment><USER11> Nearly everyone.

[https://luke.dashjr.org/programs/kycpoll/answers.php](https://luke.dashjr.org/programs/kycpoll/answers.php)

> Connections between servers are generally at least 1Gbps

So much for peer to peer electronic cash, then...

<comment><USER10> Let me guess, that poll was posted on /r/bitcoin? Is that Luke-jr's website? Ha. Not biased at all /s

That's what happens when you're in a bubble. Your echo-chamber reflects the same ideas back to you.

And don't get me wrong, I'm not against Segwit at all, as long as the blocks are increased. So if someone wants to take their transactions off the chain, go right ahead.

> _So much for peer to peer electronic cash, then..._

Bitcoin is not peer to peer in the traditional sense, the money goes through the network of servers (nodes). It's called peer-to-peer, because there's no central bank, nor any authority that can stop the money flow.

<comment><USER11> I can't think of any Bitcoin discussing venue where it hasn't been posted, please feel free to post it to more.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment> torrent-of-ions The layout of this page is strange. My browser window isn't wide enough to display four boxes in a row, so it displays three in one row, and then a fourth in its own row but at full width. At first glance I thought there was something different about the fourth box, but it should be with the other three.

<comment><USER12> There's only width for two rows of two boxes each on my viewport.

I keep my browser viewport in a portrait aspect ratio for readability and usability. Few websites look good or are easy to read in a maximized browser window.

</comment></comment><comment><USER13> What marketplaces enable trading of bitcoin forks as soon as they occur?

<comment><USER14> Looks like GDAX for one is _not_ participating in case of a hard fork: [https://blog.gdax.com/uahf-a703b6a13115](https://blog.gdax.com/uahf-a703b6a13115)

<comment><AUTHOR> Coinbase isn't either, judging by the mail they sent to all their customers, and by [https://support.coinbase.com/customer/portal/articles/284421...](https://support.coinbase.com/customer/portal/articles/2844217-uahf- uasf-faq) .

<comment><USER15> Makes sense. (as far as I know) GDAX = formerly Coinbase Exchange

<comment><USER16> Formerly would be incorrect. While owned by Coinbase, GDAX is a different project, not a continuation of the original CB exchange.

</comment></comment></comment></comment></comment><comment><USER17> Is there a resource out there that explains all of this simply? Is this something like a computer network split brain situation?

<comment><USER18> try this infographic: [https://i.imgur.com/RjTkcdQ.png](https://i.imgur.com/RjTkcdQ.png)

<comment><USER19> That's a little misleading because it makes it look like each decision point is a chain split.

This one is better: [https://media.coindesk.com/uploads/2017/07/Screen- Shot-2017-...](https://media.coindesk.com/uploads/2017/07/Screen- Shot-2017-07-18-at-8.59.38-PM.png)

<comment><USER18> Different audiences. Most friends & acquaintances asking me for explanations about august 1

⒈ get repeatedly caught up on basic blockchain concepts (i.e. go in circles w/ terminology)

⒉ know absolutely nothing about the politics of the decision-making up to now

⒊ yet have already been exposed to somebody's propaganda and half-internalized the wrongthink

So i'm not sure that a flowchart of just the proposals w/o entities serves much purpose. Its audience is essentially limited to devs who just need to be caught up on current events.

Coin Dance already has this information available, but across two dashboard- style pages⁽¹⁾⁽²⁾ — not quite arranged efficiently enough for an interactive infographic.

Starting from "know your hardforks" and adding the missing bits from the flowchart as tooltip or on-hover information could work.

____________________

¹ [https://coin.dance/blocks](https://coin.dance/blocks)

² [https://coin.dance/poli](https://coin.dance/poli)

</comment></comment></comment></comment><comment><USER20> I was wondering, why the bitcoin owners themself cant't decide. Because a bitcoin can be seen as a SHARE, as well as money. So someone who has a lot of bitcoins is a bigger shareholder and should have more to say about it. The how etc to show how much coins you have etc is another issue, but i believe this should be the way to go.

<comment><USER21> There are 3 groups that have influence over Bitcoin:

\- miners: they bear the biggest costs and are responsible for the security of the network. Without miners there would be no bitcoin.

\- economic nodes: nodes that have real activity going through them that relay transactions and accept or reject blocks that miners provide them. Coinbase's nodes are significantly more valuable than my personal node for my wallet.

\- core dev team: their power is soft but integral, no-one wants a chain that can't be updated over time.

Owners of coins currently have little to no influence.

<comment><USER22> > Without miners there would be no bitcoin.

If all/lots of the miners pulled out, then wouldn't the work factor decrease so that regular people could run it on their desktop machines? That is what happened at the start of bitcoin, right? Are miners _that_ required?

<comment><USER23> Without miners wouldn't the problem just be no more new bitcoins, so while the total would never grow we could still trade them?

<comment><USER24> No not at all. Miners are the ones generating blocks and validating them though the giant distributed work they each do. Without miners there would be no new blocks which means no verified transactions. The only place trades could still happen is on exchanges because they all happen off block and don't rely on the blockchain to track who owns what but it'd be impossible to move more coins onto or out of an exchange so you'd be stuck.

<comment><USER25> what happens when all possible bitcoins are mined then?

<comment><USER24> Miners will be paid with transaction fees. Already if you don't include a fee in your transaction you can expect much longer transaction confirmation times or to never receive confirmation because miners already try to pack the most fees into each single block to maximize their payout.

</comment></comment></comment></comment></comment></comment></comment><comment><USER26> Is it correct to say that if you have BTC pre-fork, then you can spend it twice post-fork? Once on each fork?

<comment><USER27> Yes, anything in place before the fork will be recognized by both chains. You can then make transactions on either chain, and the other will go on as if nothing has changed, still recognizing the coins in their original address.

Realistically, the total value of these coins may change or it may not. One chain will likely dominate and have most of the value. But the total value may increase, decrease, or (unlikely) stay the same.

Total value could decrease if e.g. people feel that the fork demonstrates a weakness in cryptos. It could increase if the disagreeing parties are both satisfied with their forked chains and both have utility.

</comment></comment><comment><USER28> You should add SEGSIGNAL/BIP91 [https://github.com/segsignal/bitcoin](https://github.com/segsignal/bitcoin) which is at the moment the lead for starting the activation.

<comment><USER19> You mean like:

> bip91: 178/223 (79.82% signalling) (269/336 Threshold)

?

<comment><USER28> Signalling and node software are not coupled. The point of this is to see how each node software behaves, there are miners that don't run Segwit2x/BTC1 but rather Segsignal.

</comment></comment></comment><comment><USER29> Very cool! I'll be using this as a resource

</comment><comment><USER30> might be very useful in handling valuable documents which can't get lost

</comment><comment><USER31> Anyone know how much energy is created from the chain splitting?

</comment><comment><USER32> xbt.eu much better monitor</comment>


"I Don't Want to Create a Paper Trail": Inside the Secret Apple-Google Pact - <AUTHOR> http://www.motherjones.com/politics/2014/02/google-apple-class-action-poaching-steve-jobs-wage-theft/ <comment><USER2> 2014, though, I think we all heard about the salary cartel.</comment>


All hail Apple's remarkable machine (and we're not talking about iPad 2) - <AUTHOR> http://www.theglobeandmail.com/news/technology/tech-news/all-hail-apples-remarkable-machine-and-were-not-talking-about-ipad-2/article1933337/ <comment><USER2> > _"And he wastes little time on obscure technical specifications, unless > magical is some sort of objective industry benchmark."_

IANAL, but I suspect that the constant use of "magical" in Mr. Jobs speeches is actually a legal strategy on Apple's part because it allows them to claim that "alleged deceptive statements were such that no reasonable person" could misunderstand "Apple's statements as claims of fact." [<http://www.wired.com/gadgetlab/2008/12/apple-says-cust/>]

The fact that tech journalists miss this probably has something to do with their proclivity for giving Mr. Jobs standing ovations.</comment>


Imagining the Western Other in 19th-Century Japanese Prints - <AUTHOR> https://hyperallergic.com/512072/imagining-the-western-other-in-19th-century-japanese-prints/ <comment><USER2> I guess I understand why they didn't mention it in an article about a specific exhibit, but my absolute favorite example of this sort of thing is a, ah, _highly imaginative_ rendition of the American Revolutionary War, complete with George Washington punching out a tiger.

Book scans: [http://archive.wul.waseda.ac.jp/kosho/bunko11/bunko11_a0380/...](http://archive.wul.waseda.ac.jp/kosho/bunko11/bunko11_a0380/bunko11_a0380_0002/bunko11_a0380_0002.html)

Previous discussion: [https://news.ycombinator.com/item?id=18430610](https://news.ycombinator.com/item?id=18430610)

</comment><comment><USER3> Not exactly the same thing, but I saw an interesting print from Japan during the time when Dutch ships first entered the harbor. It was clear at that point that Japanese ships were technically inferior to the Dutch ones, and the perspective from the artist is interesting. [https://web.archive.org/web/20171219041521/http://www.iisg.n...](https://web.archive.org/web/20171219041521/http://www.iisg.nl/exhibitions/japaneseprints/ships.html)

</comment><comment><USER4> These prints are currently on display at the Art Institute of Chicago [1] and if you're in the area, it's a highly recommended temp exhibition.

AIC is having a great run with prints lately. Before this they did a whole exhibit on Japanese mass produced prints, using Hokusai's "Great Wave off Kanagawa" and its variants as the leading example. [2]

[1] [https://www.artic.edu/exhibitions/9332/yokohama-e-19th- centu...](https://www.artic.edu/exhibitions/9332/yokohama-e-19th-century- prints-of-americans-in-japan)

[2] [https://www.artic.edu/articles/743/seeing-triple-the- great-w...](https://www.artic.edu/articles/743/seeing-triple-the-great-wave- by-hokusai)

</comment><comment><USER5> A while back I saw an exhibit of Japanese masks from this period. Interestingly, the noses were exaggeratedly large, because the Japanese at the time (perhaps still today) thought Europeans had big noses.

<comment><USER6> Seems like they still think so: [https://www.independent.co.uk/news/world/asia/japanese- airli...](https://www.independent.co.uk/news/world/asia/japanese-airline-ana- apologises-for-racist-advert-stereotyping-foreigners-as-having-big-noses- and-9072651.html)

But I think compared to Asians, white people objectively do have bigger noses, so they're not wrong.

</comment></comment><comment><USER7> "Other" is such a cliche "liberal arts" term.

How about "How the Japanese imagined Westerners in 19-Century prints"?

<comment><USER8> Just because it's cliché doesn't mean it isn't specific and thus still useful. I don't like the term either, but that doesn't stop it being the best term to explain a rather particular but difficult-to-illustrate concept with the highest level of unambiguity.

Also, why liberal arts in scare quotes? Of course the term comes from liberal arts; social sciences come under that umbrella and have done for years. If it's a politically-charged term, then just call it humanities.

<comment><USER7> > _Just because it 's cliché doesn't mean it isn't specific and thus still > useful. I don't like the term either, but that doesn't stop it being the > best term to explain a rather particular but difficult-to-illustrate concept > with the highest level of unambiguity._

A "particular but difficult-to-illustrate concept"?

Westerners (in particular) or foreigners (in general) both perfectly capture what the Japanese where depicting, without the baggage and obscurantism of "Others".

<comment><USER8> Except that it's not just about Westerners full stop; there's also an element of exoticism, compounded by the lack of proper interactions with the West by most of Japan for around a century. Clearly these depictions of the West are done from a hugely emic point of view, with the distortions of the depictions of the West distorted partly by the art style but partly from the lack of accurate information.

And yes, the concept of the Other is not easy to illustrate _because_ it has less to do with the parties involved and more of their understanding of each other, the lenses through which these preconceptions are analysed still being debated to this day. It's helpful that there is a word, even if it's merely shorthand, to describe this concisely.

There is nothing black and white about the Other but equally this being a story simple of Western and Japanese is not as night and day as you claim.

<comment><USER9> And using that word makes the title interesting! It's not just that it's paintings of Westerners, but that it's paintings from the perspective of people to whom they were exotic and unfamiliar.

<comment><USER8> Indeed! This is the thing about the Other; the very fact that anybody can claim it should refer to one thing and somebody else can claim it means something slightly different demonstrates beyond peradventure that there is no definitive answer as to what is under analysis.</comment></comment></comment></comment></comment></comment>


Study shows brain cells revamp their DNA, perhaps sparking Alzheimer's disease - <AUTHOR> http://www.sciencemag.org/news/2018/11/landmark-study-shows-brain-cells-revamp-their-dna-make-new-proteins-perhaps-sparking <comment><USER2> Probably the most fascinating line of research right now on the topic of Alzheimer's seems to be the infectious model: [https://www.statnews.com/2018/10/29/alzheimers-research- outs...](https://www.statnews.com/2018/10/29/alzheimers-research-outsider- bucked-prevailing-theory/)

I've also commented extensively on this topic, e.g. here with more sources: [https://news.ycombinator.com/item?id=18331554](https://news.ycombinator.com/item?id=18331554)

This study surrounding brain cells revamping their own DNA could be related, but there's already causative evidence in favor of the infectious model: [https://news.ycombinator.com/item?id=17540094](https://news.ycombinator.com/item?id=17540094)

Just putting that all out there.

<comment><USER3> Here's a thought. Alzheimer's disease is as complicated and diverse as cancer. Perhaps Alzheimer's disease has many different causes, just like cancer.

<comment><USER4> The many spectrums of Alzheimer's?</comment></comment></comment>


Teenage anxiety / Covid lockdown: Study in England leads to surprising findings - <AUTHOR> https://nuadox.com/post/627296328752447488/teenage-anxiety-covid-19-lockdown <comment><USER2> _> Younger teenagers in the South West of England felt less anxious and more connected to school when they were away from it during the COVID-19 global pandemic public lockdown,_

Would like to see a study like this on teenagers in the USA.

<comment><AUTHOR> It would be interesting indeed to compare the stress level of students from one country to another.</comment></comment>


8,000,000 patents and nothing has changed - <AUTHOR> http://ipinsiders.com/profiles/blogs/175-years-8-million-patents-nothing-has-changed

<comment><USER2> Nothing has changed? What do they mean? I can understand patent #1, and it's not even in my field. Good luck trying to do that with a modern software patent.

</comment><comment><USER3> I'm guessing at this point a good Marckov chain could do a bang-up job of getting patents approved.

Next up: AI's patent everything, drive humanity out of business. Its a hard take-off singularity, except we get trolled.

<comment><USER4> <http://wiki.lesswrong.com/wiki/Giant_cheesecake_fallacy>

</comment></comment><comment><USER5> Maybe I'm missing something, but just what useful conclusion is the linked article attempting to draw by looking at the typesetting of patents over the years?

How does the typesetting of patents relate to anything meaningful other than how patents are typeset?

<comment><USER6> I guess the implication is that if they haven't even made updates in formatting, that shows how slow-moving they are, and therefore the root of all patent-related problems.

Very shaky logic, but that's the best assumption I can make about it. Either that or this piece is actually written for typesetters rather than people on HN.</comment></comment>


Show HN: Common useful JavaScript snippets for go-ethereum - <AUTHOR> https://github.com/niksmac/ethereum-scripts <comment><AUTHOR> This is a collection of common useful scripts that are handy when you do any kind of developemt on the Ethereum Virtual Machine aka EVM.</comment>


Why are we all moving away from Apple? - <AUTHOR> http://www.akitaonrails.com/2017/01/12/off-topic-why-are-we-all-moving-away-from-apple <comment><USER2> Oh give me a break, "we all" are not moving away from Apple. People are pissed off, and rightly so. But no one is running out and ditching all their hardware. We're all sitting around to see what 2017 brings for changes, and if there isn't any significant, we're still going to be buying the new whatever there is. We're after the OS, that's not going to change.

<comment><USER3> My company runs 350+ Macs.

Years ago, we abandoned Macs in our datacenter when Apple neutered OS X Server and gave us no alternative. Windows is now king there.

Now we are seriously considering abandoning Mac for, of all things, our Prepress department. Why? Because for the last three years, macOS has been become almost unusable with network shares with a large number of files (anything more than a few thousand). Think minutes, at times, to open an f-ing folder. It is a known bug. It has been around since 10.9. Apple has not even acknowledged the problem. What takes milliseconds on Windows can take anywhere from 30 seconds to two minutes on a Mac. The problem exists regardless of share type. SMB and AFP are equally bad.

We are as core a user as it gets. Prepress. Graphic arts. And Apple is unable to make a Mac work efficiently on something so obscure as a file share. They have made it quite clear that they do not care about power users like us, and they are never going to care again.

We have work to do. Browsing a network file system is a basic service. It should not be difficult. It should not, as it currently is for us (and an untold number of others), cut our productivity by half because our users spend so much time just trying to open a file.

<comment><USER4> Why did you move from OSX to Windows instead of Linux? That switch seems much easier.

<comment><USER3> We actually began with Linux. We moved to Mac because:

Samba has serious problems with large filesystems due to the disconnect between case sensitive and case insensitive filesystems. It incurs massive overhead when you have thousands of files in a folder.

Netatalk has serious problems with large filesystems due to the inefficiency of its CNID database. Perhaps they finally solved this, but we have moved on and aren't going back.

</comment></comment></comment></comment><comment><USER5> "We all" aren't moving away from Apple, while I have many issues with the current direction and product offerings, the platform still works for me. So maybe it really is just "All - Me" but my distinct impression is that it is a noisy cohort in the blogverse that has seized upon this as the trend du jour.

<comment><USER6> Yes it's a ridiculous statement.

I'm still using my MBA 11" from 2012 for everything. I have only 4GB RAM and it's not even a problem to work (I don't have 15 VMs running in background). :)) I have no idea when I'm going to change it and for what, but I have absolutely no desire to move back to Windows or Ubuntu.

And there is no way I move away from iOS. It works great for me. Plus, I use my iPhone 6 mostly for gaming and I've been buying games since the 3GS so I've a huge collection (including a bunch of Final Fantasy and Dragon Quest titles that are quite expensive).

<comment><USER7> The last bit sounds more like stockholm's syndrome. Vendor lock-in shouldn't be a happy thing.

</comment></comment></comment><comment><USER8> The last straw for me was when osx without warning or explanation removed the vpn technology I was using. The people waiting for me to do work asked "why in the hell are you still trying to use that piece of crap" and I didn't have an answer. I never really needed the super expensive ssd or the most high end cpu. I do need more ram and am dumbfounded why apple would go 5+ years without upgrading the ram (cue the apple fans to tell me I'm stupid and don't need more ram). I put together a $700 system that better fits my needs than the $4000 macbook. The awesome magic trackpad 2 I was so worried about losing has been replaced with a mx master and I ended up liking it better. The real surprise for me is that intel 530 graphics drives a 4k display better than the macbook with its loud m370x.

I'm not a hater. I like apple's attitude on encryption. I like brushed aluminum stuff and don't mind paying for it. It just doesn't work for me when a $700 system can have better specs for my work than their $4000 system.

<comment><USER9> They removed PPTP, which is a terrible protocol.

> _" why in the hell are you still trying to use that piece of crap"_

I'd've retorted with "Why the hell are you still using PPTP for your VPN?"

<comment><USER8> It wasn't the first issue I ran into being on osx and everyone else using windows. As someone who used these machines for work, I can't control what terrible protocols people use, I just need it to work.

<comment><USER9> _> "It wasn't the first issue I ran into being on osx and everyone else using windows."_

So Microsoft using outdated and insecure prototocols, as well as propriatery[0] ones is Apple's fault?

It's perfectly fine to say "I don't like Apple/the direction they are taking, so I'm moving to another platform." Use what works best for you. Just don't use petty excuses for it. Sorry, you are baring the brunt of the glut of "Why I'm switching" articles.

[0]Yes, I realise that Apple can also be a bad actor in this department too.

<comment><USER8> There are a lot more reasons I switched to windows than a vpn that stopped working. I tried for over 4 years to incorporate osx into an engineering work flow. The nominally cross platform eclipse stack I was using never became fully compatible with osx. It was always a usb driver or something stopping the osx version from working. Even when it did work, I would check in a project and someone else would be like "omg this doesn't work, did you do this in osx?". I had a total of 1 project ever where the client wanted to mess with the code in osx and was glad I could do it in osx. Ended up using parallels for almost all compiler toolchains. My saleae scope software is buggy in osx, ties up a cpu at 100% while its open for some reason- had to use that in parallels too. What DID I use native osx for? Browsers? Mac vim? Linux commandline? It clearly has not been worth the time and money.

</comment></comment></comment></comment></comment><comment><USER10> > Anyone that is someone has been following Apple for the past couple of > decades. Love them, or hate them, the only thing you can't do is ignore > them.

I hate to write off a whole article based on a bad first sentence, but this one just about makes me do so. It starts of with a judgement of a person's worth, then shows that they seem to have completely missed the years over the past few decades where Apple stagnated and were not really relevant outside of creative circles and academia. And finishes off by saying they cannot be ignored, when in reality the business/enterprise world has gotten along just fine ignoring Apple even to this very day.

<comment><AUTHOR> I did a small change in the opening statement to make my intention clearer.

</comment></comment><comment><USER11> Huh. From the title and the themes, I was expecting an amazing article. But this isn't it. It struck me as confused, poorly written, and not well supported.

Personally I think Apple is in trouble. Sustaining their dominance was never going to be easy, and I don't think they're rising to the challenges. So I expect too soon read something like this, but engaging, succinct, and persuasive.

<comment><AUTHOR> I was not expecting it to reach Hackernews frontpage :-) Sorry if it was a confusing read, I just wrote my personal thoughts. It was not the intention to make an objective checklist. Feedback is appreciated.

</comment></comment><comment><USER12> Maybe its not just apple. Growing up in the 90's I imagined this cool VR / AI future right out of Gibson's Neuromancer. Instead we have these walled gardens, the Internet has become less open, less free to the masses. Everything has become about commercialization instead of innovation and exploration.

<comment><USER13> I've got tired of the walled gardens on phones especially. Stopped iOS dev and went back to web.

<comment><USER14> I see this type of comment a lot. It's not just iOS, Android now has a review process and Google will keep driving in the Apple direction because it is successful. And if it's like the op says where everythig is in the cloud, then walled gardens don't matter much as long as your service has a native app or mobile web (hint, they probably have both).

What's the really big issue is privacy (which I know is gone) and what facebook is doing to the world. Everyone likes to bash on Apple lately, but Apple is 'acquiring' a lot less of your personalized data than the social networks and Google are (they are also trying to take the lead in being privacy first).

Facebook is just a big ad platform and dont forget 'free' == you are the product.

</comment></comment></comment><comment><USER15> Not a particularly well-written article, but some interesting points.

The constant "Linux isn't good enough shots" in all these articles is annoying, though. I was on Linux full time in 2010, and found it far more pleasant than OS X.

<comment><USER16> The bits about X11/Wayland made me a bit curious. The author claims we're "only just now" moving towards Wayland -- is there a big movement towards it lately that I've been missing?

<comment><USER17> Yeah its finally shipped by default with GNOME in both Fedora and Arch (Fedora shipped it for the first time in 25). So thats where that is coming from.

<comment><AUTHOR> Exactly! I am using GNOME 3 with Wayland in Arch and enjoying it very much.

</comment></comment></comment></comment><comment><USER18> Even after reading I still think the questions is "ARE we all moving away from Apple?" or even "Are a significant number of people moving away from Apple"

<comment><USER19> Exactly. It's not because I and others moved away from Apple once, that it's a trend. Unless you've got some proper data to back that up.

</comment></comment><comment><USER20> I'm not moving away from Apple - Apple is moving away from me.

They haven't updated the Mac Pro in years, they don't sell external displays anymore, and they killed off their router line (I've had two Time Capsules - best routers I've ever owned).

</comment><comment><USER21> > Why are we all moving away from Apple?

because it's trendy, and you can write a medium post about it.

</comment><comment><USER22> These days its very easy to get any flavor of Linux/Unix running in cloud at a very cheap price. Back in the day folks especially developer relied on Macs as a stable platform to work on but now that landscape has changed due to cloud. Meanwhile this transformation was happening Apple lost its focus and doing the right thing instead their bright idea was generate passive income by forcing people buying connectors.

I owned an old Mac for 7+ years it worked fine and finally I decided to get a new one. I was just amazed by amount of connectors I ended up buying.

<comment><USER9> Yeah, that first iMac took the biscuit. No ADB or SCSI, Parallel or Serial ports, no floppy drives and that stupid mouse! But in time most most manufacturers turned to USB as it really was the obvious choice for the future. Heady days!

</comment></comment><comment><USER23> I've always bristled at the idea -- prevalent in Mac Evangelism going all the way back to the 1980s -- that I'm "corporate" and not "creative" because I create things like electronics, optics, embedded systems, and industrial controls, rather than newsletters and advertising.

<comment><USER24> It doesn't help that many of the people I personally knew who were mac evangelists (programmers) in the late 80s and early 90s tended to be sniveling elitists.

</comment></comment><comment><USER25> My reason is simple: I want a desktop and a laptop capable of running graphics-intensive games. I play games with my expensive computer. So sue me.

The previous batches of MacBook Pros were capable of running games. The current batch is not: they are not designed for sustained use of the GPU.

This is especially damning when new number-crunching programming techniques are starting to make more use of the GPU, and Apple has an entire API dedicated to compute distribution.

There are two ideal MacBooks for me: an 11" MBA with SD card built in for my photography bag, and a 15" MBP with more than enough speed in processor, GPU and memory to run 3D intensive games. I don't care about battery life during maximum load, since for the heavy compute I'm most likely going to be plugged in anyway. The rest of the time it would be nice if I could spend a weekend web browsing, checking maps, writing Arduino code, etc, without having to be connected to a wall. Then I can come back home, plug into my TB3 dock with monitor, Ethernet, scanner, etc attached, and continue working as if on a "desktop" computer.

The only things keeping me on OS X in any way, shape or form are: effort free backup with Time Machine, Alfred, Finder "tags", Spotlight, ScanSnap (for scanning documents, then OCR to PDF), Hazel, and a significant investment in movies and TV shows that were only available from DRM encumbered sources.

</comment><comment><USER26> _Because there is at least a good Chrome browser in every platform._

Aside from iOS, you mean?

Actually, the non-Chrome browsers on every platform are good enough and Chrome doesn't stand out. That's why the author missed this extremely obvious extra jab at apple.

<comment><USER27> There is a "good Chrome browser" on iOS. It syncs your passwords and bookmarks and works as intended. The fact that it's not sharing rendering technology with the other Chrome browsers doesn't matter at all to end users, and matters very little to developers.

<comment><USER26> _matters very little to developers._

This was a joke, right? It's doing more to hold back usage of new web standards than pretty much anything out there.

<comment><USER27> Developers have to support safari on iOS.

Chrome's implementation on iOS doesn't help development, but it doesn't appreciably hinder development either.

</comment></comment></comment></comment><comment><USER28> Sorry, but visit an Apple Store sometime and look around you. You'll realize that 99% of Apple customers don't know or even care what CPU is in their laptop.

</comment><comment><USER29> Lol, "we all", is probably only appropriate if the author has multiple personalities. Was interested to see what dataset the author was using to support their belief that "we all" are leaving Apple for presumably competing companies as I'm not aware of any such movement or data.

I imagine rather they chose a sensational title and choose to speak on behalf of all humans rather than saying more appropriately, "Why I am moving away from Apple" or at most, "Why some are moving away from Apple".

</comment><comment><USER30> "Nobody goes there anymore, it's too crowded." \- Yogi Berra

</comment><comment><USER31> We aren't.

There is concern that apple is moving away from us, the pro user.

</comment><comment><USER32> I'm ready to leave Apple (at least on the laptop side). Almost all my work these days is on some Windows terminal over RDP. But where am I going to go? After years of seeing PC manufacturers churn out crap, _I simply don 't trust them._

Dell has a nifty XPS 15 update that actually increases the size of the battery by 15%.[1] But my last Dell had annoying coil whine, shoddy construction, and plastic palm rest portions that (unlike aluminum) showed wear spots over time. Do I want to roll that dice again?

[1] The new XPS likely will be a downgrade from my 2013 rMBP. There's no option for a power-efficient high-DPI display. Your choices are 10+ hours with the 1080p, or 5-6 hours with the 4k. But at least it's a path forward.

</comment><comment><USER33> While I prefer an 12.5" ultrabook with Arch + a tiling window manager (i3) as my daily driver. There're still moments I need my Macbook Pro:

\- Sketch (this is macOS' killer app, there is no other app on any OS where you can create mockups that fast and accurate)

\- Support of multiple 27" screens with 5K (5K makes a difference and the new 15" MBP can drive 2 (!) of them at the same time)

\- Xcode (and if it's sometimes just for using the iOS simulator)

\- Word (for contracts) and Excel (rarely)

\- And of course the trackpad: sometimes I have to deliver and when in panic mode, the touchpad must work 100%

But when I look myself at the list above, it's not much left to migrate fully to another OS.

Edit: Thanks for the downvote but why?

</comment><comment><USER34> the authors understanding of X11 seems flawed. Or at least i don't agree with X11 being the thing holding linux back. There have been many proposed replacement, and finally it appears wayland may make some headway, but from a user experience, the windowing system has very little influence. Perhaps the author means desktop environments, gnome/kde/xfce... those certainly effect the user experience, and the fragmented culture of the user experience can be frustrating. However from my vantage that is by design, the classic make it whatever you want it to be. All-in-all a disappointing article.

<comment><AUTHOR> I really meant X11. The desktop manager fragmentation is an issue but not so much. It doesn't help for the end user if the system is difficult to maintain, if out of the box it's easy to break, it stutters, crashes, doesn't draw correctly, and overall is difficult to make fluid. Latency is high, one app can hang the windowing drawing, etc. So yes, it's a lot to blame on X11.

<comment><USER35> Except that that's not why Apple avoided X11. Apple decided to build their own thing because they wanted to avoid also-ran cross-compatibility with other UNIX clones, and additionally they wanted fancy antialiased font rendering which X11 didn't support at the time.

Apple built Quartz while Xorg developed Xft. A couple years in and Quartz didn't have any compelling features over Xorg, just an alien API.

It's true that X11 is terrible but nearly all of its competitors have shown themselves to be worse. Wayland wasn't practical until recently (like 2014?) when GPU memory and latency has dropped to the point where actually running a full compositor is no longer expensive. And most people using Wayland will just host an Xorg inside for X11 backwards compatibility anyway...

<comment><AUTHOR> You're right about that. I didn't want to extend too much on that part and I can see how it can be misinterpreted. I didn't mean that Apple's direct reason to build Quartz was because of X. But it is true that X didn't have any reasons to be used back then in the mid-90's as well, specially coming from NEXT with it's Display Postscript compositing manager.

</comment></comment></comment></comment><comment><USER36> We're still in the overture to the computer era. The most powerful software tool ever built is the function call, and that's been stuck in a developer- only release for 50 years. It's still early days.

</comment><comment><USER37> This is probably one of the most revisionist and poorly-written articles I've read in a while.

"Wearables and VR are good gimmicks, but even if they become ubiquitous, it's not a revolution, just an extension of the use cases that the iPhone revolution bootstrapped."

This took the cake. Apple has nothing to do with VR. Nothing they've done has helped that industry at all, except maybe cheaper LCD screens (which likely would have happened anyway). Apple has no hardware or software which is VR capable. To claim they built the VR ecosystem is, at best, delusional.

</comment><comment><USER38> "Wearables and VR are good gimmicks, but even if they become ubiquitous, it's not a revolution, just an extension of the use cases that the iPhone revolution bootstrapped."

Smartphones seem a heck of a lot more derivative of earlier computing use cases.

Wearables and VR owe a debt to smartphones because of the cheap components from the mobile supply chain finally make them possible. The debt is not in the realm of ideas. Conceptually both VR and ubiquitous computing predate smartphones by decades.

</comment><comment><USER39> Off-topic public service announcement: There is no "g" in the word "reins" in the context of "...left the reins to..."

<comment><AUTHOR> thanks, corrected :-)

<comment><USER39> YW. Enjoyed reading the article.

</comment></comment></comment><comment><USER40> Apple's pattern seems to be small "bursts" of innovation followed by long periods of "dormancy" where they just make smaller/bigger screens. Their "walled garden" cow is just about milked out as the Open Web is enters its new rennaisance. They'll be back in 10-15 years with somethinh that looks like real innovation again.

<comment><USER24> Without Jobs I king of doubt that it will be them doing it. They might stumble onto some gem and use their vast hordes of cash to buy their way into an emerging market this time around.

</comment></comment><comment><USER41> Hm, X11 is not an operating system. Stopped reading there - doesn't seem worth reading to me. (Btw, I was never an Apple user)

<comment><AUTHOR> Did you know that at one point X had a freaking printer server? These are all complaints from the maintainers of X themselves. I am not making that up.

</comment></comment><comment><USER42> Assuming there's movement away from Apple, how much of that movement, if any, can be attributed to more polished macOS-like linux options that are available? Not that Mint, Elementary OS, Ubuntu, etc. are exactly new...

</comment><comment><USER43> s/reigns/reins

[http://blog.oxforddictionaries.com/2012/03/rein-or- reign/](http://blog.oxforddictionaries.com/2012/03/rein-or-reign/)

</comment><comment><USER44> These bandwagon articles are getting really old… A minority of people choosing to try Linux again does not represent a massive shift.

</comment><comment><USER45> I agree completely with this essay.

Here is my tip to Apple. I always felt I understood Apple's Gestapo-like tactics in the past, regarding their rigid methodologies. Eliminating ports and features, removable batteries, etc. I don't understand Apples moves in the past 5 years. They have spread out and complicated everything that Jobs' made simple and attractive.

Heres my advice.

Apple is way too spread out, it should kill off the dead ends.

* Kill iTunes split it in to 5 functional media apps, and design a good simple music player. Stop trying to make me sign up for reoccurring-billing services. Makes me feel like I'm dealing with Comcast.

* Merge the App store with the Apple media store.

* Kill the watch and the car.

* Merge the iPod, iPhone, iPad, iMac, Macbook to one product with 5 sizes each with a pro series all with a touch or keyboard interface and an appropriate OS interface depending on if a keyboard is attached. Yes, merge MacOS and iOS.

* Simplify product and Apple services pricing, two tiers, basic and unlimited.

* Bring back a pro series products and software even if it was a revenue loser.

* And simply password protections with a API service offered and incentivized like SSL certs are.

* I sort of get Apple Health, but what is Apple Home? What is Apple Music Match, or Apple Music and why isn't it included with iCloud? Merge them all.

There are plenty of IT sectors to fix and disrupt. They seem like they just think there's isn't anything work on. Cars? Watches? Movie/TV? WTF

How about

There's just one more thing... Apple home audio video equipment and media services and amps. Compete with the big boys in home audio video. The industry is a mess with protocols, encryption, DRM, AV encoding, bit-rates, streaming services. I need my IT degree, not for computers but for my audio system. Erode cable's power grip not from the network production and delivery end from the home equipment end. Remake Apple TV as a prosumer product series called Apple Home. Hardware that works with Apple amplifiers, Apple speakers, Apple record players? etc. Introduce Apple TV an actual TV. Let's face it the only good thing about TVs these days is the actual screen, the software sucks. Everyone is tired of having 5 remote controls. My husband can't turn on the TV! Apple is perfectly set up to do it. It's constant and consistent market that will only grow as home entertainment improves in quality.

<comment><USER30> * Kill the watch and the car.

Killing the watch would be insane. Apple is now the Number 2 watch maker in the world by revenue (just for watches), second only to Rolex. We don't know their actual revenue, but Fossil at no.3 raked in over $3bn. You'd really cancel a multi-billion dollar revenue stream?

<comment><USER45> 3 billion dollars isn't cool. You know what's cool? A cool product that actually innovates and 50 billion dollars.

</comment></comment></comment><comment><USER46> > I have no idea where we are going from here

Mars, we are going to Mars!

<comment><USER47> I'm with you on that

</comment></comment><comment><USER48> How did this rambling article make it to the front page of HN?</comment>


Twitter has acquired Posterous - <AUTHOR> http://thenextweb.com/insider/2012/03/12/twitter-has-acquired-shortform-blogging-company-posterous/ <comment><USER2> A bash from DHH is coming...Duck!</comment>


Paper retracted after scientist banned software use by countries taking refugees - <AUTHOR> http://news.sciencemag.org/europe/2015/11/paper-retracted-after-scientist-bans-use-his-software-countries-welcome-refugees <comment><USER2> The co-developer of the software distances himself from the scientist: [http://webcache.googleusercontent.com/search?q=cache:2MjBmRl...](http://webcache.googleusercontent.com/search?q=cache:2MjBmRlEhUYJ:http://strimmerlab.org/publications/journals/treefinder2004-disclaimer.txt%2BGangolf+Jobb+treefinder+Korbinian++Strimmer&client=opera&hs=fB2&channel=suggest&gbv=1&hl=de&&ct=clnk) (Google-Cache, because the page has been taken down)</comment>


Ask HN: Most useful C libraries? - <AUTHOR>

What are useful/less known C libraries you want to share?
A very useful list (for me) is: http://wiki.musl-libc.org/wiki/Alternative_libraries
throwaway2001 is the one I'll use to introduce a few <comment><USER2> [http://www.musl-libc.org/](http://www.musl-libc.org/)

</comment><comment><USER2> [http://rr-project.org/](http://rr-project.org/)

</comment><comment><USER2> [http://valgrind.org/](http://valgrind.org/)

</comment><comment><USER2> [https://lttng.org/](https://lttng.org/)</comment>


Parallel decompression of gzip-compressed files - <AUTHOR> https://arxiv.org/abs/1905.07224 <comment><AUTHOR> GitHub: [https://github.com/Piezoid/pugz](https://github.com/Piezoid/pugz).

From the readme:

"Contrary to the pigz program which does single-threaded decompression (see [https://github.com/madler/pigz/blob/master/pigz.c#L232](https://github.com/madler/pigz/blob/master/pigz.c#L232)), pugz found a way to do truly parallel decompression. In a nutshell: the compressed file is splitted into consecutive sections, processed one after the other. Sections are in turn splitted into chunks (one chunk per thread) and will be decompressed in parallel. A first pass decompresses chunks and keeps track of back-references (see e.g. our paper for the definition of that term), but is unable to resolve them. Then, a quick sequential pass is done to resolve the contexts of all chunks. A final parallel pass translates all unresolved back-references and outputs the file."

</comment><comment><USER2> Somewhat related, for bzip2, I use pbzip2 which uses all the cores, or as many as you specify. [1] It is in the EPEL repo for RHEL/CentOS/Fedora.

[1] - [https://linux.die.net/man/1/pbzip2](https://linux.die.net/man/1/pbzip2)</comment>


Windows NT 3.50 Build 782 (RC2) source code leaked - <AUTHOR> https://boards.4channel.org/vp/thread/43555197#p43583389 <comment><AUTHOR> An article about it: [https://securitronlinux.com/bejiitaswrath/nt-3-50-build-782-...](https://securitronlinux.com/bejiitaswrath/nt-3-50-build-782-rc2-source- code-has-been-leaked/) Video of someone exploring the source files with date modified being in 1994: [https://www.youtube.com/watch?v=to_uj-7pGwc](https://www.youtube.com/watch?v=to_uj-7pGwc)</comment>


Show HN: Summarized Finance / Tech Newsletter Using Natural Language Processing - <AUTHOR> http://getthecrypt.com/how-it-works <comment><USER2> Amazing work chidog12, I've tied using TextRank for text summarization before, but the results are mostly hit or miss. I've found that, elements in the page like "Follow this reader", Share on twiiter, facebook frequently oocur in these articles and due to the voter based ranking of TextRank , they get picked up as high ranked sentences. Which of the algorithms mentioned in your site were most effective in extracting useful summaries?

<comment><AUTHOR> Sorry for the late reply,

Honestly, we still need more testing.

However, our top 3 tend to usually be Luhn's Heuristic Method, Latent Sentiment Analysis, and TextRank.

On the other hand, we have yet to use a single summary produced solely using SumBasic... I'll need to read into that one more.

</comment></comment><comment><USER3> I'm curious about your semantic analysis process. Do you employ a particular threshold for neutrality, or does the team provide input?

No doubt neutral reporting is advantageous; personally I would find it helpful to also see both a highly positive and negative take. Coming at a topic from both high and low may, imho, improve accuracy of comprehension.

<comment><AUTHOR> Hmm, I really like that last point you've made... both highly positive and negative takes, I'll look into that.

For the semantic analysis process, we are using Microsoft's API - scores from 0-1. And for the most part, it is pretty good based on our views on neutrality (which of course has some inherent biases).

0.5 is considered pretty indifferent, however, we allow for a threshold of 0.35 - 0.75 as neutral, but we specify it's lean on our end.

On Reddit, we've tested our summaries in the comments for tl;dr and we actually indicate the articles lean for example "This article is neutral with a negative lean on the topic".

In Finance, top publications do a great job on maintaining neutrality. However, if we ever get into politics... we'll need to take this a little more seriously!

Thanks for the comment.

</comment></comment><comment><USER4> I wonder how do you choose which news or story to deliver to users? From your recent link[1] it seems like the news is bit on the short side.

1\. [http://getthecrypt.com/recent/](http://getthecrypt.com/recent/)

<comment><AUTHOR> lol yea, we are still working on our choosing process. Right now it's really just our preferences vs the criteria we've set up using NewsApi.</comment></comment>


iRobot (Roomba) shares customer data with Google and other affiliates - <AUTHOR> https://webapi.irobot.com//Legal/Documents/North-America/United-States/Legal-Documents/Privacy-Policy.aspx?sc_lang=en#2 <comment><USER2> Thanks, I don't need a vacuum that sends data to you, or anyone else. It's not necessary to the function of the product. The convenience does not outweigh the cost of my privacy, and I'm certainly not going to pay you to extract it from me. You should be paying me to use your product if you want the data.

<comment><USER3> I don't disagree but the attitude in corporate America is simply anything for profit is good and justified. iRobot will happily argue their service will cost more unless they share your data when what they really mean is you'll have to offset this new revenue stream for them if you want them to stop.

<comment><USER4> So it all comes back to regulation, right? iRobot does this because there is no law against it. AT&T is walking back its selling of location data after the online outrage kicked in, but they'll go back to selling it once everyone has forgotten. Facebook and Google sell your data because there is no law against it.

Push your legislator(s) for regulation of your data privacy rights. It is _the only way_ these encroachments on citizen privacy get fixed. Europe does this right (<3 GDPR), and the US has _a lot_ of room for improvement.

<comment><USER5> edit: lost interest in the battle. /Whiteflag

<comment><USER3> I realize you're being sarcastic but customers don't agree to it in any reasonable sense: shrinkwrap agreements are notoriously long winded and obscure and there is usually no way to opt out. iRobot knows if the product actually said "Shares your personal data" on the box it would negativity affect sales.

So yes I agree with the person above you who said regulation is the answer. If you make it impossible to share data then it's not longer a revenue stream or a competitive advantage and companies can focus their efforts on improving the product for the consumer to drive profit rather than milking the customer for data and selling it.

</comment></comment></comment></comment></comment><comment><USER6> It seems that these days you should assume that any product which needs an Internet connection to function is going to phone home through that. There's certainly a market for "smart, but not _too_ smart" devices; unfortunately I doubt it's very large.

<comment><USER2> It's another reason why I quite using fitbit. There is no reason at all you need internet connectivity to send the data 3 feet from the device to the phone via bluetooth. They don't need to collect the data at all, and since there is no opt-out, I just quit using it.

<comment><USER7> Did you replace it with anything ?

<comment><USER2> No. I go on regular walks on a regular route, so I know how far it is after using it a few times. I don't really need to know down to the step how far I walked each day, just that I at least did what my goal is.

</comment></comment></comment></comment><comment><USER8> You're being deliberately misleading to stir the pot. It says they use Google Analytics and Ads, just like the other 3/4 of the internet.

<comment><USER9> Why does a vacuum cleaner need Google Analytics or Ads?

<comment><USER10> The privacy policy covers irobot.com, their products, and their mobile apps.

Their website, marketing tools, and apps are the ones that connect to third parties. See below:

Information collected automatically.

We and our third party service providers may collect certain types of usage information when you visit our Website or mobile Apps, read our emails, or otherwise engage with us. We use this information to enhance and personalize your user experience, to monitor and improve our websites and services, and for other internal purposes. In some instances, we and our third party service providers may combine this usage information with personal information. If we do combine any usage information with personal information, the combined information will be treated by us as personal information.

We typically collect this information through a variety of tracking technologies, including cookies, web beacons, embedded scripts, location- identifying technologies, file information, and similar technology (collectively, "tracking technologies"). We, and our third party partners, use tracking technologies to automatically collect usage and device information, such as:

</comment></comment></comment><comment><USER11> If you scroll up from where the link sends you, you will see a section called "Information We Collect from Registered Devices Equipped with Smart Technology", which completely negates the premise in the title.

<comment><USER12> I always wonder how many people read only titles. In this case it's enough to glance the fragment in question to realize the title is imprecise.

</comment></comment><comment><USER13> WTF.

Why are these machines on the internet? I have one ordered that will arrive in a few days, I really hope that I can turn that off. I don't want any "internet of things to be hacked" devices in my house.

<comment><USER14> I haven't connected mine to the Internet. It still works, you just can't control it or get diagnostics through your phone.

</comment></comment><comment><USER15> OK, this is confusing. They explicitly say they share with Google/Amazon if you use Assistant/Alexa, which makes sense, but then also "From time to time, with selected third parties who we think may offer you products or services you may enjoy." So I don't think it's fair to say that they're giving your data to Google unsolicited, but they're definitely sharing it with SOMEONE unsolicited.

</comment><comment><USER16> I must be missing something. Where do they say they send data to google?

Are we talking about the Assistant/Alexa integration, which sounds fairly focused? I guess the key question is whether or not they are sending data when you aren't using Assistant or Alexa.

Or are we talking about the fact that they are using ad networks to show ads? The latter isn't anything different than any site that sends ads.

</comment><comment><USER17> > We may share your personal information in the instances described below... > From time to time, with selected third parties who we think may offer you > products or services you may enjoy.

In other words, "whenever we feel like it." I'm not sure why they bothered with the other clauses.

</comment><comment><USER18> I recently learned that there is a name for this phenomenon where our reality is being increasingly digitized and financialized - "surveillance capitalism".

 _Surveillance capitalism is a novel market form and a specific logic of capitalist accumulation that was first described in a 2014 essay by business theorist and social scientist Shoshana Zuboff. She characterized it as a "radically disembedded and extractive variant of information capitalism" based on the commodification of "reality" and its transformation into behavioral data for analysis and sales._

[https://en.wikipedia.org/wiki/Surveillance_capitalism](https://en.wikipedia.org/wiki/Surveillance_capitalism)

</comment><comment><USER10> The title is needlessly alarmist. The linked privacy policy covers the various robots as well as irobot.com and their mobile apps.

Most of the comments here are about their robots so let me copy and paste the relevant passage from the policy below:

Information We Collect from Registered Devices Equipped with Smart Technology.

Some of our Robots are equipped with smart technology which allows the Robots to transmit data wirelessly to the Service. When you register your Robot with the online App, we collect information about the Robot, such as a Robot name and device number, and information about the Robot and/or App usage, feature usage, in-App transactions, technical specifications, crashes, and other information about how you use your Robot and the product App. For example, the Robot could collect and transmit information about the Robot's function and use statistics, such as battery life and health, start and stop times, and number of missions.

Certain Robot models are equipped to collect information about the environment in which the Robot is deployed. For example, the Robot collects information about its movement throughout the environment to create a location 'map' of the space accessible to the Robot. The spatial map is a digital representation of the Robot's domain and does not include recognizable images from the location environment. To create the map, the Robot converts computer-vision images to abstract features and landmarks to generate a spatial representation of the Robot's territory indicating the presence of objects, obstacles, floor coverings like carpet or tile, WiFi signal strength, and dirt detection.

We use this information to collect and analyze statistics and usage data, diagnose and fix technology problems, enhance device performance, and improve user experience. We may use this information to provide you personalized communications, including marketing and promotional messages, such as emails providing product order information when your device indicates a battery needs replacement. We consider location mapping data to be sensitive, confidential information and we do not share this information with third parties for marketing purposes. Please visit our Data Security page to learn more.

Our Robots do not transmit this information unless you register your device online and connect to WiFi, Bluetooth, or connect to the internet via another method. It is possible to use our smart technology Robots without WiFi or Bluetooth data transmission, simply by disconnecting your WiFi or Bluetooth from the device or by never connecting it at all. You can also choose through your settings in the App to not to have location mapping data transmitted to us.

<comment><USER19> > Some of our Robots are equipped with smart technology which allows the > Robots to transmit data wirelessly to the Service.

As far as I know _all_ their current Roomba lineup is equipped with that technology. I actually just bought the last non-wifi Roomba I could find, specifically to avoid it.

<comment><USER14> You don't have to connect the Roomba to the Internet. My 690 isn't connected and it works fine.

<comment><USER19> Can you program schedules without wifi? It's missing the scheduling buttons mine has, and the product description makes it seem like you need to use the app for that:

[https://store.irobot.com/default/roomba-vacuuming-robot- vacu...](https://store.irobot.com/default/roomba-vacuuming-robot-vacuum- irobot-roomba-690/R690020.html)

</comment></comment></comment></comment><comment><USER20> When did they start doing this? The one I've got doesn't have any form of radio.

</comment><comment><USER21> Is there an alternative to Roomba that doesn't have mandatory telemetry?

<comment><USER22> I bought a cheap one off amazon on black Friday for like 180$ and it works great. It may have fancy online features but I've never even tried to find out that as there is not much point in automating it further nor do the fancy ones solve the current automation problems (avoiding liquids like vomit/pee from your pet so you still need to be at home when you run it, emptying the bin, cleaning the bristles, avoiding problematic items that will clog it like cords).

</comment></comment><comment><USER19> I like Roombas, but I refuse to buy any that uses Wifi. It's totally unnecessary, opens up the possibility of privacy invasions, and a smartphone app is a UX regression over physical buttons.

I really wish they'd develop a mapping Roomba that did all processing onboard, and could be totally configured using built-in controls. I'd buy it in a second.

<comment><USER10> I assume all the processing is done onboard, FTA:

"It is possible to use our smart technology Robots without WiFi or Bluetooth data transmission, simply by disconnecting your WiFi or Bluetooth from the device or by never connecting it at all. You can also choose through your settings in the App to not to have location mapping data transmitted to us."</comment></comment>


Surprising Facts about HIV/AIDS in 2010 - <AUTHOR> http://blog.cubeofm.com/suprising-facts-about-aids-in-2010

<comment><USER2> I could have gone my whole life without seeing that photo...

<comment><USER3> It's from a French HIV awareness campaign. There is a female equivalent which is slightly less horrifying:

[http://adsoftheworld.com/media/print/french_aids_awareness_s...](http://adsoftheworld.com/media/print/french_aids_awareness_spider?size=_original)

</comment></comment><comment><USER4> "Circumcision prevents AIDS. The UN says 'Clinical trials have confirmed the results from observational epidemiology that male circumcision reduces transmission of HIV among men'"

You know what works even better? Consistent condom use and not visiting prostitutes.

<comment><USER5> I'd wager female genital mutilation also lowers the chances of getting aids-- if only through decreased interest in sex.

</comment></comment><comment><USER6> Dont submit this to reddit. They believe circumcision to be worse than slavery :P

<comment><USER7> I expect Hacker News has a similar consensus. Circumcision is not worse than slavery, but it is one of those relics of human barbarism that will be looked at with scorn and disdain in 50 years. The fact that HIV transmission is marginally reduced by circumcision is a terrible reason to advocate involuntary circumcision of infants.

</comment></comment><comment><USER8> About the circumcision - I've found this site to be generally useful explaining things we might know about the practice - <http://www.foreskin.org>

I've always thought that circumcision does not help against HIV, but the report proves otherwise.

</comment><comment><USER9> 21% of people living with HIV in the U.S are unaware of their status

I had no clue the number was that big, then after a moment of thought I wondered how they came up with this number... if they don't know how does the researcher?

<comment><USER10> One possible method: Blood from donors is checked for HIV. If the person ends up having HIV, ask the person if he/she was aware. Then account for the people who normally wouldn't give blood.

</comment></comment><comment><USER11> I love the metaphorical photo. Other than that, it is a fairly dry bullet point list of statistics.

</comment><comment><USER12> don't bang hookers in the ukraine.

<comment><USER13> do the above in Pakistan?

<comment><USER14> Pakistan must be really safe. They've never even _heard_ of AIDS over there.

<comment><USER11> I would guess many of them have never heard of it because Pakistan is a country of young people, with mostly inadequate education (I believe the average education level of Pakistani women is between 2nd and 4th grade level, or was the last time I discussed this on the 'Net):

 _Pakistan today has the youngest population among all those countries that have more than 100 million people. In its case, the median age of the population is only 17 years which means that of the 162 million people in 2008, some 81 million are below the age of seventeen._

From: <http://www.dawn.com/2008/08/25/ebr16.htm></comment></comment></comment></comment>