Why are most browsers developed in C++? - <AUTHOR> http://programmers.stackexchange.com/questions/41883/why-are-most-browsers-developed-in-c <comment><USER2> IMHO it's pretty simple: low-level performance. Even 25% slower than the output of a good C++ compiler means a browser goes from first to last place in many benchmarks. People expect the page to scroll at 60 FPS and that rules out GC pauses longer than 16 ms. Browsers are a mature market and unless the proposed replacement has the performance of C++ it's not worth the risk. Horizontally scaling server software has greater flexibility for performance; hence the explosion of languages on the server side while the client side is largely confined to languages developed in the 80s.

Parallelism may be the key to disruption here however; if a new browser can scale better to the multi-core present and future it may be worth taking a small hit over C++ in the sequential case. That's Servo's bet (although Rust strives for C++-level performance even in the single-threaded case).

<comment><USER3> > People expect the page to scroll at 60 FPS and that rules out GC pauses > longer than 16 ms

How do people writing games in Java or C# deal with this? Gaming is an area where people expect smooth, high speed performance.

<comment><USER4> _> How do people writing games in Java or C# deal with this? Gaming is an area where people expect smooth, high speed performance._

Short, mean answer: poorly.

Longer answer: they sacrifice the benefits of managed languages. They forego immutability and controllable object lifetimes for the use of object pooling to prevent the garbage collector from going nuts. And many still target 30fps in order to minimize the effects of variable latency.

