Is C++ fast? - <AUTHOR> https://zeuxcg.org/2019/01/17/is-c-fast/ <comment><USER3> So if you get rid of bounds check, reimplement your own feature-limited vector and hash table and _change the algorithm moving from a general purpose exact sort to an inexact, domain-specific one_ , you can improve your run time from 572ms to 320ms.

What does this have to do with C++?

<comment><USER4> I interpret the title to mean, "Is standard usage of C++ language features and the STL competitive with C?". The author is basically showing how you improve performance by selectively tearing out more and more features C++ hands you out of the box. This is characteristic of writing C++ in a more C-like style. In that sense I think the author is correct.

However I'd also say this is something already well known by most C and, particularly, C++ developers. Yes, you can get better performance by reimplementing much of what C++ gives you, and that is typical of writing C code instead of C++. But there's a fair bit of productivity trade off in doing so.

<comment><USER5> I'm pretty sure I could make a faster 'printf' but which only supports '%d'. Does that mean 'C is slow'?

<comment><USER6> I'd say that printf, with its own DSL, _is_ actually pretty slow. It's meant for debugging or "slow" I/O, if you need to write a lot of data it should be avoided.

A few years ago for debugging purposes I wanted to hexdump a large amount of data. Turns out that the standard hexdump tool was pretty slow at it, writing a simple C utility that would format the dump "by hand" instead of using printf was about an order of magnitude faster. You have fully static code instead of the interpreted format string, you can unroll all the formatting, you don't have to rewrite the characters that don't change in every line (spaces, delimiters etc...). It's lightning fast but of course not very flexible.

<comment><USER7> It's been a long time since I've done C++. I wonder if

       int x;
       cout << x;

ought to be faster than printf("%d", x), by virtue of knowing the types ahead of time?

<comment><USER8> Pedantic: No. If you write

      #include "studio.h"
      int x;
      printf("%d", x);