I used to do this; I'm porting my stuff from XNA/MonoGame to my own OpenGL/GLFW/OpenAL engine in C++ because I grew unsatisfied with the performance and limitations inherent in the process. Many of the biggest benefits of managed languages are blunted with games in other ways, too. The CLR, for example, should be a huge boon for scripting--the DLR is a fantastic concept, for example. But dynamic code requires codegen, and System.Dynamic doesn't work in Xamarin's iOS product. So if you want to bring a game with scripting from Windows/OS X to iOS, you're boned. (Java has the same problems; Groovy, while a great scripting language, doesn't run on Dalvik or on IKVM- over-MonoTouch. Rhino's LiveConnect doesn't work there either.)

On the other hand, I use AngelScript and expose C++ objects and methods to it, computed statically at runtime but executable via interpreted scripts, for the best of both worlds without breaking my back to do it. Memory management just isn't that hard and the performance and compatibility of native code just can't be touched right now.

<comment><USER5> Object pools were good JVM thinking 10 years ago. It's been a very long time since they made any sense for memory-based objects.

Unity manages to do quite a bit with the CLR on a cross-platform basis, and that looks like Javascript to me.

Horrors! AngelScript has Garbage Collection! But since it didn't come from the JVM, I guess it's OK.

[http://www.angelcode.com/angelscript/sdk/docs/manual/doc_mem...](http://www.angelcode.com/angelscript/sdk/docs/manual/doc_memory.html)

> Memory management just isn't that hard

Every victim of a use-after-free just cried out in anguish. Your world weeps at 60 fps.

Keep in mind the original question: What's a good language for implementing a browser? The _number one_ requirement for a browser today is not performance. It is security. A decade of effort has been put into the major browsing engines to snatch pseudo-victory from the clutches of determined hackers. A great deal of that effort has been necessary because of the desire for "speed", and the fallibility of those who believe memory management "just isn't that hard".

<comment><USER4> _> Object pools were good JVM thinking 10 years ago. It's been a very long time since they made any sense for memory-based objects._

I guess that's why libgdx very recently added pooling, right? And (OK, it's Dalvik, but still) why Android uses view recycling all over the place? Why _recommended practice_ for ListView is to re-use existing objects whenever possible?

I'm not pulling the use of pooling out of my ass here. This is _what you do_ for high-performance managed stuff, in games and otherwise. Everybody I've ever worked with, and I've worked with some pretty heavy hitters (some of my former coworkers at TripAdvisor are _insanely_ plugged into the Way Of The JVM), has kept pooling in the toolbox for latency-sensitive problems.

 _> Unity manages to do quite a bit with the CLR on a cross-platform basis, and that looks like Javascript to me._

Well, for one, it's not. It's statically typed sort-of-JScript. It bears little relation to JavaScript; it was originally called UnityScript and the name was changed largely for buzzword bingo purposes. (It's really very frustrating when working in Unity, both because it's not real JavaScript but doesn't play nicely with Boo and C# scripts a lot of the time.)

Unity also has notable performance problems for nontrivial scenes due about 50/50 to expensive creation on the front end and garbage collection on the back end. One of the most popular Asset Store items is--wait for it--an object pooling system.

 _> Horrors! AngelScript has Garbage Collection! But since it didn't come from the JVM, I guess it's OK._

It does, but only if you're allocating within it. I literally never allocate non-stack data in it. I use it as a logical glue layer within my application, which is not garbage collected.

 _> Every victim of a use-after-free just cried out in anguish. Your world weeps at 60 fps._

I literally can't remember the last time I hit a use-after-free in my own code. If you understand your object lifetimes, RAII will usually (almost always?) put you in the right place. In the worst of cases, where you've found yourself in a thoroughly opaque situation and can bear the perf hit, you have tools like boost::shared_ptr (though in my current project I don't use it anywhere).

It's certainly possible to make mistakes, but it is easier to do the right thing than most managed-languages people are willing to admit. I used to be one. It's why I was pretty terrified of working in C++ for so long. As it happens, I think former-me was pretty wrong about that.

 _> What's a good language for implementing a browser? The number one requirement for a browser today is not performance. It is security._

I'm of two minds about this. Sure, security is a critical concern. But user experience isn't to be ignored, and I really do feel that user-detectible pauses are to be avoided at all costs. Writing better native code is, to me, a more feasible option than an imperceptibly fast general-purpose garbage collector.

(As an example, I grow frustrated when scrolling a big list on my Nexus 4 when I can watch the scrolling get stuttery. In my experience, it's almost always due to someone not following best practices and re-allocating instead of re- using existing objects.)

<comment><USER6> Use-after-free bugs that are so blatant that they occur in normal use are rare, but real UAF bugs are discovered adversarially, and it is absolutely not simple to test them or, for that matter, avoid them.

<comment><USER4> I'd certainly agree that they certainly exist in the wild but I'm less convinced that they're particularly hard to avoid _if_ you understand the lifecycles of what you're working on That browsers are a tough problem with a difficult-to-internalize object lifecycle and a bunch of edge cases makes this tougher, for sure; my stuff is games-focused and so, yeah, I have a relatively simple problem set.

But, all things considered I'd rather Somebody Else (because Somebody Else makes browsers, I don't) spend developer time making a fast system secure rather than running a slightly more secure system up against the hard walls imposed by any managed language one would care to name.

<comment><USER6> Integer overflows, which require no mitigation other than getting a computer to count correctly, are extremely pernicious; they pop up even in systems that were deliberately coded defensively against them. There's an LP64 integer bug in qmail! And that's just for counting. Avoiding UAFs requires you to track and properly sequence every event in the lifecycle of an object --- and, in many C++ systems, _also_ require you to count properly.

No, I don't think they're straightforward to avoid.

I think it seems straightforward to avoid memory lifecycle bugs because it's straightforward to avoid them under normal operating conditions. But attackers don't honor normal conditions; they deliberately force programs into states where events are happening in unexpected ordering and frequency.

I don't even know where to begin with the idea that it's acceptable to sacrifice a couple memory corruption vulnerabilities in the service of a faster browser.

<comment><USER4> _> No, I don't think they're straightforward to avoid._

Fair enough, and you certainly have more experience on the topic than I do. Thanks for the explanation.

One quibble though, and maybe it was poor phrasing on my part:

 _> I don't even know where to begin with the idea that it's acceptable to sacrifice a couple memory corruption vulnerabilities in the service of a faster browser._

It's not really an either/or though, right? I mean, you can protect against some forms of attacks through a managed environment (though the environment itself adds its own attack surface). But you trade performance to get it. A managed language isn't going to solve all your problems, and it is going to mess with your performance in inconsistent and essentially intractable ways. I'm not saying "throw in a couple memory corruption vulnerabilities if it'll make it faster", I'm saying that you can _fix_ memory corruption vulnerabilities. You can't fix inherently slow.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> Web browsers must be some of the most demanding applications to develop: they have to do very many different things; they must be very efficient; they must be very reliable; requirements change very rapidly.

If claims made by certain language X apologists are to be believed, one can infer that language X should permit developing a web browser in shorter time than C++, with performance within say 20% of C++ (or even superior to C++, depending on X and the apologist), with fewer bugs, and with a more maintainable codebase as the result. Actually delivering such a web browser would be a rather more convincing argument than empty talk or even glorified Fibonacci programs. Hence, I'm very much looking forward to future progress by the Rust guys.

</comment><comment><USER5> There are a lot of poor or outdated answers to the question (arguing a lack of accelerated graphics, for example).

The number one reason current browsers are implemented in C++ is momentum. A browser has a lot of parts that do a lot of things; they're big code bases.

JIT compilation technology on the JVM (and elsewhere) these days is pulling within 20-50% of static C/C++ code.

If you were coding from scratch these days, would you start with C/C++? I doubt it, especially when you know you can get most of the same performance with other platforms.

By far the most important reason to choose a modern VM environment is security. Except in a vanishingly small number of cases, everything should _always_ be bounds checked. The "native" part of a browser should be as small as possible, with a highly constrained and thoroughly checked API. Take away manual memory allocation and use after free goes away. Take away pointers and buffer overflows go away. You want as much of the browser code as possible to be running in a managed environment.

In my opinion every line of native code carries risks that don't exist in managed environments. Yes, properly written C code won't exhibit those problems -- but it seems to be extraordinarily difficult to do that. Security flaws are still being found in browsers, decades later.

And yes, security flaws exist in systems like the JVM. Those mostly come from native code as well, but some of them are because of the design. The JVM's "native part" is just too big. Too _much_ is done there that doesn't need to be.

With a massive native code base it's just a huge problem to verify everything.

So Rust and Go are quite interesting. It's critically important that these languages remove "unsafe" features from something like C/C++, and lose almost nothing in the process.

And around the corner, environments like the JVM can auto-vectorize on the fly ([http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7116452](http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7116452)), knocking down yet another performance-parity barrier.

<comment><USER8> Performance doesn't just include CPU time, but also memory footprint. You might eat a similar amount of processor time, but you're not going to have a similar memory footprint with any kind of GC'd language, and if the GC happens to be a stop the world GC, you're likely to see pauses in the browser that will irritate the user.

Before the inevitable "memory is cheap" argument is made, I'd rather have my client app be a good neighbor. Having a GC'd process on a client munch through memory like it's infinite is just bad manners and makes some bad assumptions. (On the flip side, a GC'd process that tries to be a good neighbor by freeing memory aggressively becomes a bad neighbor in terms of CPU time, which has additional consequences in terms of battery life.) The JVM, for example, tends to only run its GC when it needs to. It is a horrible neighbor in this respect because it just takes all the memory it needs and only runs its GC when it really, really has to. This is one of the reasons it's relatively fast, but as a consequence puts a lot of pressure on the system. In such a scenario it's possible other processes will OOM and be killed, or the system will start swapping memory pages, or other processes will have to run their GC more aggressively (as V8 does in low memory conditions) which puts even more pressure on the system. All this adds up to very selfish apps that bog down a system and can become virtually unusable. These selfish apps are also unsuitable for use in poorer parts of the world where incomes are lower and additional memory is potentially unaffordable.

I think it's probably okay to take the attitude that memory is cheap when you control the environment and you're paying for the memory, but in any other circumstance, shipping software that gluttonously gobbles memory is probably unacceptable and the #1 reason why C++ makes good sense as a language choice for writing a browser.

<comment><USER9> I found this whole discussion irritating because not a single person mentioned that with the memory demands of a web browser that you might not want GC. You can say all this BS about momentum but in my mind avoiding GC is probably the best and most relevant reason in 2013. Thank you for mentioning it.

Shows how dependent on GC a large part of the community of developers have become - they are incapable of imagining a world without it.

(PS: I am amused when people mention that being 20-50% slower is described as fixing the performance gap.)

<comment><AUTHOR> I see your point, but even if you avoid GC you have other alternatives nowadays.

<comment><USER10> Not really. Nothing mature. I mean Mozilla is working on Rust for exactly this reason. But the immaturity of that is why we don't have a Rust based browser at the moment.

Otherwise, C++ is really our only choice for a mature, modern language without GC.

<comment><USER11> There's C. There's Ada. There's Object Pascal. There's Objective-C. If you're a GNOMEhead, Vala can be pressed into service.

I seriously think that anyone who finds themselves reaching for C++ to solve a task should try Ada instead. The semantics of their code will be clearer and their code will be more readable, therefore maintainable.

<comment><USER8> I didn't downvote you, but, oh holy crap, Ada! Free documentation is non- existent, performance is lacking compared to C++ [-1] (yeah, yeah, benchmarks, etc), the community is minuscule and pretty much limited to stuff like critical real time systems (read: avionics), and the price of the books (the complete, current ones) is a barrier to entry.[0] From what I've read of others' experiences, there aren't many happy Ada developers. This isn't exactly conducive to a successful FOSS project! (On a side note, I do mostly like the language's syntax and its influence on Ruby is very obvious.)

I'm not sure anybody would use Objective-C if it weren't for Apple, any more than people would choose to use JavaScript if it weren't for it being the only language available in the browser.

It's a bit of a chicken and egg problem, but the one thing you really need for a successful OSS project are developers. Do any of the Object Pascal implementations actually have a community?

A codebase as large as a browser written in C would be a horrible, unmaintainable mess IHMO.

[-1] [http://benchmarksgame.alioth.debian.org/u32/ada.php](http://benchmarksgame.alioth.debian.org/u32/ada.php)

[0] [http://www.amazon.com/s/ref=nb_sb_noss_1?url=search- alias%3D...](http://www.amazon.com/s/ref=nb_sb_noss_1?url=search- alias%3Daps&field- keywords=ada%20programming&sprefix=ada+p%2Caps&rh=i%3Aaps%2Ck%3Aada%20programming)

<comment><USER11> The Ada community is actually growing. Ada has a bad rap because back in the day Ada was a DoD requirement, which meant that vendors could ship compilers that conformed to the spec, but otherwise sucked rocks. With the advent of GNAT it's no longer the case that your compiler is bound to suck. I learned Ada primarily with the help of free resources. The ARM is also free.

Granted, the sort of person who is likely to use Ada is not a l33t hax0r, but someone who's been around the block a few times on major engineering projects. Still, GNAT has bindings to the likes of Gtk and OpenGL, a direct result of increasing interest in Ada outside of critical systems engineering.

 _It 's a bit of a chicken and egg problem, but the one thing you really need for a successful OSS project are developers. Do any of the Object Pascal implementations actually have a community?_

FreePascal/Lazarus does. It's mainly Europeans (French and Germans primarily) who once did PC development with Turbo Pascal.

 _I 'm not sure anybody would use Objective-C if it weren't for Apple, any more than people would choose to use JavaScript if it weren't for it being the only language available in the browser._

I would (and do). Its Smalltalk-based object system is much easier to wrangle than C++'s.

 _A codebase as large as a browser written in C would be a horrible, unmaintainable mess IHMO._

Yes, point against C. C++ has the advantage that it can turn even small codebases into horrible, unmaintainable messes. :) This is the reason why I converted an entire game engine to Objective-C.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> They all have roots going back to a time when C/C++ were the "it languages" for UI and systems development. Java was nowhere near ready for that sort of thing; Mozilla tried anyway, but Rhino is the only thing from that project that really took off. No other language even came close: Tcl/Tk had the UI part, but its performance wasn't up to par, and most other languages either didn't have the performance, or didn't have the UI capabilities, or called out to Tk to get the UI capabilities and thus inherited Tk's problems.

Mozilla tried the low-level guts/high-level UI approach anyway, using JavaScript because they had to implement an engine for it anyway. But it took them a few tries to really get it right, and its false starts in this category remain infamous to this day. The others stuck with C/C++ for everything because it's what worked at the time, and continue because it works for them.

Mozilla's at it again with Rust, though, and that looks like it could be an interesting project.

</comment><comment><USER13> The Rust language is being designed to be ideal for use in building a Web rendering engine. Mozilla's rust-based engine experiment is called Servo:

[https://github.com/mozilla/servo](https://github.com/mozilla/servo)

</comment><comment><USER14> Be sure and go down to the "Ask 'when' before 'why'" answer.

</comment><comment><USER15> There was a browser written in Java in the past:

[http://en.wikipedia.org/wiki/HotJava](http://en.wikipedia.org/wiki/HotJava)

<comment><USER16> I rank discontinuing HotJava as one of Sun's biggest missed opportunities.

The stackexchange commenter moans about graphics performance in Java. I helped write the Magician OpenGL bindings for Java in the '90s (the Java API side was all me, which Sven of JOGL basically copied). My VRML browser was just as fast (fps) as the available VRML browsers written in C/C++. With JDK 1.1.

Nowadays, Java and OpenGL go together like peas and carrots. Exhibit A is MineCraft.

A good buddy of mine does all his projects in Java and OpenGL. The latest is the awesome 2D skeletal animator called Spine at [http://esotericsoftware.com](http://esotericsoftware.com). I couldn't imagine him doing it on top of any other stack.

<comment><USER4> _> My VRML browser was just as fast (fps) as the available VRML browsers written in C/C++. With JDK 1.1._

With respect, I find your claims dubious. I would certainly buy that your top framerate was competitive. I also expect that your framerate was significantly more stuttery and inconsistent due to garbage collection (or else written in such a devolved form of Java that you really might as well write C++ anyway).

The problem is not Java's execution speed. It's that garbage collection is the death of responsiveness.

 _> Nowadays, Java and OpenGL go together like peas and carrots. Exhibit A is MineCraft._

Minecraft's performance characteristics are pretty bad for the fairly trivial rendering work being done. (It's improved, but it's still not great.) And writing code with LWJGL/JOAL is gross relative to similar code in C++--I have done both. You don't _get_ anything for tying yourself to the JVM except, in a weird and mostly self-destructive way, the 'freedom' from understanding your object lifetimes and deterministic destruction.

I've used libgdx and XNA/MonoGame extensively and have gone back to C++ because both are fairly limited in their usefulness. libgdx helps by hiding a lot of nasty API issues--and Mario and company are super good at what they do --but what it gives you is generally taken away by the limitations of the JVM in a client context (limited platform support, the infuriating Dalvik/Hotspot divide, That Frigging GC Again...). Writing up some pretty minor glue code between windowing, input, audio, and graphics isn't that bad. And, perhaps more importantly, you'll actually understand how it works. (I've spent the week fighting with OpenAL. I'm glad I did. I've learned a lot and can recognize the failure cases and can do something about them.)

 _> A good buddy of mine does all his projects in Java and OpenGL. The latest is the awesome 2D skeletal animator called Spine at [http://esotericsoftware.com](http://esotericsoftware.com). I couldn't imagine him doing it on top of any other stack._

Spine's pretty impressive, but there's not much in it you couldn't do with ease with Cocoa/Obj-C[++] or Qt or even WPF and .NET. It's also a misleading example, though, because tooling generally has much looser latency requirements than user software and so the severe weaknesses of JVM client applications are less readily apparent than in an application that needs to hit 60fps all day every day.

<comment><USER16> _expect that your framerate was significantly more stuttery and inconsistent due to garbage collection_

Static scenes, simple eventing. Compile the screen graph to meshes, load textures, then move the camera around. No stutter.

The trick is to avoid the GC, not thrash the heap, don't create a lot of short-lived objects.

Implementing LOD would have sped up my browser quite a bit.

The other idea was to compile VRML's DEF prototypes to Java byte code, avoiding VRML engine overhead, in which case my Java would have smoked C/C++.

My conclusion was not that my stupid simple browser was amazing, but rather the "native" C/C++ implementations were terrible. By comparison, my browser was about 5 times faster than LiquidReality, another Java-based browser.

<comment><USER5> And these days you can go ahead and create quite a few short-lived objects without worrying about it, as long as they're elided by escape analysis.

With judicious use of off-heap memory for regular structures it's simple to erase much of the crap in the heap, and reduce already-tiny GC times even further.

Never dropping a frame is another goal entirely, though, and for that I still believe you need a separated rendering/animation mechanism.

</comment></comment></comment></comment></comment><comment><USER17> Interesting. With the recent influx of Go rewrites, I wonder if anyone would consider writing a browser in Go just as an experiment.

<comment><USER18> I rewrote quite a bit of the Chromium browser in Go, achieving a 10x reduction in lines of code (I stopped this project before I could reliably evaluate performance). Since Chromium uses a multi-process model, this was pretty easy: I implemented the Chromium IPC protocol in Go (I wrote a Chromium utility to emit a JSON description of the IPC protocol), and then told the privileged and unprivileged Chromium processes to use my Go subprocess rather than the original logic. My Go logic ran on both Windows and Mac OS X.

<comment><USER19> Mind sharing if you have the code public ? :)

<comment><USER18> Belongs to my employer :(

Also, when I said 'quite a bit', I was thinking about the data-plumbing logic --- not UI and WebKit logic. It doesn't really make sense to rewrite WebKit.

</comment></comment></comment></comment><comment><USER20> Most browsers are developed in C++ because for the timeframe in which the projects started, C++ was the performant answer

<comment><USER21> It still is.

Consider, not just PC based browsers, but the one on your phone. Every JIT compile costs watts, not just time. There's a relatively large push to go back to C++ because of this (power usage). 20% reduced performance may not be noticable as far as user interaction goes, but it is sure noticed in terms of "my battery just died!".

It's nice to have a common code base. C++ across multiple platforms reduces my cost, even if I have to pay for good programmer that understand the use of things like smart pointers.

<comment><USER20> The browser in my phone is part Objective C and part C++, as part of the project descended from Konqueror, via WebKit. I'd contend the C++ parts are C++ for legacy reasons, aka, "It was the performant solution at the time KHTML was written".

Very little mobile phone software these days is written in cross platform C++, of that it's mostly games. Most iPhone software is still written in Objective C, most Android software is still written in Java. For cross platform code, I'd say Xamarin or Unity C#, or Adobe's product line both are still beating out C++, even counting the games.

Chrome is about 40% C++, and is now the default browser for android.

C#/Xamarin would probably be what I'd standardize on if going for a true cross platform non-game app. Javascript/Unity3D or C+/Unity3D would probably be what I standardized on for games, with Futile being looked at hard for 2D games.

Companies with a huge existing codebase (e.g. EA) likely find porting an existent engine cheaper than writing a new one, and will of course stick with their historical C++

<comment><USER22> >Chrome is about 40% C++, and is now the default browser for >android.

Chrome is 100% C++. Did you ever sync its source code from the repo? (i wonder what the other 60% are in your opinion, Js?)

edit: to be fair there are a little of objective-c and java just to glue with mac/ios and android

<comment><USER20> [http://www.ohloh.net/p/chrome](http://www.ohloh.net/p/chrome)

The metric is probably off from the automated calculator.[http://www.ohloh.net/p/chrome](http://www.ohloh.net/p/chrome) It's likely counting the .h files as C

<comment><USER22> this 40% metric could only be true of they are counting the third-party (with ffmpeg, webkit, etc) but then we cannot say this is chrome..

also there are a lot of tools written in python(gyp, grit, ninja etc).. but this dont get into the executable or libraries.. so i would not count (at least in the perspective of this thread) as the chrome itself. since those tools are used in other projects as well and come only with the source code to build things (it would be like to count the gcc compiler as part of the source)

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> Maybe a more interesting question is: Would you use C/C++ to develop a browser today?

<comment><USER23> Probably yes, if it's C++11 and UI is in Qt/QML for example.

</comment></comment><comment><USER24> Why a C like language? Power. Browsers are CPU and memory hogs, and C is simply the best way of squeezing out more performance.

Why an OO language? Well, while OO is overused, a HTML document looks a lot like a bunch of objects, doesn't it?

</comment><comment><USER23> Why not? What other high performance languages were out there (besides C) when these browsers were created? New browsers can be written in different languages (for example Rust).

</comment><comment><USER25> low level performance and control with a lot of abstraction features.

</comment><comment><USER26> Because what else would you write it in?</comment>


IT staffing troubles begin, especially with younger developers  - <AUTHOR> http://www.zdnet.com/blog/service-oriented/it-staffing-troubles-begin-especially-with-younger-developers/8265?tag=content;feature-roto

<comment><USER2> _No sooner does he hire a Java programmer and train him in the company's music industry niche, than the programmer is recruited away for a higher salary._

 _Trebino says he is promoting greater ownership of projects in which IT professionals are given greater latitude in technology decisions._

I wonder if he feels that he has addressed his problem of loosing talent? A better workplace is great and it helps a bunch, but if you are not paying at or above industry rates you should expect that talent is going to leave. After all they work for money the same reason that the company is in business.</comment>


Proof of Stake: An energy efficient alternative to Bitcoin mining (PoW) - <AUTHOR> https://en.bitcoin.it/wiki/Proof_of_Stake

<comment><USER2> Here's a video explaining it: [http://youtu.be/r5iuwrvKz_g](http://youtu.be/r5iuwrvKz_g) [http://youtu.be/ynwz8H66chY](http://youtu.be/ynwz8H66chY)</comment>


Interview With A Man Who Eats Leftover Food from Strangers' Plates - <AUTHOR> https://theconcourse.deadspin.com/an-interview-with-a-man-who-eats-leftover-food-from-str-1834424806 <comment><USER2> I always wondered if some All-You-Can-Eat buffets put uneaten food from plates back into circulation.

I even thought about testing this using UV reactive food coloring or something but was never really dedicated enough to try it.</comment>


A Personal Perspective on Machine Learning - <AUTHOR> http://www.win-vector.com/blog/2010/10/a-personal-perspective-on-machine-learning/

<comment><USER2> "I would temper this with we are likely in the age of unmarked data and unstructured data. Less often are we asked to automate a known prediction and more often we are asked to cluster, characterize and segment wild data. In my opinion the hard problem in machine learning has moved from prediction to characterization."

I would say instead we are in the age of Discovery. The hard problem is discovering causes that give rise to coherency in large sets of real world data.

As to whether we are in the age of large computers, the classification is irrelevant. We are in the age of sufficiently large computers. There is sufficient power and scale to accomplish everything that the brain does with our current infrastructure. Is it highly inefficient on a watt/thought basis? Yes. But that's a secondary metric.

To address the concerns the author outlines:

Dealing with lack of training data - when you move to discovery labeled data is far less relevant, which should relieve research assistants who are currently being asked to label images as cat/not-cat.

Dealing with large sets of unstructured data - this is a processing problem for which the current infrastructure is sufficient.

IMO we have plenty of data, we don't need many more labels, and we have sufficient processing power. That leaves algorithmic work for the discovery of causes. (My bet is on systems similar to the kind of sparse distributed hierarchical models that Numenta is working on.)

One thing that I don't think most people have realized is how far past the quantity of data and processing power we need we already are.

If you were to take all the visual information the brain receives in the first 30 years of life (plenty of time to become intelligent) you'd arrive at a number around 1.4 petabytes. This is hardly a large number compared to the amount of information processed by YouTube on a monthly basis. Hearing, taste, and smell all add in a fraction more, and touch (well I don't have any good numbers there yet).

The hard part now is going to be convincing machine learning researchers to actually expose their algorithms to a swath of data similar to the inputs we humans get, over sufficient time, so as to allow for the development of a robust hiearchy of stored causes (aka understanding.)

AFAICT - Experience _is_ understanding.

</comment><comment><USER3> "In my opinion the hard problem in machine learning has moved from prediction to characterization."

Is this because prediction has been "solved" or because characterization is currently more commercially useful?

<comment><AUTHOR> I was hoping nobody would outthink me and ask that. I am going equivocate a bit. Now that we have kernel methods (for interactions) and graphical models (for dependencies) you could claim prediction is "solved" in that if you guess the right feature design (no small task) current optimization methods are up to the task of prediction. Of course some better method could come along and we would be forced to say the current level of prediction turned out to be inadequate. Clustering and characterization are indeed where a lot of the current applications lie and can range from fascinating to unpleasant (depending on details of the problem domain).

</comment></comment><comment><USER4> "if a system is well understood or works then it is no longer called artificial intelligence." This was also observed already by von Neumann.</comment>


Ask HN: Best Place to Buy Bitcoin (today)? - <AUTHOR> I realize that a few bitcoin exchanges (Coinbase, localbitcoins, etc.) have been struggling to keep up with demand recently. I wonder if these are having issues because they are the main places people go to buy bitcoin? Perhaps knowing of other places would help alleviate the stress? <comment><USER2> Gemini.com is my favorite, but GDAX works too.

<comment><USER3> gemini is down (again). i like the interface, but it's been buggy.

</comment></comment><comment><USER4> Gemini = fast and cheap

Coinbase = joke, expensive, slow and zero customer service.

Open gemini.com and coinbase.com and compare the current BTC price. You'll see the spread they make on coinbase... and we're not even talking about transaction fee

</comment><comment><USER5> The bigger issue is where you are going to be protected by the government in event of hacking, owners disappear with the money, etc... (presumably you are not keeping your wallet locally tattooed to your left...)

</comment><comment><USER6> There's no issue purchasing from Coinbase, transactions are instant.

<comment><USER6> aaand then there were issues!

</comment></comment><comment><USER7> Luno for me. Smooth interface, low fees, very easy to trade, and they saved my butt twice when I accidentally put in the wrong price on the exchange.

</comment><comment><USER8> Just use GDAX. No fees if you use limit orders.

</comment><comment><USER9> Why do they need Aadhar(Indian Identity Number) for buying bitcoin in some of the apps like Zepay?

</comment><comment><USER10> If you use SFOX.com you can buy on whichever exchange has the best price.

</comment><comment><USER11> Bitstamp.

<comment><USER12> Bitstamp is only good for those who are in Europe.

</comment></comment><comment><USER13> Coinbase or GDAX from Coinbase if you want lower fees.

</comment><comment><USER14> GDAX for me. Quicker than Coinbase and lower fees.

<comment><USER15> looking at GDAX (my first view of it) it looks like the organization that owns GDAX's SSL cert is coinbase, are they not a subsidiary?

<comment><USER16> gdax owns coinbase AFAIK

<comment><USER17> GDAX is just the Coinbase exchange front-end, operated by Coinbase. It used to just be called "Coinbase Exchange" before they changed to a more generalized "GDAX" in May 2016.

</comment></comment></comment></comment><comment><USER18> Mt. Gox</comment>


Ask HN: Is it smart to fundraise on the heels of major press coverage? - <AUTHOR> My startup was recently featured in The Atlantic, and we'll be on NPR next week. This is the first major press we've gotten since launch, and it's driving lots of new end users and corporate partners.
We have been considering raising a round and would do so if it wouldn't be too large of a time-sink. From reading others' fundraising stories, it seems like the hardest thing is getting the first commitment and turning investors' mindsets from wait-and-see to FOMO. Is major press coverage an effective catalyst in this regard?
I realize the answer is likely different at different stages—obviously no one ever started a B round because a newspaper wrote about them. We have seed funding from Intel Capital and would be looking to raise around $500k. <comment><USER2> Fundraising is almost always a timesink so you'll need to decide whether it's worth the time and effort versus spending that time on customer acquisition and corporate partnerships. Good press and corporate partnerships will certainly help in raising a new round if you choose to do so. There should be greater investor interest, and if the good press continues while you're raising the round it may help in closing the round. VCs and other investors like to be validated and good press will make it easier to sell partners on the investment.

As an aside, a potential corporate partner could be Benchmark Education. They focus on literacy K-5th grade.

<comment><AUTHOR> Thanks for the advice. I know that fundraising will take time, which is part of the reason we've not done it yet. The worst outcome is that we spend a month or two working on fundraising but don't end up getting terms we like and having to decide between lousy terms or deferring the round.

The hope here is that the press will help overcome some of the psychological challenges and make it an efficient time to raise. You're right that the partnerships and new customer acquisition that follows from press coverage will also be good for investor conversations. Thanks also for the reference to Benchmark Education—hadn't heard of them but will definitely reach out!

</comment></comment><comment><USER3> what is your startup

<comment><AUTHOR> BeeLine Reader—we've developed a technology that makes reading on-screen easier and faster. [http://www.BeeLineReader.com](http://www.BeeLineReader.com). The Atlantic article, in case it matters, is [http://www.theatlantic.com/technology/archive/2016/05/a-bett...](http://www.theatlantic.com/technology/archive/2016/05/a-better- way-to-read/482127/). Thanks for asking!

<comment><USER4> Wow this is awesome! Keeping track of the line I am on is very difficult for me (moreso than for other people). Reading the example text on your website was a breeze.

Keep it up!!</comment></comment></comment>


Azure – Machine Learning as a Service - <AUTHOR> http://azure.microsoft.com/en-us/campaigns/machine-learning/

<comment><USER3> The video is full of stock footage of business people doing businessy things but light on actual information, which is a shame because the service looks very interesting.

<comment><USER4> Seriously. If this is such a great product, couldn't they have shown a screencast demonstrating what the narrator was saying instead of showing tangentially related stock video?

</comment></comment><comment><USER5> Our company mulled the idea of doing a similar product for years. Essentially putting a pretty UI on top of machine learning algorithms under the hood where you automatically determine which algo gives the best fit.

Ultimately shelved it because we couldn't find a good customer fit. For corporate enterprise users, our usual bread & butter, this has to be super secure so the idea of uploading gigs of proprietary company data or customer data rings alarm bells. Plus the data has to be cleaned up and ready to go. It just seemed like a lot of leg work before you even got to the payoff - <USER2> even then, having to explain why the predictive results weren't 100% accurate etc.

Curious to see how this plays out. I wonder if they're using vowpal-wabbit under the hood - I believe the guy behind that worked / works at MSFT.

</comment><comment><USER6> I'm on the opposite end of the market, but I'd be curious to see who would use ML as a service. I've never seen the use case for it being in the ML space myself. Anyone care to step up and state their use case?

How much data do you typically throw at these APIs? How effective have they been for you overall? Did you need a super accurate model?

<comment><USER7> Like most other exponential growth patterns, there is suddenly HUGE number of people now wanting to use ML but don't have necessary background. Pretty much every other enterprisy developer who had been happily spending their lives pushing data from RDBMS to/from UI now wants to try out ML for something or other. Unfortunately current state of ML framework is a minefield. If you don't know your precision from recall or confusion table really confuses you or have no clue when you have been merely overfitting all along, you are screwed.

I can see huge market if you can bottle down complexities of ML in a nice easy to use package. A very easy to use ML service or tool would allows you to import your data with few clicks, apply normalization such as stemming or edit distance by pick-n-choose without writing any code, has nice generic featurization library, can run tons of algorithms with large number of parameter sweeps, does automatic feature selection, takes care of maintaining test and validation sets etc. This kind of thingy would be super popular. My guess is that it has to run in cloud because it eliminates all the setup and updates plus doing what I described even on moderate size data sets usually takes hours on single machine. Now throw in plug-n-pray deep learning algos which even few ML experts are familiar with and can require significant GPU based infrastructure.

Can this be reality? In my opinion, this is more in line of those graphical tools that claims you can create programs without having to learn programming. It's impressive when you do demo but don't last long in battle grounds. Ultimately, if you want to write program, you will need to get your hands and cloths dirty with oil stinks. If you want to do machine learning, you will need to start from stats and probability.

<comment><USER6> When I said I'm on the other side, I met I'm one of those crazy machine learning guys[1] who doesn't see a business model in the full blown package.

You're right that this would be hard, but I'm wondering if the cost benefit analysis is there for it. I looked at this approach, and I don't believe it is relative to the costs incurred for something like this. I'd be willing to give it a shot at some point maybe, but neural nets behind the scenes for me involves more fun data behind fire walls ;).

[1] [http://wired.com/2014/06/skymind-deep- learning/](http://wired.com/2014/06/skymind-deep-learning/)

</comment></comment></comment><comment><USER8> Anyone know how this is different from, say, prediction.io?

[http://prediction.io/](http://prediction.io/)

<comment><USER9> Prediction.io needs a server to run on, and it focuses on recommendation problems, so it doesn't seem to do classification and regression for instance.

</comment></comment><comment><USER10> Looks really interesting. Anyone find any links with actual info, as this page is pure fluff!?

</comment><comment><USER11> This has the potential to be huge, if they decide to tap into the vast knowledge-base that Microsoft Research has developed over the years. I would jump at the chance to use an original implementation of their research on Decision Forests.

</comment><comment><USER12> Wow - Google Prediction like API with CIO approved corporate drones? Check! Only took them 4 years to catch up.

</comment><comment><USER13> The "ML Studio" that briefly appears in the video looks like a slicker version of Weka.

</comment><comment><USER14> Missed a trick to call it Mlaases.</comment>


The 25 Most Popular Passwords of 2015: We're All Such Idiots - <AUTHOR> http://gizmodo.com/the-25-most-popular-passwords-of-2015-were-all-such-id-1753591514 <comment><USER2> 1\. They don't say where their data comes from other than "Splash Data", whatever the fuck that is. There is no link.

2\. Number 15 is "1qaz2wsx" which took me a while to figure out what it was (type it out yourself, you'll understand). It is so odd, I have a hard time seeing how it is the 15th most common password unless Yahoo recommended it to legions of grandmothers on the internet. This only further makes me question the data source.

3\. Further calling into question the data, what websites allow lower alpha only or numeric only passwords?

</comment><comment><USER3> I use weak passwords on sites where I think no password should have been necessary. Like when I need to sign up to post on a board but will never be entering any personal or financial information. I have to wonder if these stats are skewed by the same kind of thing.

</comment><comment><USER4> previous discussion here: [https://news.ycombinator.com/item?id=10930397](https://news.ycombinator.com/item?id=10930397)</comment>


The White House Has Been Covering Up the Presidency's Role in Torture for Years - line-zero https://firstlook.org/theintercept/2014/03/13/president-obama-covering-presidencys-role-torture-4-years/ <comment><AUTHOR> It's like watching Lance Armstrong just before his fall. You know where it's going to go and just wish they'd come clean and quit breaking the Constitution instead of insisting on their innocence.

Too many scandals that went similarly ended up revealing cover-ups to expect the Executive Branch to come out clean. It looks like it's trying to make the most of a bad situation. Tylenol's 1982 recall remains the gold standard for disaster recovery -- [http://www.nytimes.com/2002/03/23/your-money/23iht- mjj_ed3_....](http://www.nytimes.com/2002/03/23/your-money/23iht- mjj_ed3_.html). Doing something like that could salvage something and get people on the White House's side.

But it only works if you act with sincerity.

<comment><USER2> And like Lance Armstrong, they'll hold out until the bitter end. In a sense, the only thing that can be done to shorten that rope is to publish more information, either by leaks or otherwise. I'd love to see an ad campaign (billboards in DC, Virginia and Maryland, for instance) imploring government and intelligence workers to leak.

<comment><USER3> > _" I'd love to see an ad campaign (billboards in DC, Virginia and Maryland, > for instance) imploring government and intelligence workers to leak."_

Would that possibly run afoul of "inciting imminent lawless action"? I would also love to see such an advertising campaign, but I suspect you would get some pretty fierce and heavy-hitting push-back on it.

<comment><USER4> > fierce and heavy-hitting push-back

You mean, the media would start running your ads for free?

<comment><USER3> Great point, the Streisand Effect would definitely be working for you.

Here is a somewhat related ad campaign, encouraging people with jury duty to refuse to convict people for crimes without victims: [http://www.washingtonpost.com/local/crime/metro-billboard- ad...](http://www.washingtonpost.com/local/crime/metro-billboard-advocating- jury-nullification-concerns-local- prosecutors/2013/10/29/fe53edbc-3da9-11e3-a94f-b58017bfee6c_story.html)

They tried to get this guy for jury tampering: [http://www.nytimes.com/2012/04/20/nyregion/indictment- agains...](http://www.nytimes.com/2012/04/20/nyregion/indictment-against- julian-heicklen-jury-nullification-advocate-is-dismissed.html)

Those campaigns managed to ruffle some feathers, and got lots of media attention because of it. I imagine that this propose whistle-blower campaign would raise even more.

</comment></comment></comment></comment></comment><comment><USER5> The bigger problem is societal acceptance of torture. There are countless fictionalized portrayals of the "good guys" participating in torture and not only remaining good but also getting benefit from it. That points to a deep seated cultural acceptance of torture. And you see it in practice as well. Many people believe that torture is acceptable if it's used towards important ends (stopping terrorism).

Even if we put the brakes on the use of torture in an official capacity in the here and now so long as it's culturally accepted to any degree it's only just a matter of time until it creeps back to the forefront.

</comment><comment><USER6> Not too shocking. I'm sure this is too much of a generalisation but Anericans don't like to know of the atrocities done in their name as long as their "catching the bad guys". The global war on terror has you making enemies of people who would otherwise leave you alone...

<comment><USER3> > _I 'm sure this is too much of a generalisation but Anericans don't like to > know of the atrocities done in their name as long as their "catching the bad > guys"_

I think it is worse than that. I think that they either don't care, or perhaps even support it as long as it isn't too close to home for them. See the treatment of torture on American television shows like _24_ or _Fringe_ (related discussion: [https://news.ycombinator.com/item?id=7017222](https://news.ycombinator.com/item?id=7017222)).

<comment><USER7> Well I don't know, I doubt they care how close to home it is, provided they still get paid. The purest cynicism I ever did see was in response to the drone attacks on funerals. People cried "you're creating more terrorists". The cynics replied, "That's actually the point". A self perpetuating war machine. There are people out there that have this as their goal.

<comment><USER8> No corporation gets to count "peace" on their balance sheet, but man those bullets pile up on the bottom line.

</comment></comment></comment></comment><comment><USER9> Bush authorized CIA to do 'whatever it takes'. CIA cited him on it in their interrogation guidelines. Some of the documents were released with authorization blacked out. Now white house trying to keep specific wording of that authorization hidden. Rest is purely speculation.

<comment><USER10> This is bipartisan issue. If Bush&Cheney administration goes down, so goes Clinton&Gore. Either everyone protects everyone else, or all go down together.

The CIA was granted permission to use extraordinary rendition (torture flights) in a presidential directive signed by Bill Clinton in 1995. The practize was started by George H. W. Bush in 1993.

<comment><USER11> Inserting "bipartisan" into the conversation is moot. This issue -- torture -- is one of authority and the moral beliefs of society.

<comment><USER12> i believe GP mentioned bipartisanship to point out that its unlikely either a D or R administration would actively try to rectify the situation because there's no political gain and there's likely political loss.

<comment><USER11> Ah, I see. In that case, bipartisanship here is still moot.[1]

1\. [http://en.wikipedia.org/wiki/Auto- antonym](http://en.wikipedia.org/wiki/Auto-antonym)

<comment><USER12> it's not obvious that "bipartisan" and "nonpartisan" are always auto-antonyms. it may often be the case in practice, but there are are other parties for voters to choose from. for that reason, it's not a universal anto-antonym like say, flammable / inflammable.

<comment><USER11> To clarify, I was commenting on the fact that introducing the notion of bipartisanship to the discussion was moot (unworthy of talk) in the sense that issues like this should transcend Left/Right ideology and moot (worthy of talk) in that it's an interesting phenomenon to me that someone immediately commented on parties, as though the American system has very deeply ingrained this sense of parties that there is no alternative to.

Your point about the words though is even more intriguing (I love words!) and I had actually never thought about the two together like that -- I don't often see "nonpartisan" \-- to the extent that for a second I thought what you were saying didn't make any sense.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> "These are not just academic exercises. We're not analyzing the media on Mars or in the 18th century or something like that. We're dealing with real human beings who are suffering and dying and being tortured and starving because of policies that we are involved in. We, as citizens of democratic societies, are directly involved in and are responsible for." (Eminent MIT political activist)

</comment><comment><USER14> The patterns of drone strikes and raids points to JSOC as processing an ever- growing kill list directed by the POTUS. Feel free to peruse Dirty Wars docu.

<comment><USER15> If you believe in karma then you know this doesn't bode well for future Americans. I doubt the next few generations of Pakistani will like them.

That said there's so much room for improvement at this point. Eventually people are going to start losing faith in these 20th century institutions and ideas, and hopefully the Millennials and future generations will fix it.

Unfortunately for the baby boomers and gen x, history will look back on them as morally bankrupt, hypocritical and selfish.

<comment><USER14> The psychological precept of projection on an institutional level effectively inspiring terrorist behavior, to further continue what the institution was doing. It's as diffuse and pointless as Vietnam.

</comment></comment></comment><comment><USER16> People are framing this as a coverup story.

It is that, of course.

But the _reason_ it has happened is because the executive branch of government is fighting to preserve its power, even across party lines (ie, the Obama Whitehouse is covering up things that happened in the Bush Whitehouse).

Coming from somewhere with a Westminster system of government I find that dynamic quite interesting. Clearly in this case it is bad, but I do like the way the US system isn't as bound along party lines as Westminster systems usually are.

</comment><comment><USER17> Next time we get an opportunity for a constitutional amendment, I suggest mandatory death penalty for any official found to have condoned or covered up the use of torture.

</comment><comment><USER18> Is "torture" here waterboarding only or something even worse? I'm not condoning waterboarding, but it's already unofficially common knowledge. What other "enhanced interrogation techniques" were used under approval?

<comment><USER19> Sleep deprivation, which was subsequently "overused." I put that in quotes because "too much torture" implies accepting some torture.

</comment></comment><comment><USER20> I'm almost sure there is no way this will lead to blow back - no way this comes back to us. /s

</comment><comment><USER14> This might be a completely crazy thought:

Given technological enablement, why cant govt be more run as a StackOverflow tempered by the elder wisdom of the Supreme Court? Rip the executive branch out and make the president more of a city manager than the political emperor. Absolute power corrupts...

<comment><USER21> You mean Direct Democracy? I suspect folks here would be even more unhappy with policies under that regime.

<comment><USER22> > folks here would be even more unhappy

Maybe. But we could have a constitutional direct democracy (to provent the policies which would make us unhappy), in addition to having smaller countries. In the UK, for example, making the counties into states like in the USA, but with direct democracy and rather than having a centeralised government for the whole country have a EU-like meeting as though they were seperate countries. It's a merky idea, but that's what I'm currently in favor for. We should be able to call a referendum to get rid of certain laws but maybe the government should continue to create the laws as means of reducing idiocracy (like in Switzerland, but even that has dumb laws being passed sometimes, but it by far has more personal freedom than in UK/USA in my opinion).

I hope that makes sense, I'm not good with english.

<comment><USER14> We need more apolitical city managers getting things done and fewer Henry VIII's playing figurehead and having mercurial power to chop heads on a whim (ie JSOC).</comment></comment></comment></comment>


A Visual Introduction to DSP for SDR - <AUTHOR> http://visual-dsp.switchb.org/ <comment><USER2> Thanks, I found this to be very useful! I've been trying to learn about physical layer networking and been reading a communication systems textbook (the one by Haykin), and being able to visualize the different transformations on signals was super useful.

The section on FIR, IIR, and how to make high-pass and low-pass filters was also useful to me. I have a decent math background, so I'm finding one of the hardest parts of working through an intro communications textbook is figuring out the EE jargon (in-phase and quadrature, narrowband and wideband, etc).

</comment><comment><USER3> video presentation by the author: [https://youtu.be/DUGr_Z04SKs?t=12m32s](https://youtu.be/DUGr_Z04SKs?t=12m32s)

I highly recommend whole Cyberspectrum series, or attending live if you are in the area.</comment>


Why nerds are unpopular? - <AUTHOR> http://www.paulgraham.com/nerds.html

<comment><USER2> Even now this is probably the single worst essay PG has ever published, and he's written some stinkers.

Nerds weren't unpopular in school because _they were actually even cooler than everyone else_ , and didn't want to waste their time stooping to everyone else's debased level of communication and friendship. That's an absurd fantasy.

Nerds are unpopular in forced social settings like secondary schools _because they're huge assholes_ , the kind of people that even 25 years later write essays about how really it was everybody else's fault that nobody got along with them.

Very few nerds come to understand this, the only media I've seen that gets it right was this: <http://en.wikipedia.org/wiki/Reunion_(30_Rock)>

<comment><USER3> As one of those nerds who didn't get along with people as well as I wished in high school, I am kind of dreading the reunion. I have had a few awkward get- togethers with people I knew as a child before who remember me in ways I wish they didn't, but high school reunions are on a different scale. On the other hand, in some ways I relish the chance to show folks that I'm not the same as I was.

<comment><USER4> I'm assuming you're from the US and that attending a school reunion is a big deal. But as a non-US person who didn't even attend his university graduation ceremony I urge you not to go if the idea bothers you in the slightest. Who gives a damn about those people you went to school with? Look forward to your future and all the interesting people you will meet there.

<comment><USER3> I give a damn about the people I went to school with. Sometimes it's possible for aspects of good experiences to be uncomfortable. C.f. the nervousness of a groom on his wedding day, or the experience of a soon-to-be-mother as she goes into labor.

</comment></comment></comment></comment><comment><USER5> People who self identify as nerds never nerded out on being likable and sociable. They're skills that are easy to learn as anything is.

</comment><comment><USER6> I'd wager it also has much to do with nerds not knowing how to be 'dumb', and thus, not being able to forge meaningful connections with people of lesser mental capacity.

Having interests and vocabularies that are alienating to people who struggle to keep up can often do just that.

<comment><USER7> ...or it has a great deal to do with "nerds" acting like what you posited has any real basis in reality.

Even 'dumb' people can smell a douche from a mile away. Probably better than the socially ill-equipped "nerds".

<comment><USER3> The other issue, at least at my school, was there were at least as many smart, non-nerd people as nerds. And nerds could be real fools. But nerds definitely have a habit of overestimating how smart they are compared to other people.

</comment></comment></comment><comment><USER8> Repost of an old essay; Yahoo Answers style title. We can do better than this.</comment>


Wireless power system shown off - <AUTHOR> http://news.bbc.co.uk/1/hi/technology/8165928.stm

<comment><USER2> I'm glad to see they at least mentioned Tesla at the end of the article. It's only been 100 years since he was doing this stuff and we're just now catching up to his work.

</comment><comment><USER3> That's incredibly cool. I wonder, though, if these things produce a strong enough magnetic field to interfere with radios, cellphones, wireless internet, etc.

<comment><USER4> And pacemakers, perhaps?</comment></comment>


Siri's Last Remaining Cofounder Is Out at Apple - <AUTHOR> https://www.theinformation.com/articles/siris-last-remaining-cofounder-is-out-at-apple <comment><USER2> Ooh I wonder what Vipul is up to next...</comment>


Show HN: Get 3000 Mobile Apps  Contact Information Daily - <AUTHOR> http://growamp.com

<comment><USER2> Hello Kumar, I am interested, is there any free trial for HN users.</comment>


How Pandemics Change History - <AUTHOR> https://www.newyorker.com/news/q-and-a/how-pandemics-change-history <comment><USER2> If locking down a whole city - "cordon sanitaire", doesn't work, why did Italy just do so? Do they not have the same public health experts, or were they educated at different schools.

<comment><USER3> What I heard is that it does not stop the virus, but it does slow the spread, which is key considering that we are currently in a flu season. If 40% of the population is going to get infected, it's better to deal with them over a couple years than have them show up all at once.

<comment><USER4> actually I wonder if that 40% still holds given the recent news that the study showing that it could be transmitted by asymptomatic people wasn't correct (although I guess that doesn't mean it can't be transmitted by asymptomatics, only that we are back to uncertain)

Then again, the world is not really structured to letting someone with light fever lay in bed for two weeks so maybe it's the same thing.

<comment><USER5> The references I have found for "the recent news that the study showing that it could be transmitted by asymptomatic people wasn't correct" are all over a month old, while the references I find for asserting that new evidence is confirming asymptomatic transmission is in fact happening are only a week and a half old. Can you help disambiguate?

<comment><USER4> I saw a an article yesterday (I believe it was linked here on HN) it was on some science site which said basically that everyone was on agreement that asymptomatic transmission happened because of this study that was done a while ago but it turned out the study had an improper methodology and the lady they thought had been asymptomatic (some Chinese lady visiting Berlin IIRC) had in fact had light fever and weakness.

However this does not mean that asymptomatic transmission does not happen, the article said that the study had been supposed to be true for confirming what a lot of people had suspected.

I can't remember the article, I didn't bookmark, also I'm not sure what computer it was on.

</comment></comment></comment></comment></comment><comment><USER6> [https://archive.md/PxTSX](https://archive.md/PxTSX)

</comment><comment><USER7> [https://www.evergreenhealth.com/coronavirus](https://www.evergreenhealth.com/coronavirus)

From the doc above, CDC estimates 5% Nationwide will require ICU care. That's 18.5 million people. We have 100k beds. The US medical establishment does not have the surge capacity for an epidemic of this scale. All of our manufacturing is in China too - and medicine and semiconductors and just about everything else.

Only a monumental Civic movement will make containment possible and, as the article suggests, the pandemic will expose the rot that has gutted this country over the last few decades, as the system shuts down in an attempt to contain the pandemic, when the hospitals are quickly overwhelmed.

This is undoubtedly a historic event. Based on the other countries this has happened in, we are 1-6 weeks, most likely 1-3, away from full outbreak and the start of widespread business closures and possible food scarcity in some regions. Stores and truckers may be hard to keep open if no one wants to risk getting sick.

<comment><USER8> If we don't slow this we will overwhelm ICUs, but your math is all wrong. You assume every single American is exposed, every American contracts the disease, and every American develops symptoms at exactly the same time. That is flatly wrong.

<comment><USER9> Here's the right math afaik. Over 15% of infected people need a hospital bed with oxygen to survive (that's the important number, not just those who need ventilator). Doubling time is a week or less. Hospital stay is two weeks or more. Infections should slow down once half the population is infected. We can mostly ignore the time from infection to hospital, because it's a constant plus a spread that's shorter than hospital stay. So at peak load, 50% of the population have been infected and passed the initial period, 75% of those have passed the initial period within the last two weeks, and 15% of those need a hospital bed to survive. That's 5% of the population or more. Hospital beds are way fewer than that, so most of these people die.

The only hope is to slow it with non-medical measures. Check the progression dashboard for your country: [https://coronavirus.arik.io/](https://coronavirus.arik.io/) You can see which countries are serious (most of Asia - graph looks linear) and which aren't (US and most of Europe - graph looks like a hockey stick).

<comment><USER10> Where did you get that 15% number from ? From my understanding, a huge number of people infected by the virus are asymptomatic and go completely undetected. Given that, any estimation is clearly really hard to make, right ?

<comment><USER9> [https://www.who.int/docs/default-source/coronaviruse/who- chi...](https://www.who.int/docs/default-source/coronaviruse/who-china-joint- mission-on-covid-19-final-report.pdf)

> _Most people infected with COVID-19 virus have mild disease and recover. > Approximately 80% of laboratory confirmed patients have had mild to moderate > disease, which includes non-pneumonia and pneumonia cases, 13.8% have severe > disease (dyspnea, respiratory frequency ≥30 /minute, blood oxygen saturation > ≤93%, PaO2/FiO2 ratio <300, and/or lung infiltrates >50% of the lung field > within 24-48 hours) and 6.1% are critical (respiratory failure, septic > shock, and/or multiple organ dysfunction/failure). Asymptomatic infection > has been reported, but the majority of the relatively rare cases who are > asymptomatic on the date of identification/report went on to develop > disease. The proportion of truly asymptomatic infections is unclear but > appears to be relatively rare and does not appear to be a major driver of > transmission._

<comment><USER11> The article says 'laboratory confirmed patients'. Because the large majority of cases are mild (this is also why the disease spreads so effectively), it makes sense to assume there are people who went through the disease and were never tested.</comment></comment></comment></comment></comment></comment>


China bans all government departments from using US-made technology - <AUTHOR> https://www.engadget.com/2019/12/09/china-bans-all-government-departments-from-using-us-made-technol/ <comment><USER2> Just purely hypothetical conjecture here: what would the consequences be of the USA banning the use of any goods or services coming out of China by US companies?

I'm assuming the fallout would be economy-shattering for both parties, but I'm curious just how that would play out.</comment>


Why We Care About Inclusivity - <AUTHOR> http://steelcityrubyconf.org/blog/2012/05/08/why-we-care-about-inclusivity/ <comment><USER2> I like seeing stuff like this. I especially like the explicit call out of vendors and sponsors who too often get a free ride.

It makes me more likely to attend the event - and I'm saying that as a white, middle-class, middle-aged male developer.

Because, quite frankly, I'm getting too old and tired to deal with the crap boys-club behaviour I occasionally encounter at technical events. I certainly don't see it at the majority of events - but I see it far too much. And since I am a white, middle-class, middle-aged male I'm probably not seeing all the crap that does happen.

Getting a guarantee that the organisers aren't going to stand for it will encourage me to attend their event. Hopefully it will encourage some of the folk I know who've stopped attending technical events due to repeated asshattery. With any luck it will self-filter some of the asshats of the world from attending too.

</comment><comment><USER3> Just to counterbalance all the negative commenting going on in this thread, I think that this is a great step forward. This is setting the bar for future conferences in tech.

As a community, we have a huge opportunity to bring in a new generation of people into our field. We will squander that opportunity if programmers and startup workers get stereotyped badly. To me, it's not about the details of the policy, it's the fact that the organizers care about the issue and are doing something to signal that much to their attendees.

I have a hard time empathizing with anyone who claims that such a simple policy is a bad thing. I don't know anything about the posters of those sentiments and their backgrounds. In the end, we should treat people the way we want to be treated, and I don't want to be harassed. That's the end of the story for me.

</comment><comment><USER4> Great. Now I have to avoid the elevators -- if I go in and a female feels harassed by being "trapped" with a guy in an elevator I get kicked out. If I don't, I get kicked out because I won't share an elevator with a female.

Not to mention the crap about respecting peoples religion. It is literally impossible to do that while being inclusive of LGBT people since homosexuality is an abomination in Christianity and Islam (or Islamic customs) mandates separation of the sexes. Not to mention that religion is a choice, whereas the race you were born isn't.

I am not advocating tricking muslims to eat pork at the conference or anything, but some groups happen to complain a lot over relatively insignificant things.

And in the end the goal is not inclusivity. It is the sharing of code, tools and practices related to these things.

<comment><USER5> I'm from a huge Catholic family and my life is full of people who (a) go to church and (b) are horrified at discrimination over sexual orientation. I'm sure there are plenty of Muslims who are equally frustrated over being automatically judged by the standards of the worst members of their community.

Similarly: I know plenty of people with moral dietary restrictions --- and the hipster-friendly vegan mentality is surely more common than Kosher and Halal/Haraam --- who don't make a giant stink over pork being served at conferences. I don't keep vegan, Kosher, or Halal, but I'm not enough of a close-minded idiot to _literally be offended_ that those people exist.

Incidentally: accused of harassment just for getting in an elevator with someone of the opposite sex? Huh?

<comment><USER6> _Incidentally: accused of harassment just for getting in an elevator with someone of the opposite sex? Huh?_

He's referring to an incident where a conference speaker had drinks in the hotel bar with other attendees and at 4am said she was tired and left to go to her room. A man left the bar and followed her into the elevator and only after being secluded asked to continue talking with her in his room. edit: Found the video [http://www.youtube.com/watch?feature=player_detailpage&v...](http://www.youtube.com/watch?feature=player_detailpage&v=uKHwduG1Frk#t=241s)

Her point was that his approach made her uncomfortable. He had the opportunity to speak to her in a public place in the bar but chose an elevator.

I think he chose the elevator because it was less stressful to approach a stranger with no one to witness a probable rejection. Of course it made it more stressful for her to turn down a stranger while trapped alone with him.

She received some serious backlash from men who think it was perfectly acceptable to tail a woman into an elevator to engage them in conversion while they are trapped with you, and she would be completely wrong for feeling threatened.

Coincidentally it's the same type of guy who would have told her it was her fault for getting attacked if the man had raped her.

Edit: Also, I can't believe HN is supporting tomjen3's comment. It's borderline parody, but not.

<comment><USER7> > _Coincidentally it's the same type of guy who would have told her it was her > fault for getting attacked if the man had raped her._

You're way over the line with that one. It's one thing for a man to think, "I don't owe it to women to walk on eggshells around them." That view might be a bit naive, but it is a very different and much less despicable thing than supporting rapists and blaming rape victims for what happened to them.

I thought what he did was poorly considered, but he didn't show any ill intent, so it's very unfair to associate him with men who harm women. Why do I care about this? Because drawing that association actually plays into rapists' common delusion that trying to rape women is a normal and acceptable thing. It is important to draw the line between behavior that is merely inconsiderate and behavior that's actually evil, even if you dislike both.

<comment><USER6> I agree with most of your comment, thank you. It was a good response to what I wrote.

> _so it's very unfair to associate him with men who harm women._

I wasn't associating the person in the elevator with people who victim blame. I was speaking of people who responded in a backlash to her video describing the incident.

Allow me to expand on that line you quoted to clarify.

Let's take this comment, for instance:

> _The reason there was a huge shitstorm over it was that all he did was to > ask -- he didn't do anything else._

What he's doing here is invaliding her discomfort. He's implying she should have some way to detect a rapist and her danger-detection is faulty. She shouldn't have been uncomfortable _because he didn't rape her_.

It only works in hindsight and it's "not" victim blaming only because she wasn't victimized.

Claiming a person should know someone _is not_ a rapist necessarily requires thinking a person can know someone _is_ a rapist.

edit: removed repetitive sentence for clarity.

</comment></comment></comment></comment></comment><comment><USER8> > We wanted to increase the likelihood of attendees seeing people who they > share something in common with

Great. Steel City Ruby Conference thinks that the color of someone's skin or the shape of their genitals is the way that audience members might share something in common with a speaker.

Personally, I care a lot more about whether a speaker shares my interest in coding, entrepreneurship, etc.

Beyond that, sharing interests in reading materials, history, woodworking, or gaming might be nice.

But, no, what we get is racism and sexism: "We think the only commonality worth talking about are the superficial physical ones".

I think Martin Luther King would be sad about how far short these folks have fallen from the goals he set out.

<comment><USER9> When the problem is murder, and you adopt a policy that condemns murder, you don't call the policymaker a murderer. The first action (murder) constitutes taking someone's life, and the other (the policy) amounts to a prohibition on that. They're opposites. See?

> But, no, what we get is racism and sexism: "We think the only commonality > worth talking about are the superficial physical ones".

You do realize that there is a very real problem with sexism, right? That is, there are people who are already behaving badly on the basis of superficial physical differences. If you can step back from what you've written, maybe you can realize the absurdity of labeling an anti-harassment policy as "sexism and racism."

In short: chill out. If you're at the conference for the speakers, then this policy isn't about you. If you're there for the booth babes, then you're the type of brogrammer being targeted, and your comment would then make complete sense. I don't think that's who you are, though, so seriously: chill. This anti-harassment policy isn't sexism.

<comment><USER10> > _When the problem is murder, and you adopt a policy that condemns murder, > you don't call the policymaker a murderer. The first action (murder) > constitutes taking someone's life, and the other (the policy) amounts to a > prohibition on that. They're opposites. See?_

When the problem is not X, and your main policy is "condemn X", then you aren't addressing the real issues behind conference attendance, etc.

So I'd argue the whole "harassment"/"sexism" thing is an overblown out of proportion thing, and I'd rather hear about your bloody actual content.

Not to mention that the me-too emphasis on "inclusion"/"sexism-fighting" etc fad sends people away. I want to come there to learn about Ruby and have some nice chats with other developers, etc, not to fight social ills the presense of which I might not even agree with in the first place ("Oh, someone show some slides that included some humorous sexual innuendo in a programming conference, we must stop this sexism and condemn it for all eternity"). If someone stomps an ant or bites a bat a la Ozzy in his next presentation, will we also get the obligatory PETA references in every conference program?

> _You do realize that there is a very real problem with sexism, right? That > is, there are people who are already behaving badly on the basis of > superficial physical differences._

Superficial as regards to programming and intellectual capacity. Because, in other ways not only are they not superficial but an extremely powerful biological mechanism is at play regarding those differences. I.e men are attracted to women and vice versa, and this is even how the whole species (including conference organizers) currently exists.

</comment></comment></comment><comment><USER6> Great to see man-child behavior being so directly addressed in their anti- harassment policy.

<comment><USER11> True, but it's also a shame that it has to be addressed at all.

</comment></comment><comment><USER12> I hope this pans out; the Ruby community has historically had a lot of behavior at conferences that isn't just slightly offensive, but genuinely disgusting.

In general I often find myself on the "the line was blurry, the intent was not to offend, so let's educate" side of things, but when there is a track-record of behavior like I have seen, something set out in black and white like this is clearly needed.

</comment><comment><USER13> They have discovered buzzwords!</comment>


The Octoverse in 2012 - <AUTHOR> https://github.com/blog/1359-the-octoverse-in-2012

<comment><USER2> Humbly started to use github on a daily basis only a year ago. It was one of the best decisions I made as a programmer. Being surrounded by so many talented people, so many great projects, reminds one that there will always be better coders out there and that collaboration is one of the best ways to improve hacking skills on all levels.

</comment><comment><USER3> Slightly off topic but this project is listed in one the 'top lists' in the article and I haven't heard anything about it before: <https://github.com/saltstack/salt>

Looks interesting, a quick search on hnsearch shows a post from ~6 months ago that didn't seem to get any attention.

Anyone have any experience with salt in comparison to Chef/Puppet/Fabric setups?

<comment><USER4> I've deployed it for a former company as well as personally for a variety of projects. It's extremely quick to get up and running, and as libcloud integration gets better, it's been providing me with a cloud platform-neutral way of deploying/maintaining systems.

It requires less time invested than fabric for me. Most of the time, the batteries included in salt are enough. When they aren't, it's the same amount of work to maintain as fabric, but salt tends to save me some time building pieces fabric wouldn't provide.

If you maintain multiple linux distros, the templated config files make smoothing over differences in package names or locations a breeze.

If you need to maintain Windows-based stuff, salt can be setup against Windows Server in a manner that wasn't too painful. This was extremely handy when consolidating management of legacy windows stuff with newer linux stuff from the same web gui.

Speaking of web gui, I don't know of any that have significant steam for salt. That said, doing "import salt" in django/flask/$framework and receiving json or pickled data is pretty easy.

</comment></comment><comment><USER5> I'm surprised gists haven't grown that much in use. Such a great feature.

<comment><USER6> I've used it much more often in conjunction with <http://bl.ocks.org>. I think if there were a built-in interface for serving gists in that manner it'd see more use.

</comment></comment><comment><USER7> Why the massive spike in pull requests in March-April? And the spike in creates in July?

<comment><USER8> The spike in repository creation in July was from the PLD Linux Distribution joining GitHub. We're looking into the pull request spike in the spring, too.

</comment></comment><comment><USER9> Why is it called the Octoverse?

<comment><USER10> It is the entire dominion of the mighty octocat.

<http://octodex.github.com/>

</comment></comment><comment><USER11> From the emoji frequency graphs at the bottom, how did they get a trollface emoji? Is that a joke?

</comment><comment><USER12> Interesting that London is ahead of San Francisco and New York.

</comment><comment><USER13> emoji in commit messages? who'da thunk it?</comment>


Ericsson Expects Cellphones With HD Video Capability by 2012  - <AUTHOR> http://techon.nikkeibp.co.jp/english/NEWS_EN/20081107/160903/

<comment><USER2> amazing roadmap...</comment>


Turns Out Yetis Are Really Just Bears - <AUTHOR> https://www.geek.com/science/turns-out-yetis-are-really-just-bears-1724569/ <comment><USER2> I can see people mistaking a bear for something else. They don't look much like bears once their hair style is altered.

[https://thewholegardenwillbow.files.wordpress.com/2011/06/im...](https://thewholegardenwillbow.files.wordpress.com/2011/06/img001862.jpg)

<comment><USER3> That doesn't look like an ape either, though. And there probably aren't many naked bears running around the wilds of Tibet.

There are three kinds of evidence in play here:

1\. Artifacts claimed to come from yeti. High probability of being fake, whether the people who possess them are aware of that or not.

2\. Physical evidence collected in the wild. High probability of coming from a more common animal, like a bear, than something less common.

3\. Sightings, whether directly by the reporter, or from a first-hand witness describing to a reporter. Impossible to prove, but there are a lot of reports. Rule out everything that can be mistaken identity or fraudulent, and there are still a lot of reports. There are many consistencies across these reports that can't be explained as simply common-knowledge about expected behavior and characteristics. That's not proof, but it lends credence to the possibility of a real creature.

</comment></comment><comment><USER4> I know this is for a casual audience, but claiming that because bears and dogs are both caniforms, "bears are, in essence, massive, really distantly related dogs," is just... frustrating. It's fine to simplify, but it's so easy to avoid blunt inaccuracy in this case.</comment>


VidarDB PostgreSQL Extension Implements a Foreign Data Wrapper (FDW) for RocksDB - <AUTHOR> https://github.com/vidardb/PostgresForeignDataWrapper <comment><USER2> Hey there, just wondering what novel solutions this brings to the table? Interested to hear what this solves better than other options.

<comment><USER3> Interestingly, someone posted this here. I am the contributor of this repo. This repo generally introduces LSM-tree into PostgreSQL via foreign data wrapper approach. Your question may turn into "what's the pro of LSM-tree over B+tree(PostgreSQL)". One sentence for this, fatser data ingestion. You can check my talk in PGCON2020 few days ago. I think it will upload in Youtube.</comment></comment>


Keep Controversial Git Opinions to Yourself (And Out of .gitignore) - <AUTHOR> https://devonmoss.com/keep-it-to-yourself/ <comment><USER2> I can't wait until you discover that you can put .gitignore into a subdirectory and also add the .gitignore to itself (e.g. by using an asterisk or adding it explicitly).

<comment><AUTHOR> Mind Blown</comment></comment>