the compiler knows the types ahead of time, too, so that cannot explain any speed difference (and yes, C compilers do try to avoid the generic _printf_ in the library. See [http://www.ciselant.de/projects/gcc_printf/gcc_printf.html](http://www.ciselant.de/projects/gcc_printf/gcc_printf.html) for examples)

(The _#include_ is essential. With it, the compiler can know what _printf_ does, and, in theory, optimize it to a int-to-string conversion and a _puts_ system call. Without it, it cannot, because it doesn't know what the _printf_ function does (in this case, it is easier to generate fast code for the compiler if it doesn't have the source available than when it would see source code for a function called _printf_ )

Utterly pedantic: no. As given, both are undefined behavior, and it is trivial for a compiler to discover that.

<comment><USER9> > and yes, C compilers do try to avoid the generic printf in the library

That is true for certain format strings (containing only %s or %c conversions), but for %d GCC and Clang don't seem to want to call a print_int function, possibly because there is none: [https://gcc.godbolt.org/z/rltFse](https://gcc.godbolt.org/z/rltFse)

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> I haven't (yet) read the article, but let me provide an anecdote to answer the question posed by the post title "Is C++ fast?":

I write in C++. I had a coworker who wrote in Ruby. He wanted to learn C++ because C++ is "fast". So he wrote two identical programs: one in C++ and one in Ruby. Then, he ran both programs though `time` to determine how long each took.

His C++ program took longer.

Why was that?

He didn't write his C++ program using any efficient algorithms whatsoever while his Ruby program was well-designed. He came to me to try to tell me that C++ wasn't as fast as Ruby.

So I rewrote his C++ program. My C++ program then ran almost instantly while his Ruby program hadn't even begun reading or writing; the C++ program finished while the Ruby program was still initializing the Ruby runtime libraries.

Is C++ fast? Yes, it _can_ be. But it's only fast if the developer understands how to make it fast.

Don't use C++ because it's "fast". Use C++ because you understand what its intended purpose is: to be close to the hardware.

<comment><USER11> I really like your comment, thanks.

I suppose the question that many people would like to ask, but it's hard to test is:

"Can we rank the speed of languages, given each are used by a domain expert to take full advantage of the features of that language"

or some such.

i.e. if a masterful C programmer and a masterful C++ programmer and a masterful Java Programmer and a masterful Ruby programmer all write something, which is faster.

I'm sure the answer is "it depends", because that's always the answer.

<comment><USER12> For that particular question: They would all be the same speed because the optimization requirement would lead each one to write a compiler in their language of choice that emits a perfectly tuned assembly binary.

What gets overlooked in language performance is that you pick a language for what are, in essence, placeholder constructs. The performance matters only in that you need it to be fast enough "off the shelf" that you don't _have_ to start writing a compiler. But you generally aren't prevented from using that approach to boost your existing code, and high performance systems often converge on that strategy in some degree, because it lets you keep maintainable source code and add toggles for debugging and optimization that you won't get from treating the application and compiler code as separate entities.

</comment></comment></comment><comment><USER13> > Let's try to replace the only STL component we're still using, std::vector, > with a really simple dynamic array - we don't need resize or push_back in > our code, all arrays are initialized with the right size.

Given those requirements, a custom allocator would speed things up. A custom allocator could allocate even on the stack (small buffer optimisation) if possible or use a memory pool.

Embracing C++ features or reading the docs often gives you more than going back to C or reinventing the wheel.

However I think this demonstrates one of the many lurking problems of C++: It does not enforce the right way of doing things nor makes it easy. Instead it makes the right solution awkward or cumbersome to write.

<comment><USER14> > It does not enforce the right way of doing things nor makes it easy.

but what the author is doing here, while being "the right thing" for his own project with specific performance requirements, is absolutely not the right thing to do for the average project that has a few std::vector of 15 widgets, a dozen strings and six and a half pixmaps, or does the occasional web request.

<comment><USER15> Why not? How do you know?

<comment><USER16> As already said, it depends on the type of project. Sometimes performance is key, sometimes implementation time is. It is the old tradeoff between engineering effort spent and the value gained.

</comment></comment></comment></comment><comment><USER17> It would be nice if he used a newer version of GCC and a newer base system in general, rather than the 2+ year old version of Ubuntu. I would also like to see % change as a column in those tables.

Also I'd like to see other optimization levels, since at least GCC adds a lot more potentially slow (to compile) optimizations at -O3. Maybe -ffast-math. Static linking too could conceivably make a difference if he calls into external libraries frequently.

And where does perf say the time is going? Maybe it's all lost in branches or cache misses so a different algorithm that branches less or uses denser data could help.

How about vectorization? I've now looked at the code and it's all vectors, arrays and matrices so surely this is an application for AVX, maybe even a GPU.

Anyway I think what's clear is this doesn't have much to do with C vs C++.

</comment><comment><USER18> The most surprising part of this to me was the speedup from replacing std::vector.

They write, "We don't need resize or push_back in our code, all arrays are initialized with the right size." But if you're not doing any resizing or anything, and you're reserving the right amount, std::vector basically _is_ a thin wrapper over a dynamically-allocated raw array -- which is what they tout as their replacement.

I guess I'm surprised that the overhead from default initialization was so large.

With vector, it seems there are always tradeoffs: resize and you have some initialization overhead, but only reserve and you will have a bounds-check- maybe-realloc every time you need to push_back. Of course, since you reserved, the realloc never happens, but you still have to check each time.

I wonder if something like generate_n or copy_n into a back_inserter can avoid the bounds checks?

<comment><USER19> > std::vector basically is a thin wrapper over a dynamically-allocated raw > array

Not exactly. A dynamically-allocated array doesn't necessarily save its own size (the system allocator can do optimizations), but std::vector does (you could call size() on it). So std::vector has to save this size somewhere, which takes space and time.

<comment><USER18> For me, the overhead of keeping track of size and capacity is still pretty thin. It's not like it's a linked list or something.

The overhead is thin but non-zero.

<comment><USER20> That overhead can be thin or heavy, depending on the operation.

Doing "push_back" requires checking if "size < capacity", so this operation has a lot of overhead even for std::vector instances that never reallocate storage.

<comment><USER21> Here it would be great to see if the optimizer (which was only on O2 for unfathomable reasons) understands the reserve() beforehand to the point that it can eliminate those checks. You'd have to look at assembly for that.

<comment><USER18> I think Compiler Explorer shows that it usually doesn't, unfortunately.

</comment></comment></comment></comment></comment></comment><comment><USER22> The virtues of the STL are that your code is, by default, typesafe and Not Slow. The article shows a few techniques for how to go from Not Slow to fast, mostly by fiddling with the data structures, and these jibe with my experience. In a nontrivial program, you will have your hot code and by creating custom data structures that make different trade offs than the STL (typically eschewing features like initialization, resize, etc), you can get some gain. But that effort isn't worth it for the rest of your program, and yet the rest of your program is Not Slow.

The algorithm discussed also involves matrix math. It's not object oriented, it's not data processing. So, there's just naturally not that much difference between C and C++ in this domain.

</comment><comment><USER23> > I made a meshopt_Allocator class that could allocate large blocks of typed > data and remember the allocated pointer; at the end of the scope all > allocated blocks would be deleted.

I only write occasional C, and no C++ since college, but I think this Arena pattern is drastically underused. I'd love to see it in web frameworks, where every allocation inside a request comes from the same place, and at the end you just give it all back. It seems like you could even offer that in Ruby. Does Rocket use anything like this? It seems like the kind of thing Rust folks would take advantage of.

Postgres memory allocation follows an Arena pattern, where you use palloc to grab memory, but you rarely have to free it, because it is all freed when the "context" completes. There are nested contexts for things like the connection, the transaction, the sql statement, a function call, etc., so as long as you're allocating from the right context, you can practically ignore cleaning up after yourself. (This is from the perspective of a frequent extension author but someone who has only barely contributed to the core project, so perhaps a more expert contributor can correct me and/or elaborate.)

EDIT: Btw, I really enjoyed the article; thank you for sharing your experiences with us!

<comment><USER24> A nicely tuned generational GC should end up with first and second generations effectively as arena allocators that get recycled very cheaply. When the time comes around to collect the second generation, it should have almost no live data, as it will only be filled with whatever was in flight across all the times the first generation was collected.

When I understood this, it was an aha! moment for GC languages in stateless server contexts. I could see that for a properly written server - <USER2> keeping any long-lived mutable memory like caches off-heap - GC overhead could be negligible.

<comment><USER25> I'm very doubtful that's really true for databases. A lot of memory freed this way is _not_ short lived. E.g. the contexts for running [parts of] an analytics query can both be large and quite long lived. And it's crucial that the memory is available again the instant the last query [part] finished, otherwise it's quite realistic to run out of memory. And adding latency by running through the many GB of otherwise used memory in hypothetical older generations isn't acceptable either.

<comment><USER24> I wrote _stateless_ servers, if you missed that bit.

Anything requiring large semi-long-lived intermediate buffers would need a different approach, I agree. Similar to caches; you don't want a mid-life crisis in a generational GC.

</comment></comment></comment></comment><comment><USER21> Main criticisms from my side (that have not been discussed to death already):

\- Why O2? Why not O3? You're tuning your code for maximum performance and then leave the optimizer halfway? That'll of course disadvantage code with more abstractions.

\- Compile times are improved by dropping STL headers - that's why precompiled headers exist. Having that factored into the comparison would indeed be interesting, sadly this was not done.

\- MSVC is slow in debug mode because it's doing every debug check it can. If that's not what you want, you can just change the iterator debug level. I was hoping the author would figure as much after finding the gcc/clang switches (and _complaining that they were off by default_ \- very ironic) with note 6 but no dice.

\- Regarding the choice of title: Almost all performance improvements were of algorithmic/data structure nature. That's completely natural for the level of performance tuning here. And I wouldn't really care if those specialized implementations are in C++ or C, do what you want. Just don't implement them in C and then draw conclusions from comparing them against the C++ STL under the flag of "Is C++ fast?". I think a better title for the article would've been "Are defaults fast?".

</comment><comment><USER26> Better question: Can C++ be fast? Yes. But depending on the skill -- or lack thereof -- of the developer it can be dreadfully slow. Besides, speed isn't the best metric for judging a language. In the late 90s there was a joke among Windows desktop developers: Which is faster, C++ or VB6? The answer was "VB6, by six months" and there was a ton of truth to that statement (and by the time the C++ version would have been done the parts of the VB desktop app that had performance issues could have been identified and the logic replaced with C++ COM Objects).

The language is just a tool; USE the tool, don't be a tool.

</comment><comment><USER27> Not a big surprise that hand implemented data structures with domain specific optimizations are faster than generic standard library implementations.

</comment><comment> Const-me Indeed, standard library is often slow. Sometimes by orders of magnitude.

Here's an example where a fast linked list implementation (not mine, `CAtlList` from ATL) approaches or outperforms std::vector: [https://github.com/Const-me/CollectionMicrobench](https://github.com/Const- me/CollectionMicrobench)

Fortunately, in C++ we don't pay for features we don't use. If you want fast code, no need to go back to C, you only need better C++ containers.

</comment><comment><USER28> C++ is relatively fast but MSVC's STL library's debug performance is abysmal. It's been like this since at least MSVC 2008 too. I'm not sure why Microsoft doesn't think it's a priority to improve.

<comment><USER29> It's because it's trivial to improve. The reason the MSVC STL is so slow in debug mode, is because it's _really_ debug; they pull out all the stops to bounds-check every dereference, keep a generational count to detect iterators that could potentially have been invalidated by an operation that moved elements or reallocates the container (and do so whether or not the potential resize actually happened), etc. This adds a ton of code to the iterator paths, and (due to that code size) loses most inlining opportunities.

If you want it to be as fast as other implementations, ask it to do less of this. They provide [_ITERATOR_DEBUG_LEVEL]([https://docs.microsoft.com/en- us/cpp/standard-library/iterat...](https://docs.microsoft.com/en- us/cpp/standard-library/iterator-debug-level?view=vs-2017)) for exactly that purpose. I think their choice of default (Debug means you want it to catch as many bugs as it can, and Release means it should be fast) is appropriate.

If they hadn't provided the knob to adjust this I'd agree they had a problem for some use-cases, but if you want the faster-but-less-thorough mode you just have to ask for it.

<comment><USER30> As you explained, the debugging mode for STL is well beyond normal debugging mode (i.e. no optimiziations, all debug symbols). It explicitly changes complexity guarantees of the stl to catch issues with iterator invalidation and other nasty bugs. As such it adds a considerable runtime cost to any use of the STL.

In a way it is comparable to the overhead of the sanitizers available in other compilers.

IIRC MS chose to enable it by default in debug mode as part of their effort of fortifying unsafe C and C++ code against security bugs, but of course it has a large penalty.

libstdc++ has a similar debug mode, but it is disabled by default, as, in addition to be more expensive, it also breaks the ABI.

</comment></comment></comment><comment><USER31> > Release performance also slightly increased across the board - this is > because for many of our arrays, the default initialization performed by > std::vector's constructor is redundant as we're going to fill the array > anyway. With std::vector, you can either resize a large array and then > compute the items (which requires default-initializing every item > redundantly), or reserve and push_back repeatedly (which requires a bit more > code for adding each item, and this overhead can also add up). With a custom > container it's easy to have an option to skip initialization - in fact, in > our replacement that's the only option since it's easy to memset the array > manually if necessary.

I have a hard time to get the rationale here. Is the author implying that using memset is inherently better than initializing an std::vector with the constructor that takes a count and a default value, or resetting it with the same variant of .assign()? Skimming through the code that's linked in the article, it looks like there's no use case where either the former or the latter wouldn't fit.

<comment><USER32> I read it as the author almost never uses the uninitialized data and when they do need a zeroed array it's simple to do so why pay the cost to initialize the elements when you're about to set them anyway.

<comment><USER33> But you can easily avoid that cost on std::vector, too. std::vector doesn't default-initialize unless you ask it to via resize(). reserve() doesn't initialize, though, it just allocates. Take this toy example:

        #include <vector>
        #include <cstdio>

        struct MyFoo {
            MyFoo() { printf("default ctor\n"); }
            MyFoo(int i) { printf("Initialized with %d\n", i); }
            MyFoo(const MyFoo& foo) {}
        };

        int main() {
            std::vector<MyFoo> myvec;
            myvec.reserve(100);
            printf("resize(2)\n");
            myvec.resize(2);
            printf("emplace_back()\n");
            myvec.emplace_back();
            printf("emplace_back(1)\n");
            myvec.emplace_back(1);
            printf("push_back(MyFoo{1})\n");
            myvec.push_back(MyFoo{2});
            return 0;
        }

It will print:

        resize(2)
        default ctor
        default ctor
        emplace_back()
        default ctor
        emplace_back(1)
        Initialized with 1
        push_back(MyFoo{1})
        Initialized with 2

Only the resize() call did a default initialization "silently", nothing else did.

<comment><USER18> The tradeoff is that emplace_back and push_back need to check the capacity (even though they won't reallocate because of reserve). Whereas with resize, assignments into the initialized area need no checks at all.

</comment></comment></comment></comment><comment><USER34> With great power comes great responsibility.

C++ is no different. If you want it to be blazing fast, you need to tell it exactly what you want. What data structure do you want, where do you want it, where should it ask for more memory if needed?

If you don't do that, there's some sane defaults but the compiler doesn't know whether you are going to relocate the structure or how you plan to access it.

</comment><comment><USER33> I'm confused by the premise:

> dropping C++11 requirement allowed me to make sure anybody can compile the > library on any platform, removing std::vector substantially improved > performance of unoptimized builds

What platform doesn't have C++11 support? And why is the performance of an unoptimized build interesting? -O2 is basically a standard compiler flag...?

</comment><comment><USER35> Interesting, but not necessarily surprising. It's pretty well known that the STL favors generality and interface consistency over speed.

In any C++ conference talk about performance the speaker's almost guaranteed to mention that their project uses their own optimized library instead of the STL.

</comment><comment><USER36> The most interesting part of this article to me was introducing me to Jonathan Blow and his Jai language. I've skimmed over some of his videos, and they look quite interesting. The compile time execution of any code supported by the language looks especially interesting.

</comment><comment><USER37> C++ gets you into trouble really fast ;-)

</comment><comment><USER38> What a terrible article.

It starts with the comparison of a general-purpose hash table with specifically-tailored one.

Then it throws in a switch from a comparison-based sort to a radix-based one.

Then, the stunning discovery that std::vector value-initialises its elements (fixable with 3 lines of a custom allocator, if you don't want that behaviour).

In the middle, it preaches about portability while at the same time advocating the use of __builtin functions vs standard functions, and type-punning floats to int and back (undefined behaviour in C++).

And all of this for a 572ms -> 320ms performance improvement?

<comment><USER30> In the grand tradition of HN i haven't read the article (but in my defense it is blocked by work's firewall). Still, if he claims that unordered_map has issues he is not alone. It is well known that the standard requirements preclude a more efficient implementation.

And the issue with vector value initializing it's elements is also well known and programmers have been asking for a solution (more user friendly than a custom allocator) for a long time.

<comment><USER14> I don't understand the problems. Want a better hash map ? Use whatever makes your day here : [https://tessil.github.io/2016/08/29/benchmark-hopscotch- map....](https://tessil.github.io/2016/08/29/benchmark-hopscotch-map.html) ; they are all header-only just like the standard library's.

Want a vector that does not initialize its elements ? Ask and thou shalt receive: [https://github.com/aguinet/pector](https://github.com/aguinet/pector)

The __whole point __of C++ is to make it easy for people to write generic libraries beyond de standard base provided by the stdlib. So why won 't you use those ?

<comment><USER30> Oh, I'm in violent agreement. The single biggest contribution of the STL is its set of concepts more than the actual implementations. If you do not like the specific tradeoffs for a container or algo implementation, you can swap it for a different implementation often without code changes. I.e. you do not need to remove abstraction, you just swap it for a different one.

Still it is fair to critique the specific tradeoff done by the standard library.

<comment><USER39> It's the linear chaining effectively required by the standard. I had an application years ago which was 10x as fast after dropping in khash over unordered_map.

<comment><USER30> IIRC that's because of the iterator and address invalidation requirements that effectively require an node based implementation. But if your code does not rely on these guarantees then, as you suggest, you can swap it with a different implementation with the same interface.

You do not have to pay for what you do not use.

</comment></comment></comment></comment></comment></comment><comment><USER40> There was an article on HN, where the author stated that they didn't like to write own algorithms "like in '90".

In this context, the Arseny's article should be titled: "How to be old-school and tailor algorithms & data structures to your needs". I have this haunting feeling that people nowadays are afraid of "reinventing wheel" even though it'd pay off. A recurring argument is that the standard library or boost or something available on github is better than a custom solution. But as we see, there are cases where saying "nope, I'll do better job myself" has sense.

</comment><comment><USER41> "C with structs" never heard of this saying. What does it mean exactly?

<comment><USER42> The first version of C++ ever, designed by Bjarne Stroustrup at AT&T as a thin layer on top of C, was called "C with classes". It was implemented as some kind of source code preprocessor that took ".cc" code and output actual ".c" code, probably not even fully parsing the input code.

It is already a somewhat funny first joke saying that the subset of modern C++ that's a nice language is just the C part and the "class" paradigm ("C with classes").

It is another second somewhat funny joke to say that actually the nice part is only an even more restrictive subset, "C with structs". Yes, structs and classes are virtually equivalent in C++, but let's assume they mean structs as in "classes without member functions". Which were already present in C. Which is why it is funny.

Jokes are never funny when explained :/ Source: I'm a somewhat experienced stand-up comedy practicioner, apart from a very experienced software developer.

I wholeheartedly recommend reading Stroustrup's "Design and evolution of C++", gives you so much valuable and interesting background.

<comment><USER43> It is even funnier that all major C compilers, and in some cases libc, are nowadays implemented in C++.

<comment><USER44> No it is not (funnier).

<comment><USER43> From a former C++ advocate on USENET point of view, it surely is.

</comment></comment></comment></comment></comment><comment><USER45> _" removing algorithm includes sped up compilation."_

Why is he optimizing for compile times when his compile times are only 1/2 second the start out with? Interesting article though.

<comment><USER46> 1/2 second for this single file, not for the whole project. The bit you quoted about removing includes was about the changes throughout the project.

</comment></comment><comment><USER47> There are some valid points on optimization here, but its always incredibly tricky to draw conclusions from a series of microbenchmarks.

</comment><comment><USER48> I don't see why anyone considers compilation time.

Your code will be compiled only once for your customers, yet run millions of times. Clearly runtime is millions of times more important than compilation time.

If compilation is taking too long, start compiling in the cloud.

</comment><comment><USER49> The headline is a click bait. Slightly better one would be "is idiomatic C++ fast"

</comment><comment><USER50> There isn't anything you can make the processor do in C that you cannot also make it do in C++ (if I am not mistaken!) Given that, C will only appear faster if you are not using C++ to its full potential. This might be because you don't know what you're doing or because the C++ language makes it unreasonably awkward. Most articles I have read like this are the former, unfortunately.

<comment><USER51> No, C will be faster because you have more control, in the same way that Assembly will always be faster than C.

<comment><USER16> C++ allows you to write code that is equally expressive as C. It is no longer true that every valid pice of C is also valid C+++, but the deviations are purely minor syntactical differences. I know no C construct for which a C++ counterpart does not exist. Please enlighten me if you have an example.

<comment><USER52> [https://en.cppreference.com/w/c/language/restrict](https://en.cppreference.com/w/c/language/restrict)

<comment><USER16> Replace it with __restrict and you're fine.

<comment><USER52> not standard c++

</comment></comment></comment></comment></comment></comment><comment><USER53> I wonder if his MSVC debug performance wors would have been solved by linking against the release CRT

<comment> Const-me I don't think you can, it won't build.

There's a supported way to speed up debug builds by a huge factor, for the price of less runtime checks.

[https://docs.microsoft.com/en-us/cpp/standard- library/iterat...](https://docs.microsoft.com/en-us/cpp/standard- library/iterator-debug-level?view=vs-2017)

<comment><USER53> Sure it does, I use it every day!

<comment> Const-me You can't link debug builds with release CRT. Won't link. Here's an example of missing symbols: __imp__invalid_parameter __imp__CrtDbgReport __imp__CrtDbgReportW

You can workaround by undefining DEBUG, _DEBUG, defining NDEBUG, etc., to make headers think it's a release build, but then it won't be a debug build anymore.

<comment><USER54> If your goal is to be able to step it in the debugger and follow what is going on, then it is definitely still a debug build.

If you want sanitization instead of stepping through the debugger, use that.

The people who are best at debugging avoid debuggers entirely, and use logging statements inserted in release-built code, and little proofs. It is hard to persuade people who don't think that way, but it is the only route to mastery.

<comment> Const-me I'm very good at debugging and when I have choice I use all the tools I can get. Not only I use debuggers, I extend them to do what I need for particular project, e.g. autoexp.dat/natvis/custom plugins when coding C++ in VC.

At the same time I also use logging a lot. These two things aren't always mutually exclusive.

Only sometimes they are. Some platforms don't have good debuggers. For other stuff it's the opposite, e.g. you can't log from code running on GPU (very hard to accomplish, borderline impossible) but there're specialized GPU debuggers.

I don't think people who use just logging, or just debuggers, are the best.

</comment></comment></comment></comment></comment></comment><comment><USER55> They are bloating C++ so much that it'll end up as slow as Python or any other high level language with none of the advantages of being a high level language.

Just the fact that we're asking ourselves "is C++ fast" should be frightening, for a language that has always rivalled C closely.

</comment><comment><USER56> yes</comment>


Across furtive videocons, junior VCs wait for the layoffs to begin - <AUTHOR> https://techcrunch.com/2020/03/18/across-furtive-videocons-junior-vcs-wait-for-the-layoffs-to-begin/ <comment><USER2> Pre-2008 financial crisis we didn't have the iPhone, no app stores, cloud hadn't truly taken off, and my graduating class of 4000 students had only 30 computer science majors. The 2010's were such a golden age for software developers in terms of salaries, employers bending over backwards, never ending funding, etc. etc. Many young tech workers are "children of the summer" and never known any dark days. Although this will be painful, it will also teach people a lot of lessons. A lot of weaker talent, sketchy business models, and fast money investors are going to wash out and the industry will emerge stronger.

<comment><USER3> > A lot of weaker talent, sketchy business models, and fast money investors > are going to wash out and the industry will emerge stronger.

Sounds like 2002. (In other words, been there, done that, got through it by working for "boring" companies)

<comment><USER4> It will be an unpleasant surprise on a lot of levels, ranging from the big - job opportunities, salaries - to the small. One of the things that happened both in 2002 and 2008/2009 was a sudden swing back to demands for suits, ties, and so on. There are a _lot_ of people who resent their staff flexiworking, wearing jeans, and generally acting like it's not 1962 any more.

<comment><USER5> >> There are a lot of people who resent their staff flexiworking

But that demographic is more at risk of dying from covid-19. The irony is that they are more protected by everyone working from home and that their younger colleagues will have more career opportunities if everyone comes into the office and spreads it.

<comment><USER4> People hating non-customer facing staff dressing like it's the weekend isn't rational; what makes you think irrational behaviours are isolated?

</comment></comment></comment></comment></comment><comment><USER6> This article reads like a bad gossip rag but instead of being about failing celeb marriages it's less interesting.

<comment><USER7> I miss Valleywag.

</comment></comment><comment><USER8> > Third, and this is rarer, some funds have made loans or real estate > investments using their management fee income as a way to boost the salary > returns of the general partners.

They what?!?

<comment><USER9> The management fee is just cash for the GPs and they can do with it what they want. In theory it's to run their business until investments cash out but notice how they always force the company they are investing to pay legal fees (i.e. take it immediately out of the LP's new investment)? They just treat it as their income.

<comment><USER10> The reason for this, that makes sense to me, is that there's typically one lead investor negotiating terms and often many other following investors. If the lead investor was the only one who was paying, then only the lead would take the dilution.

If this is spread out among all investors, it's conceptually more fair since the lead is negotiating for all of the investors effectively. At that point, if you have a 50k legal bill, you can either say it's a 1M$ round where each investor has to chip in their share, or you say it's a 1.05M$ round and the company has to pay.

<comment><USER9> Oh come on they can manage their own side of the fees. It's merely petty greed.

Also a $25MM round likely costs about $40K (combined) to do. So does a $5MM round. Shameful. I always cap the total fees at $30K which pisses off the lawyers but the VCs shrug.

</comment></comment></comment></comment><comment><USER11> Serious question, is this normal for TC or journalism in general?

> We are actively reporting this; feel free to reach out to me or other > staffers at TechCrunch if you have tips here.

Seems wildly unprofessional/sloppy to me.

<comment><USER12> How else are reporters supposed to find this stuff out?

<comment><USER13> A lot of articles these days source their material from various social media posts. There are some articles where the vast majority of the content comes from embedded Twitter posts.</comment></comment></comment>


"We're rewiring the Internet for freedom." - <AUTHOR> https://medium.com/@dgrobinson/were-rewiring-the-internet-for-freedom-f1ec9a43785d <comment><USER2> Refraction networking depends on an incentive scheme where the costs of cutting off all outside TLS access is too great a burden to bear for censoring networks or countries.

However, some countries are actively working to build enough self-sufficiency and content that a smaller and smaller minority of their users will ever "need" to reach beyond state-observed wall gardens.

The effectiveness of technologies like refraction networking can be amplified if paired with compelling content only accessible outside tightly controlled cyber-borders. Unfortunately, this is much harder than it sounds.

I'm glad to hear that "larger, longer-term trial deployments" of TapDance are in the works.

</comment><comment><AUTHOR> Until this month, when I saw this I would have first thought of China and Russia and those others. But now I'm starting to think about North America.

(The article begins) For the last two years, a team of engineers and researchers has quietly been working to develop new technology for Internet freedom.

Today, we are pleased to share results from the first large-scale field trial of refraction networking, a fundamentally new way to help people around the world learn and communicate online in the face of censorship. We served more than 50,000 users, for more than a week, by deploying refraction networking at partner ISPs.</comment>


Injecting add-ons and plugins into non-AMD libraries, with RequireJS - <AUTHOR> http://lostechies.com/derickbailey/2013/08/09/inject-add-ons-and-plugins-with-requirejs-non-amd-libraries-and-shims/

<comment><USER2> What the hell is AMD?

<comment><AUTHOR> [http://lmgtfy.com?q=JavaScript+AMD](http://lmgtfy.com?q=JavaScript+AMD)

Asynchronous Module Definition - a method of defining JavaScript modules, to be loaded when needed.</comment></comment>


Ask HN: How to check if your website works for all ISPs and locations?  - <AUTHOR>

I found a few times that there are some places where  internauts could not access our website. Some people suggested that it may be a DNS issue and others said it may be an issue with a particular internet service provider.
Is there a way to check if your website works in different locations (cities) or for all ISPs?
Thank you. <comment><USER2> I don't know if there is a tool to check every ISP, but this one checks about a dozen different cities:

<http://www.alertra.com/spotcheck.php>

<comment><AUTHOR> Thank you Byoung2.</comment></comment>


DJI just released its most powerful drone yet – The M600 - <AUTHOR> http://www.theverge.com/2016/4/17/11448434/dji-drone-m600-ronin-mx-stabilizer-price-release <comment><USER2> Does anyone know what chip this runs on? i.MX, other Freescale, Movidius?</comment>


Leadership Lab: The Craft of Writing Effectively - <AUTHOR> https://www.youtube.com/watch?v=vtIzMaLkCaM <comment><USER2> The video is about academic writing. I wonder how much can be applied to technical writing, like API documents.

</comment><comment><AUTHOR> src: [https://news.ycombinator.com/item?id=20418569](https://news.ycombinator.com/item?id=20418569)</comment>


Tell HN: Social media strike proposed for July 4-5 by Wikipedia co-founder - <AUTHOR> "Humanity has been contemptuously used by vast digital empires," says my new "Declaration of Digital Independence" (https://larrysanger.org/2019/06/declaration-of-digital-indep...), which you can sign. So I'm calling a massive social media strike (https://larrysanger.org/2019/06/social-media-strike/) for July 4-5 to raise awareness of the possibility of decentralizing social media, which in my experience is wildly popular whenever proposed.
Read the FAQ (https://larrysanger.org/2019/06/faq-about-the-project-to-dec...) and use some collected resources (https://larrysanger.org/2019/06/socialmediastrike-resources/) to learn and spread the word far and wide. Look for lots of news about this soon. And get ready! Maybe we can make a long-held geek dream finally come true. <comment> yoz-y I feel that even if everybody who cared went on strike, the difference in daily visitors would probably be in the error margin.

I think most people who really care have already left the centralised social media or scaled it down to the point that a non-strike day is an exception.

I do not disagree with the message, but I seriously doubt that this will have any effect.

<comment><USER3> I think there could be some useful purposes for everyone outside of social media: unifying those people, helping them find each other, mobilizing them to take community measures. I think it's safe to say that at this point we're not looking for another social network to replace Facebook or another search engine to replace Google - we need to start finding ways to work decentralized but still come together -this is going to come out sounding silly, but - <USER2> the Internet's behalf.

This could be good. Stuff like #deletefacebook was interesting, but it didn't help people find alternatives. I like that a 'strike' implies group action together toward some kind of progress.

<comment><USER4> One big issue is that there's nothing decentralised that currently exists that can rival the quality & user experience of mainstream social networks, and decentralisation comes with its own problems (I personally think the problem with mainstream social media is its ad-based business model and not centralisation).

Mastodon (which seems to be the biggest alternative being proposed) is still a joke, even the name and branding sounds awful IMO. And who in their right mind thought calling a post a "toot" ([https://en.m.wiktionary.org/wiki/toot](https://en.m.wiktionary.org/wiki/toot)) was a good idea.

Besides the branding, decentralisation comes with its own issues like the lack of network-wide content moderation and agreement on what content is acceptable. There are solutions (more like hacks) around this where instance admins can choose not to federate with instances they don't like the policies of, but it then causes problems for end-users where they can't communicate with their peers on those banned instances despite _all_ of them being _on Mastodon_. Good luck explaining to a non-technical person why they can't talk to/see the posts of certain people despite them all being on Mastodon, and the solution is to spend time choosing an instance with policies you agree with _and_ making sure your friends are on it or on a similar instance that's not banned by yours, and then hoping the instances stay online without any kind of funding (there's also no knowledge of whether they would scale to the size of mainstream social networks).

The solution IMO is not Mastodon or any of these fringe social networks. The main problem is the lack of an ethical business model in mainstream social media. The solution would be to vote with your wallets and fund a better Facebook alternative - it could even show the current social networks that there's profit to be made treating their users with respect and make the situation better for everyone else too.

<comment><USER5> I agree with you all the way until the middle of your third paragraph.

You're not gonna suggest Mastodon to someone, you're gonna point to a specific community (probably the same one you're a member of). Only one set of rules you need to worry about. Federation? You don't have to pay attention to it at all. It's a nice feature to have for sure, but it only becomes relevant once you don't have people to follow inside of your own instance. By recommending an instance, you're recommending a community, not the software behind that community.

There have been plenty of attempts of taking Facebook's crown (both VC-funded and user-funded), and they've all failed spectacularly. The reason for that is simple: people don't want a global network. Facebook was the first and last one to succeed. Nobody wants to be on the same network as their parents, so they indeed decentralize: they decentralize in group chats, Facebook groups, Discord servers, Slack servers, Twitter communities, Discourse instances, Mastodon instances, forums like HN, subreddits etc. Facebook and Google+ failed immediately simply by having a real-name policy. That's okay if you want to communicate with people around you, but terrible if you want to truly express yourself to a bunch of strangers. The younger you are, the bigger the odds that you belong in the latter. Nothing wrong with communicating with people around you, but that's not the group that drives your numbers up drastically.

Mastodon surely can't be the new Facebook simply because that's not what it aims to become. It aims to become the software of choice for the communities. The easier you make it to jump on board (and the less personal data you need to provide in order to do so), the bigger the odds that you'll be the home for a community.

<comment><USER4> I am not sure that being a global network is a problem.

Instagram is a global network and seems to be doing fine (although the quality of the content has now declined).

Personally, a global network is what I want. I already have the solutions you mention (group chats, Slack/Discord instances, forums, etc) for specific communities. What's missing is something like Facebook or Instagram where everyone is on it and I can just "add" them and get updates about them every so often.

If anything, the per-community problem is already solved thanks to Discourse, Slack/Discord, Reddit, group chats, etc. But a global network is what's missing.

<comment><USER5> You don't jump from nothing to a global network. You host tangentially-related communities in the middle. The more of them you host, the bigger your overall numbers are.

Instagram succeeded for that same reason: profiles set to private, no real name policy, people can't look you up in a search bar. It was easier to group up in small communities. The less that's the case, the crappier the content. Instagram was ruined the moment Facebook accounts were attached to Instagram accounts — it's just dying slowly, the same way Facebook is dying slowly.

The next "global" platform is going to be Discord. It started as a place to host gaming communities. People were subscribed to a few gaming communities, so it already made sense for them to join more communities that are available on the platform. Right now, it's no longer the place exclusively for gaming. Every subreddit has one, every Patreon supporter is a member of some secret one. It'll outlast both Instagram and Facebook for one reason only: no personal info what so ever. People can't find out anything about you by clicking on your username: not your real name, not your contact info, not even a list of other communities you are a part of. You join a community by being invited to one.

<comment><USER6> To me, Discord is just a partial implementation of Slack. What does it have that Slack doesn't?

<comment><USER5> Feature-wise, pretty much nothing, it's just targeting a different set of users. Slack started as a solution for companies and pretty much stayed there, Discord started as a solution for gamers and expanded from there.

Slack is Discord for adults, but adults are never the ones who make or break social media. It's younger people who tend to be more invested in the platform they use. It's not a rational choice (nor was Facebook for my generation), but it got kickstarted out of necessity (as a substitute to the limited chat options within games) and right now, it's the convenience that drives it further. Why switch over when, unlike Facebook or Slack, everyone you know is already using Discord?

<comment><USER7> So basically what we need is Discord/Slack, but as an open protocol.

The entire concept of having a gigantic centralized social network on top of a gigantic decentralized communication platform (the internet) seems like a bit of an anti-pattern to me. Email, Usenet, and IRC seem to have never gotten the successors they deserved. Centralized, closed, and operates by a for-profit organization does not count.

As a side note I'm surprised there isn't more mention of message boards here. Their peak seems to have been 2001-2010 and then their importance faded. One can discuss the shortcomings of phpBB and vBulletin at length, but their basic function seemed to have worked extremely well.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> What is social media!

I'm sure many class this very forum as their social outlet media wise. For some, wiki itself has become a social media outlet.

But strikes upon social media which will involve less than 1% of users will gain no traction, hardly a blip.

Wouldn't it of been better than instead of a strike that they had a statement with a hashtag that all those striking people posted that day and that was all. That would get traction. The fawning lazy news media who slurp up hashtags as a metric and source for news would pick up upon it. It would grow like a snowball down a snowy hill. The strike approach, given how few in relation to the social media user-base that this will appeal. Would be like a snowball rolling down a hot summer mountain. Nobody will know, apart from those who was there at the start, no traction, no momentum and more so. No sign that it ever happened upon those social media platforms in a noticeable way at all.

Hence, I totally appreciate the sentiment, just mindful that the message will be lost with this approach, as it has been lost previously by such actions upon the likes of facebook, twitter and ....that's it as far as the World media counts for its news.

FWIW, I don't do twitter anymore, never done facebook and Google+ striked all its users. Hence for me and many others, creating a social media account just to take part by not posting, would play against the intent and into social media hands. But I certainly wish them luck. Though equally, I would not be supprised if a decentralised social media platform suddenly sprung up from wiki origins. But then, the inner cynic in me is very strong in today's digital world.

EDIT ADD Had a quick look for `related` interests and see that he is CIO of Everipedia, which is decentralizing encyclopedia writing from an article in March: [https://www.wired.com/story/larry-sanger-declaration-of- digi...](https://www.wired.com/story/larry-sanger-declaration-of-digital- independence/) But I'd not cry foul even if they did produce their own decentralised social media platform; Kinda hope they do actually. Competition does have its upsides.

<comment><USER9> > Wouldn't it [have] been better than instead of a strike that they had a > statement with a hashtag that all those striking people posted that day and > that was all.

This is, in essence, how the action will go down.

</comment></comment><comment><USER10> Interesting how he chose the word "strike", commonly used to refer to workers, as if to imply users are working for Facebook or Twitter.

Every time a user submits something to them, it is arguable she is doing work for those companies. The companies do not produce content, yet they depend on it in order to draw traffic. What they provide is a centralised distribution channel. They rely on users to do the work of producing/submitting content.

<comment><USER11> That's one of the amazing things about social media. It has the largest unpaid workforce in history - bigger even than the slave trade. Companies aren't getting billions of dollars in stock valuations because of their 50 or so really smart employees: they're getting billions because of their user's data, and their users willingness to continuously cultivate and update that data.

That's what makes Facebook data so valuable: it's up to date and it's very detailed, all thanks to the billions of people who contribute to it.

</comment></comment><comment><USER12> Is HN a form of social media?

<comment><USER13> Yes. HN is a form of social media -- it's a social media exemplar -- the exception that proves it's possible to have an open system for high-quality public discourse, even if such a system is hard to establish and even harder to maintain.

Paul Graham has said, "he hopes to avoid the Eternal September that results in the general decline of intelligent discourse within a community" [1]. Hacker News launched 12 years ago in 2007, it's a testament to Graham, the moderators, the algorithms behind it, and the community members that HN has been able to keep its system for high quality intelligent discourse from devolving over time.

If HN doesn't resemble most other social media systems -- so much so that people have to ask -- this is why. Establishing such a system is hard to do, and even harder to maintain. So far HN has been an exception, not the rule.

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

<comment> F-0X Strong disagree. HN is not a social media. Because we do not use it for social purposes. This site has no concept of user relationships, and it does not encourage you to use real/identifying information about yourself to use it. It is centred on topics and discussion - sites like this, Reddit, and other forums can develop social networks, but this is a byproduct and not the intent, which I think is the single most important factor. HN's purpose is not to keep you in touch with your friends or community, thus it is not a social media.

<comment><USER13> Where are you getting your definition for social media?

Wikipedia defines social media as [1]:

      Social media are interactive computer-mediated technologies
      that facilitate the creation and sharing of information,
      ideas, career interests and other forms of expression via
      virtual communities and networks.

I don't know if there's an "official" agreed upon definition somewhere, but I do know this: The definition of what social media is and what it will become is not yet known -- it will continue to evolve as the Internet evolves and as our understanding evolves closer to true -- but at its core, I would say social media is technology that enables bidirectional public communication among people whereas mass media [2] enables unidirectional public communication -- one to many broadcasts to people -- with no direct feedback loop.

The Internet provided the foundational infrastructure and was the prerequisite layer that made social media interaction possible. What we do with social media -- how we use it, build upon it, and optimize for it -- is yet to be determined.

For example, who would have envisioned the mobile phone as we use it today when the telephone was invented. Phones aren't just used for phone calls anymore. The iPhone changed that, but the iPhone couldn't exist in its present form until the foundation for the Internet infrastructure was laid. Today our vision of the Internet is not what it was when it was invented. It continues to evolve, as does its uses and definition. Social media will be like that too -- it's part of the next layer to build upon, and we're still learning what that is -- its definition is still being formed, and its optimal form is still to come.

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

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

<comment><USER14> By this definition, the internet itself is a social media?

<comment><USER15> Do you mean the World Wide Web? The Internet also consists of devices like routers.

<comment><USER14> More than WWW. There is a lot of content on the on the internet not served by hypertext markup in a web browser.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> I feel like most folks haven't read either link. The strike calls for striking against traditional, centralized social media, _not_ other social media (such as the Fediverse).

<comment><USER17> Where's the difference? Nobody (tm) is using the latter anyway.

The best example of something decentralised, that is/was actually used, in the linked FAQ seems to be RSS/Atom. In the age of medium, aggregators like iTunes/Spotify and whatnot, that doesn't seem like something that's on a rising slope either. Despite the Twitter conversation in there I'd be hard pressed to see any incentive for this type of corporation to embrace openness when their current alternative is more lucrative.

Even if this strike gains momentum in the tech-savvy niche it's unlikely to even be noticed by regular users or even the non-tech influencers those people follow. It lacks an immediately actionable goal and common incentive. Another open standard, another decentralised social $X, that's not something that drives a critical mass away from any of these platforms. The platforms also have enough money to just buy up new players and continue their current paradigm.

I like the rules put forward by that decentralisation manifesto, I'm just not sure the general public cares or can care. A general user today likely didn't experience the internet as a set of communities. The experience is, imho, one of commercial interests that drives the masses, which drowns any visible incentive a regular user might gain from the technical approach this movement suggests.

</comment></comment><comment><USER18> This is laudable as a way to draw attention to the decentralized media. This is not the typical "social media is bad for you get away". Of course i very much doubt it will work. The best way to make decentralized systems work, is to kick a lot of smart people outside corporate media. Smart people will improve the decentralized platforms and influence others to use them. It will be sort of like what happened with the birth of Bitcoin.

I think we should be asking for swift regulation and more censorship on corporate media. It is the kind of thing that really puts off smart people, and will push those early adopters to use the decentranet.

Is there a reddit-like decentralized alternative?

</comment><comment><USER19> It never held any power over me. I was always skeptical of it from the start. That's why it is hard to imagine something like a social media strike. For many of us it has no power over our minds.

<comment><USER18> Doesn't HN count as social media?

<comment><USER20> It's a forum.

<comment><USER18> with karma. and a lot of groupthink. surely it doesnt compare to the dross u see on facebook, but HN , reddit and twitter are on a similar level of socialmedia-ness to me

</comment></comment></comment></comment><comment><USER21> The social media strike, as organized on Hacker News, Twitter, Facebook, etc. I honestly don't think people have much interest in striking these days if they can't post it on social media, but maybe this will have legs. It's a little telling though that this really can't be organized any other way besides social media these days, and I suspect there will be a lot of people throughout those 2 days checking in on social media to see how it's going.

<comment><USER3> This is already happening to some degree - like I wonder what percentage of Twitter messaging is now complaining about Twitter. Yes, this could just generate some small increase in traffic for the day - but that's an acceptable short-term concession if it means the centralized social networks could go away in the long-term.

</comment></comment><comment><USER22> This strike does not seem very well thought through.

In an action of this kind, you want to demonstrate organization, capacity, and that you have real numbers behind you. Having people silently not use the internet on a major U.S. holiday achieves none of that.

If the goal is to get people to share the hashtag, then that should be the focus of the action.

A failed strike is much worse than not striking at all. But frankly, this seems more like a vanity effort than a serious attempt at change.

<comment><USER23> Sounds like competiting versions of slacktivism to me.

<comment><USER22> Slacktivism is a word people even lazier than the slacktivists use to describe small attempts at change. As a lazy guy myself, I'd lift my glass to you if it wasn't all the way over there.

<comment><USER23> Sorry the idea about being another person acting outraged on Twitter about something makes me cringe.

I'd rather spend my time building decentralized alternatives to those products. Which is what I'm doing in my spare time.

We, the developers and startup peoples, are the ones who can do something real about it.

</comment></comment></comment></comment><comment><USER24> Strike accepted. I deleted my social media accounts in 2016.

<comment><USER25> Including WhatsApp?

<comment><USER24> Yarp.

</comment></comment></comment><comment><USER26> I love this. Ironically, a great way to spread the word is via social media.

<comment><USER27> That's the point. Advertise the hazards of smoking in the places where people smoke.

<comment><USER28> By smoking it.

<comment><USER27> Otherwise you are subjective to survivorship bias: if people were silently quitting social media the ones who remain wouldn't be aware there's anything wrong with those social media.

<comment><USER28> I agree but the ones who remain don't care.

</comment></comment></comment></comment></comment><comment><USER29> This reminds me of the campaign to get people to give up shopping on the day after thanksgiving. Not gonna happen.

<comment><USER30> Because of game theory and money is involved and enough people have been coopted.

<comment><USER31> It seems to me all of that applies (in different ways, I would concede) to social media as well.

</comment></comment></comment><comment><USER32> I fully support it. Hopefully it will not become a social media event and lead to more consumption.

</comment><comment><USER33> [https://larrysanger.org/2019/06/declaration-of-digital- indep...](https://larrysanger.org/2019/06/declaration-of-digital-independence)

</comment><comment><USER34> I'll see your Social Media strike and raise you an Internet strike.

</comment><comment><USER35> Why not do a no Internet day? Will be easier to communicate that. Give people a taste of normal life. They will automatically quit on social media. Like every Sunday no Internet day.

<comment><USER36> That actually would have been a great idea, in hindsight. I have seen far to many people who suffer from intense anxiety if they have no internet or device access, even if it's just for a few hours. It's like a form of addiction. A day away from the Internet each week would condition people to be able to survive without it.

<comment><USER37> I just spent seven days with only a limited data plan. I felt like time slowed down to a crawl and I was able to do much more than on a regular day with the internet.

<comment><USER38> I've cut down to a 2GB plan for this reason. Initially I was just switching networks but I stuck with it because of how much better I felt. Being more data conscious made me realise how much time I was wasting. I used to consume 2-3 times more data and now I don't even hit my cap anymore.

</comment></comment></comment></comment><comment><USER39> This will have zero effect. If you take any kind of public transportation, even glancing across peoples' screens as you sit down (and ~everyone'll be looking at a screen), 95% will be on fb or instagram.

I wish it were different, but by now these apps, and all social media, are extremely good at feeding their users' addictions.

</comment><comment><USER40> Social media is hard to define so participants are more likely to cheat. Should be an internet strike which is "as simple as" going camping without your phones/computers for 2 days, which honestly would be great practice for a newly decentralized world.

</comment><comment><USER41> I created Timelines - a social network that allows people to own their data.

Timelines stores your data in a specific folder on your Google Drive which is sandboxed from all your other data on Google drive.

Check it out!

[https://www.timelines.co](https://www.timelines.co)

<comment><USER42> You own your data by uploading it directly to Google servers?

<comment><USER41> It is in a sand boxed environment on Google drive. This is more of a proof of concept. I could potentially develop this further by:

1)Giving the user an option of where they would want to store the data e.g. S3, box, dropbox etc. 2)Encrypt the data before sending it to google servers.

</comment></comment></comment><comment><USER43> Eh? There already are decentralized social networks available to use. This doesn't add up.

And as others have pointed out, what networks are eligible for this forced decentralization process? Should some networks be allowed to be centralized? Which ones, if so?

Let's not be too hasty.

<comment><USER5> > Eh? There already are decentralized social networks available to use. This > doesn't add up.

I agree. They've always existed in one form or the other, it's just that nobody gave a fuck. Mastodon kinda changed that by attracting about half a million monthly users. A tiny, tiny number for a social network, but a gigantic number for a _decentralized_ social network.

This website is good for the overview of the "fediverse" (collection of social media services talking together via open protocols): [https://the- federation.info/](https://the-federation.info/)

Hell, name a social network, and I can name at least one attempt at decentralizing it: Twitter (Mastodon, Pleroma), Instagram (PixelFed, Anfora), reddit (Lemmy), YouTube (PeerTube), SoundCloud (Funkwhale), Medium (Write.as) etc. An obvious one that I haven't listed is Facebook, but that thing has so many features that a viable alternative heavily depends on which Facebook features you actually use.

I see nothing wrong with this strike, but I don't see how spreading awareness helps if you don't point to the most obvious solution available.

</comment></comment><comment><USER44> Perhaps an idea to make a substitute profile pic that people can use to show they are in.

By the way, July 4-5 (before the weekend) seems unfortunate timing because many people will want to check for events.

</comment><comment><USER26> I'm running ads on Instagram right now. Might be fun to pause my campaign for 2 days in addition to not using social media personally

</comment><comment><USER45> What about decentralizing the Wikipedia empire?

<comment><USER46> Sanger hasn't been involved with Wikipedia since 2002. Calling him the "Wikipedia cofounder" is, at this point, a little misleading.

</comment></comment><comment><USER47> The only way this is going to move forward is through open standards. Something something webfinger, mail 2.0 and trusted recipients.

</comment><comment><USER48> What would you achieve with a 2 days strike anyway? The idea is so ridiculous in itself it's not even worth writing about.

<comment><USER18> The goal is to promote decentralized media, not to get people off of them.

</comment></comment><comment><USER49> social media strike on July 4th?

I'm betting Facebook has a huge spike. The people I know on Facebook:

\- Aren't going to know about the strike

\- Won't be able to resist posting gratuitous food-fest pics

</comment><comment><USER50> This is an awesome idea

</comment><comment><USER51> I'd be willing to close all of my accounts instead

</comment><comment><USER52> For decentralized social media to happen, there needs to be sufficient motive to leave centralized platforms collectively within a cohesive _network_ of individuals, so that if a tipping point is met to overcome activation costs, most of the network will move over so the new decentralized platform has similar value to the old centralized platform that the network was previously on. A few incentivized individuals in a wider network of apathetics won't work -- it needs to be a cohesive network all switching together in order for the value to remain competitive with the old platform, due to Metcalfe's law. And since we're talking about decentralization, the network transitioning will ideally be incentivized to choose a decentralized network to migrate to, vs another centralized one (even though the usability and quality of experience on the decentralized one is likely to be inferior.) This combination of factors is what makes it so difficult to bootstrap these networks.

Here's the thing: there is such an opportunity now, if anyone is willing to take it. Conservatives in the US are outraged against perceived censorship and de-platforming by centralized social media platforms. Regardless of the validity, there's a deep seated hatred of these platforms forming and an incredible sense of urgency to move elsewhere. Since the motivation for leaving is overcoming centralized control, this audience is particularly attracted to accepting decentralized platforms. Given that approximately half of the US aligns partially with the views of some of these voices, this is a large potential network. The catch is that we are also living in an era where if someone develops and delivers such a solution for this market, they're going to be under vicious attack and be labelled as sympathizers to the extremist, minority voices of that audience. Most likely their careers will be destroyed by choosing to build for such an audience, regardless of how much the extremist voices are actually present on the decentralized platform.

I predict that if we are ever going to see a decentralized social media platform emerge for any of these services, it will begin with a critical mass of marginalized voices who have been censored and de-platformed, and their audience, moving to it. Instead of beginning as a "toy", it will begin as a "place for undesirables." Today that could mean conservative voices in the US, tomorrow it could mean something else. If the network is able to garner sufficient growth, over time, as it always goes, the nature of the "average user" will be diluted away so the network is no longer perceived as a community of like-minded individuals but instead as a general, global platform. (Similar how most mainstream global social network sites today began in a similar way: Twitter was for techies, Facebook was for college kids, etc.)

Look out for these leading edge behaviors, and don't just dismiss them if the early adopter audience has the perception of being unsavory to you. It seems somewhat inductive that, given the current existence of the global centralized platforms, any long-run successful decentralized platform likely could not start any other way than with groups of people who both want to leave collectively, and who will get no benefit from staying (in other words, the people on centralized platforms will all want them to leave too.)

</comment><comment><USER53> This is great. Celebs need to be on boarded more than Geeks. Getting an Obama or Kim Kardashian to show support would have major global impact. A cascade would start.

<comment><USER54> Kim Kardashian's business thrives on "media" and social media. Why would she be on it?

<comment><USER53> Cause maybe she is tired of the routine. Has made enough money and is watching the effect its having on kids. There are thousands of reasons, because there are so many different unintended effects social media has.

<comment><USER55> > Cause maybe she is tired of the routine. Has made enough money and is > watching the effect its having on kids.

Yeah, maybe Zuckerberg is tired of the routine as well and both of them don't want more money and more power.

But probably not.

</comment></comment></comment></comment><comment><USER56> Is not email and SMS already a decentralized form of social media?

I doubt the existence of decentralized social media would mean the end of centralized social media. How do you build a video sharing platform that's anywhere near as full-featured as Youtube without centralization?

</comment><comment><USER57> Here is a suggestion for the strike as well...launch a decentralized anti- libra coin.

<comment><USER58> It's called DAI by makerDAO

</comment></comment><comment><USER59> There are already options for decentralized social media. So clearly the majority of people is not in favor of using them, or they would simply do so (without a strike).

Therefore, this is about a minority trying to force the majority of people to adapt to their preferences.

I can not sympathize with such a cause, even though I personally would prefer decentralized solutions.

It reminds me of the town that voted to ban Amazon - when they could just have shopped locally to begin with. Weird, really.

<comment><USER60> I think you're oversimplifying people.

Lots of people want to lose weight while also loving the taste of delicious food that makes them gain weight. Same with smoking, drinking, recycling, etc.

It really comes down to the cost on people to do something.

If your building didn't provide a recycling bin, you probably wouldn't take the trouble to take all your recycling to a recycling facility.

If none of your friends used social media, chances are you wouldn't either.

<comment><USER59> Decentralized Social Media already exists, like the recycling bins at our apartment complex.

The problem is the network effect. But then who are the protestors protesting to? They should protest to their friends to switch over to decentralized SM. Maybe they are just not important enough to have their friends follow them to better services?

Instead of going on a strike, why not evangelize those solutions to your friends?

As for losing weight: it is true that sometimes people like to have their hands forced. It is called an Ulysses contract, from Ulysses tying himself to the mast so that he couldn't jump into the sea to follow the sirens.

Calling for the government in the case of Social Media seems way overblown, though. There are no health issues involved like with unhealthy food. And for unhealthy food, people make those choices by buying smaller packages or using different shops. Arguably not really a case for government intervention, either.</comment></comment></comment>


Firefox OS - Mobile World Congress Press Conference Live Stream - <AUTHOR> https://air.mozilla.org/mwc-press-conf/

<comment><USER2> There are a lot more partners now: América Móvil, China Unicom, Deutsche Telekom, Etisalat, Hutchison Three Group, KDDI, KT, MegaFon, Qtel, SingTel, Smart, Sprint, Telecom Italia Group, Telefónica, Telenor, TMN and VimpelCom!

</comment><comment><USER3> Hopefully they announce when the Geeksphone dev phones go on sale!</comment>


Ask HN: Visualize / categorize exception logs - <AUTHOR> Problem: my java service produces 30k exceptions / hour in error logs. These logs are piped to Elasticsearch / Kibana but it is still difficult to analyze and summarize all the different exception types and causes.
Are there any products for categorizing exceptions?  I'm envisioning a product I could stream logs to and it would analyze the stack traces from the log, root exception class, error messages, etc. And produce a high level summary or visualization.
I'm searching for an open source solution that can be self-hosted. <comment><USER2> [https://getsentry.com/](https://getsentry.com/) might help. It's open source and can be self-hosted.

<comment><AUTHOR> Thanks, will look into this.</comment></comment>


Google Continues Slump After Ad Revenue Growth Slows - <AUTHOR> https://www.bloomberg.com/news/articles/2019-04-29/alphabet-revenue-misses-analysts-estimates-shares-fall <comment><USER2> Quarterly reports are used for estimating _second order_ derivatives aka growth of growth, which are very noisy. So friends don't let friends use quarterly reports without smoothing :).

That aside, one thing I have never understood is why Google shutdown their Product Search and then re-incarnated as some half-assed effort. When Google's product search was alive and well, I often used that for comparison shopping, finding related products etc. I'd hopped one day they would add integrated payment, inventory and offer a viable platform for lot of retailers who have no real IT departments to compete with Amazon. I also thought this was perhaps much higher valued search (intent to buy!!). Instead they shut down the whole thing. Now Amazon is the only well known comprehensive place for product search. It looks to me Google handed over one of the most lucrative search segment to Amazon on a silver platter and now we are seeing the result of that decision.

<comment><USER3> Google shut down their product search because of antitrust issues. It took a while before they realized that they were about to get into real trouble. Hence the "half-assed" replacement.

<comment><USER4> Really? In the US? Do you have any good article on that?

<comment><USER5> Not in the US. In the EU. [https://en.wikipedia.org/wiki/European_Union_vs._Google#Goog...](https://en.wikipedia.org/wiki/European_Union_vs._Google#Google_Shopping_charges)

</comment></comment></comment></comment><comment><USER6> Amazon's and Facebook's ad revenue have gone up significantly in the past quarter, so this is not a story about the decline of the online ad business. It is about Google not competing in that business as well as it used to.

<comment><USER7> Amazon makes ~10B illion/year total in ad rev. Google makes ~130 Billion/year on ads.

15% growth on 130 Billion is 19.5 Billion.

Aka Google's yearly growth is larger than all of Amazon's Ad rev.

<comment><AUTHOR> Amazon doesn't have to profit on ads. Amazon can profit on actual product sales.

Google lacks that luxury.

<comment><USER8> actually, Amazon has not profited from sales of physical products.

<comment><USER9> I still have Prime but more and more I find myself buying from other online sources. Either because the selection is better or the price is better.

But that made me realize: Amazon's profit lies with AWS, the infrastructure that was originally for their ecommerce operation. But their ecommerce has forced many other retailers to streamline their operations... I wonder how many ended up using AWS as part of that effort.

</comment></comment></comment></comment></comment><comment><USER10> It blows my mind to see a company of Google's size still having such huge growth. Incredible really.

<comment><USER11> Globally internet access is still growing at an incredible rate. Hundred of millions of people are accessing the web for the first time every year. It'd be really weird if Google wasn't seeing a lot of that growth affect their revenue.

<comment><USER12> Most of the people who are accessing the web for the first time are from poor countries like India and Indonesia, so the effect on Google's revenue is much smaller than the number of people would suggest. Other drivers of Google's growth are just as important: (1) People who are already connected to the internet are getting richer and are spending more time online; (2) Google continues to improve its algorithm matching advertisers to users

<comment><USER13> _> Most of the people who are accessing the web for the first time are from poor countries like India and Indonesia_

That must be why paid clicks are up 39% but cost-per-click is down -19%.

</comment></comment></comment></comment><comment><USER14> "Continues slump" is a funny way of saying "up 20% since January".

</comment><comment><USER15> Google at it's value is still growing at 15% plus. I see some relation with Google growth and the world economy at large. This year the economy has been sluggish so are Google result.

<comment><USER16> Well - why did FB revenues grew faster then?

<comment><USER17> Because FB is killing it with its Marketplace and because for a lot of people FB has become synonymous with the Internet. I've become an outlier among my circle of acquaintances because I still google the name of a specific restaurant or coffee shop we intend to go to, while my friends go directly on FB and search for the restaurant's name in there (or even on IG to look at the restaurant's most recent stories to see what its holidays open hours are).

<comment><USER16> Marketplace doesn't make money for FB yet.

Also, in US at least, people go directly to search for restaurants vs. Facebook. Even Google is more popular for restaurant search than FB.

<comment><USER17> Hence why the google spokesperson or whatever her official position is mentioned something about their revenues being negatively affected by currency fluctuations, that is usually double-speak for "we did bad in foreign markets", which is to say that the US market is not the only market that counts.

Also, more time spent by people on FB Marketplace (no matter if they make money on it or not) means less time spent on Google's web properties. I would also look at the age demographics, Google the brand was seen as cool by me and my age-cohort back when we were in our early 20s, so that most of us still use it 15 years later as we approach our 40s. But I suspect that the Facebook and especially the Instagram brand mean a lot more to people under-30 compared to what Google means.

Google the company had seen this coming by late 2010 at least, that is that FB (or whatever social network will become dominant) will become synonymous with the Internet, much as Google was back then. That's why they resorted to desperately-sounding battle cries involving the number of arrows and the volume of wood material in order to convince their workers that they need to build a product that would not let FB become the only player in town. Unfortunately their Google+ execution was poor and here they are now, looking from the outside at a walled-garden.

<comment><USER18> I don't know if that double speak conclusion makes much sense. If they were doing bad in foreign markets and the share of revenue there was negligible, currency fluctuations would have no impact.

Actually, it's the inverse, where currency fluctuations only start to have an effect when you have significant foreign revenue

<comment><USER17> > Actually, it's the inverse, where currency fluctuations only start to have > an effect when you have significant foreign revenue

I do think Google has had a "have significant foreign revenue" for quite some time now, otherwise they wouldn't have reached almost a $1 trillion market valuation, it's a strange thing though that only now they've started putting the blame on "currency fluctuations", a move which is usually made by non-cool businesses like retailers or copper-miners (to name just a few), not by Amazon and Google (at least not until now).

Maybe I'm just a little bit too cynical when it comes to how business is done nowadays, but in the case of those retailers and copper-miners I just mentioned blaming "currency fluctuations" it's just a way of not acknowledging to their investors that "hey, we didn't do our homework in terms of execution oversees, but let's blame it all on FX, it's not like even the central bankers know how this currency thing even works". Like I said, maybe I'm just cynical, but I see Google playing the same defect-the-blame game, especially as the Google representative repeatedly refused to come with any other details about this (presumably by the next conference call she'll be surprised to hear that FX hedging is actually a thing that most of the time works quite well).

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> The bar chart in that article, where the y axis apparently starts at 14% and change - it's really hard to think of journalists as sources of truth when they use such blatantly deceptive graphics.

<comment><USER20> Reporters don't make the charts. It's the Wall Street Journal, not a blog. There's and entire art department for that sort of thing.

Also, charts like that are very common in financial publications. The target audience knows how to read them.

Edit: The original link was WSJ. It's since been changed to Bloomberg, presumably because of the Journal's paywall, but the point still stands.

<comment><USER21> So you are saying reporters don't have any say in what images appear as part of their reports?

Also, this arts department you talk of - is still part of the reputed publication? Or does arts mean they don't follow the basic paradigms?

<comment><USER20> _So you are saying reporters don 't have any say in what images appear as part of their reports?_

I'm not saying "any" say, but in my experience working for two major newspaper companies, it's not a given. There are other people who decide that. Again, it's not a blog.

<comment><USER22> So we should have lower standards for "major newspaper companies" as opposed to blogs?

</comment></comment></comment></comment></comment><comment><USER23> I am surprised that no one mentions about their Waymo / Verily revenue potentials. I genuinely believe those will have even bigger potentials than ad sales for Alphabet.

<comment><USER24> Elon Musk recently said LIDAR system was just too expensive and unnecessary as he's betting on using Tesla's video cameras for their own automated driving. I guess we'll have to wait and see.

<comment><USER25> That does seem likely, considering humans don't have LIDAR...

Also Cornell University may have just proved this out: [https://interestingengineering.com/cheap-cameras-might-be- ju...](https://interestingengineering.com/cheap-cameras-might-be-just-as-good- as-lidar-new-study-shows)

<comment><USER26> humans have a brain that's difficult to reproduce in an economical fashion so far; tech can't even saccade the current cameras to track moving objects with clarity

</comment></comment></comment></comment><comment><USER27> Maybe we've reached Peak Advertising

[http://peakads.org/images/Peak_Ads.pdf](http://peakads.org/images/Peak_Ads.pdf)

<comment><USER6> Amazon and Facebook both announced advertising growth rates greater than 30% this week, so no, we are not at peak advertising.

<comment><USER28> Google has everything above the fold as an ad for any lucrative queries. They may be at "peak ads" for search.

</comment></comment></comment><comment><USER29> At some point, we have to hit "peak online ads". There's a point beyond which ad vendors go down the road that killed Myspace.

<comment><AUTHOR> The shift from desktop to mobile also likely plays a role.

<comment><USER30> ... but not in the direction you'd think. Mobile has been great for the advertising duopoly that is Google/FB.

<comment><AUTHOR> Who gains more, relatively, though?

I ran across a recent FB stat whose overwhelming prevalance in mobile (90%+) was staggering. Google may gain on Android, but has to lose, again, relatively, on search.

</comment></comment></comment></comment><comment><USER24> So I guess Google has been holding off revenue potentials from Google Maps all these years for this moment.

</comment><comment><USER31> The shares "slumped" to the price from early March. Still up 15% this year.

<comment><USER16> YOu should look at how relatively google is doing vs. other tech companies or S&P vs. individually

<comment><USER32> I'm not sure where the parent is getting 15%; Google seems to be up ~23% YTD. Today's close was an all-time high, though that might get somewhat undone in the morning.

To your point, that seems to be a bit worse than tech (~26% YTD) but better than the S&P (17% YTD).

<comment><USER16> You need to also include the 7% after market drop which Google shares saw after declaring the results.

</comment></comment></comment></comment><comment><USER33> That makes sense to me, the ads seem to be more irritating and less appealing. I am unlikely to include them in anything I host because the value they add is negative

</comment><comment><USER34> Perhaps the new cookie regulations are specifically hurting Google's display network ads. Facebook and Amazon are perhaps less affected.

<comment><USER35> GDPR has largely been ignored on the webmaster-side, so I don't believe that's a large factor. Especially since you can pretty much do whatever you did before, you just need to mention it in your privacy notice.

<comment><USER34> Perhaps. Yet anytime a user clicks "no" to cookies it means Google won't be able to show targeted ads. But I'm purely speculating here.

<comment><USER35> I've yet to see actual cookie consent banners on a meaningful scale. So far, cookie notices have been rolled out, so you'll get a sentence or two and an OK button. There's usually no option to deny, and even those that do add it, don't do so in a way that matters: if you click No, cookies for analytics, ads etc have already been set.

Then there's this whole topic of third party cookies. Do you only need to inform & gather consent for cookies you set, or also those that services set that you embed in your site?

</comment></comment></comment></comment><comment><USER36> I wonder if Bloomberg, which also sells ad spots, is an unbiased source of information here.

<comment><USER37> It's because Bloomberg News pays reporters more if their stories move markets [0]

[0] [https://www.businessinsider.in/Bloomberg-News-Pays- Reporters...](https://www.businessinsider.in/Bloomberg-News-Pays-Reporters- More-If-Their-Stories-Move-Markets/articleshow/27230622.cms)

<comment><USER36> Interesting. So they're reporting on a competitor and are known to try to move markets with their stories. Is there oversight? Since I have no legal training I ask naively, do protections for journalism cover a situation where reporters aim to influence and persuade (like editorials) rather than provide "just the facts?"

<comment><USER38> Given that the newspapers at the founding of the republic were nakedly partisan and biased and the founders were well aware of it, yes, the first amendment protects journalists who produce biased bullshit.

You can only be prosecuted for slander and libel, and there is a high bar to prove it.

<comment><USER39> How about SuperMicro? Unproven accusations go unpunished?

</comment></comment></comment></comment></comment><comment><USER40> more intrusion coming soon to sell you more useless crap!

</comment><comment><USER41> Doesn't surprise me. The value of their ad products is deteriorating rapidly. For instance just today we found that one of our UAC campaigns, which supposedly is super smart and will automatically find the best channel for you decided to switch to a new channel with 14x higher CPC than the other channel that was working very well. That new CPC was 2x our target CPI. Why on earth they don't put in limits to prevent stupid bids like that is beyond me.

<comment><USER42> Agreed, even on boring old paid search the new search suggestions are driving me crazy and I can't see a way to easily turn them off?

It's changed some very niche campaigns from CPC bidding to CPA bidding and performance dropped by about 2/3rds until I noticed and switched back. But it's trying to auto apply CPA bidding again. Losing the will to live fighting the endless BS Google throws at ads now.

<comment><USER43> Isn't great that exact match doesn't mean exact match? Or, isn't it great that your ads and landing pages routinely outperform the supposed Quality Score? Isn't it great that...

</comment></comment></comment><comment><AUTHOR> The major shifts in Google products, with numerous high-profile cancellations, have made me suspect weakening of fundamentals, or other threats, possibly regulatory or legal.

This news supports (though doesn't clearly prove) the former.

<comment><USER6> Product cancellations are just part of Google's culture. They have been doing it for years, including at times when they had very good financial results. It is not a sign of anything other than Google being Google.

In particular it is the result of two unusual characteristics of Google's culture: work supporting legacy code is valued much less than it is at other companies, and launching a new product is by far the best way to get promoted.

<comment><USER44> Yes, people get promoted for launching products, but they don't get un- promoted when the product fails 2y later, which most of them have, including 10O% of moonshots so far.

<comment><USER6> Moonshots are supposed to be high-risk speculative projects. Failure is the most likely outcome. You cannot expect good people to take a chance working on moonshots if they will be punished when they fail.</comment></comment></comment></comment>