"100% of our production system is now running Go" - <AUTHOR> https://groups.google.com/d/topic/golang-nuts/hC0aJ8IASi4/discussion <comment><USER2> Creator of SASS and Haml now using Go for whole production system.

When asked about surprising things about Go, its creators have said that they expected to recruit people from c++ communities, instead it seems to be more ruby/python people.

<comment><USER3> I think that Mozilla's Rust is aiming squarely at C++ developers, whereas Go is more of a Java replacement.

And it's interesting to see Python and Ruby being squeezed lately, from various directions; Clojure, Go, other languages. Since Python went mainstream and started being picked up for serious projects, it naturally came under the spotlight a lot more than it had previously, and I think many people have started to see some of its warts. The transition from version 2 -> 3 wasn't exactly a smooth one, either. Furthermore, although Python is a pretty good all-round language, it doesn't really excel at anything in particular, unlike for example Perl which continues to maintain a strong niche in the areas of text processing and system administration, despite its popularity having fallen away in some of the other areas it was formerly strong in.

In my case, although I have recently moved from Perl to Racket for larger and/or more complex work, I still use Perl a lot for small, simple scripts (which constitute most of my programming). A couple of the Java guys I know switched from Python to Clojure for scripting tasks (I could never convince them to like Perl..), and have started to take an interest in languages like Scala and now Go for more substantial projects.

For many years now, Python has been the fresh, fun challenger going up against older (and perhaps clunkier) languages, whereas now things seem to be shifting and Python may soon find its role has reversed and it has become the old, crufty language.

<comment><USER4> "I think that Mozilla's Rust is aiming squarely at C++ developers, whereas Go is more of a Java replacement."

I basically agree with this as a Rust developer (although I'm not sure about Go being in Java's niche; I think of it more as in node.js's niche -- highly scalable web apps). Early on, I think both Rust and Go were thought to be targeting the same segment, but it turned out that we really weren't. Personally, I'm completely fine with that; different language designs are appropriate for different roles. The huge amount of work that we've done to make non-allocating and manually-memory-managed code easy, predictable, and type-safe is totally overkill for Go's niche, for example, while for games and web browsers this sort of thing is essential.

<comment><USER5> As someone who's tried (and failed) to learn Rust in the past:

I'm going to elide any commentary about the syntax for now, as I know why it is the way it is (the type system/annotations). I'm basically just going to expound on one thing for the sake of emphasis.

For the love of god make Rust more _accessible_. I don't mean dumbing down the type system or abandoning regions (I really hope that works out). I mean the frickin' _documentation_. Digging through the core libs to figure out how to dp fairly common case stuff is obscene.

Part of the reason I like to tinker with Go in my spare time is that it's _extremely_ hygienic, clean, cheap, and cheerful.

Look at the way the "go" binary works, it does everything. It does builds, automatic formatting of code, the works. And it just "works".

On top of that, I'd consider getting somebody more knowledgeable about Rust and get them to team up / pair-document with somebody who is a goddamn dumbass like me and start building tutorials/documentation together.

I can't imagine the language's syntax and features are so nascent that tutorials and docs for core functionality/libs would be out of the question, you're already prototyping that web browser engine.

Documentation is a UX problem, like syntax. Syntax _alone_ crippled Erlang, please don't let obscurity harm a language I am very excited about.

If there's any way I can help (maybe a trail of bread crumbs/notes from me as I try to learn it?), let me know in this thread or via email.

<comment><USER4> Yes, the docs are awful at the moment. It's mostly a question of making sure things are stable before we commit to writing a lot of docs; we absolutely need better ones. The standard library tends to use the bleeding-edge features more than user Rust code (as it contains implementations of core traits and whatnot), so its churn is high. Despite what others have suggested, I don't think it needs a total rewrite, but various names should change.

A "go"-like binary is on the roadmap; it's mostly a question of refactoring. We have a pretty printer, a doc generator, a package manager, and a compiler (all in various stages of completeness); the trick is to just bundle them into one nice package.

A trail of notes would definitely be helpful, to see what the initial hurdles are for beginners.

From what I've seen the biggest problem is that 0.3's syntax is totally different from the unreleased 0.4 (due to be released next week). Most people, understandably, build from the packaged 0.3 and none of the examples in the documentation work. 0.4 contains the syntax we're committing to; most of the changes from then on should be backwards-compatible with it (unless you use the deprecated stuff, which we're adding warnings for).

<comment><USER6> (due to be released next week).

I will be eagerly looking forward to that!! Is the 0.4 version a step ahead of the past alphas? Is it finally becomming a beta?

<comment><USER4> My mistake, it's actually 2 weeks ("mid-September" is the target date). Still close. It's still an alpha, but there are _huge_ changes, and most importantly, syntax becomes "slushy" after 0.4 (not frozen, but massive changes have a high bar to clear).

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I'd be really curious to know what their "800 million requests a month" means. When we actually added up numbers a while back, we were doing around 250 million requests to our Python machines/day, and we only had 200 servers (which included dbs/etc), that was around 3-3.5 billion pageviews a month IIRC. We now have 300 machines and do about 5 billion pageviews, but that completely ignores the huge amounts of requests to our realtime stream servers and our API (which get shit on every "pageview" at least once).

<comment><USER8> It's really hard to compare different systems without knowing what kind of complexity each pageview engenders in terms of backend processing.

At one end there's flat HTML files, where you could serve 800 million pages/month from maybe a single particularly beefy server; at the other fully- dressed SOAs and CEPs and your uncle's pet dog rover performing multivariate regressions, meaning you need 9,000 servers.

<comment><USER7> I'm hoping they'll provide some more insight into what the breakdown of tasks are between the machines, and if that 800 million number is actually correct.

It seems extremely high for what my absolutely-no-idea-what-these-sites-could- possible-need-that-many-servers-for thought process can fathom.

</comment></comment></comment><comment><USER9> I want to try out Go, but the problems exposed by the garbage collector on 32bit systems scared me away.

Is that still the case with the latest version 1.0.2 ?

Also, is there any chance for a precise generational garbage collector to get implemented for Go? As far as I know, pointers make the implementation of precise garbage collectors difficult.

<comment><USER10> AFAIK, yes it is still the case (although somewhat slightly improved), but precise collector is officially expected (and being worked on) for version 1.1 . The latter was explicitly said on a Q&A session on Google I/O conference, the video is available somewhere on teh interwebs.

edit: I think it's this one: <http://youtu.be/sln-gJaURzk> ("Meet the Go team"), but maybe some other from: [http://blog.golang.org/2012/07/go-videos- from-google-io-2012...](http://blog.golang.org/2012/07/go-videos-from-google- io-2012.html) (sorry, don't have time to watch them all again now to make sure ;)

<comment><USER9> That's good to know, thanks.

</comment></comment></comment><comment><USER11> How do you run golang as a server? Can anyone point me to a basic tutorial? Is it still running under something like Apache is golang IS the server somehow? If so Wouldn't each http request have to fire up the compiled executable? Isn't that slow?

<comment><USER12> The compiled output will contain your network server. you run the process and it listens on a socket. It is pretty straightforward. Using HTTP as an example, each request will run in a goroutine which is somewhere between a thread and a coroutine.

It is extremely fast.

The main risk is process failure which is very rare but can be mitigated via putting a front end balancer such as nginx or apache mod_proxy. Process recovery and spawning can be managed by another tool such as supervisord.

However, you can run a process happily from init if you desire.

<comment><USER11> I was always taught never to write my own web server since something like Apache has been tested on millions of sites, and you have security experts designing it.

Does writing your own server in Go kind of violate this idea? Are you opening yourself up to re-inventing a web server and repeating decades of mistakes something like Apache has already figured out and fixed?

<comment><USER12> You are correct - you should never write your own web server. In this case, you're not writing your own web server. There is one provided with the standard library which will be embedded into your binary.

You are writing a bunch of handlers (as you would with Apache) and plugging them into the compiled in web server from the standard library.

For network servers, there is standard library support for SMTP, HTTP, normal stream based text protocols etc as well as serialization formatters and parsers for JSON, XML, HTML etc. You should never have to re-invent the wheel.

</comment></comment></comment></comment><comment><USER13> "100% of our production system is now running Go as 95% of our application (C being the other bits)"

So... 95% of their production system is running Go.

<comment><USER14> I guess it's playing word semantic. 100% of their MACHINES are running GO in SOME capacity, while other languages play some roles in other capacity.

<comment><AUTHOR> I interpreted it as meaning that 100% of the code in the critical path is Go, while their greater application also includes some C code.

</comment></comment></comment><comment><USER15> This is a really awkward sentence: "100% of our production system is now running Go as 95% of our application."

I'm curious what the 5% is that they didn't convert to go.

<comment><USER16> Read the whole paragraph. It's C.

"100% of our production system is now running Go as 95% of our application (C being the other bits). Not side bits, but our critical path."

<comment><USER15> I meant "what functionality is the remaining 5%." Not "what language is it."

Basically, once you are 95% Go, what parts are hard to convert to Go to make it 100%

<comment><USER17> Probably binding to pre-existing C libs.

It will take some time to replace 40 years of existing accumulated C libraries.

<comment><USER18> That would be silly. It's silly to talk about the source language of third party libraries when discussing languages you use. 3rd party library code is all object code or bytecode for all it matters to your project.

</comment></comment></comment></comment></comment><comment><USER19> It's really annoying to have to log in to read something on google+, or groups for that matter. I just won't do it.

<comment><USER20> This happens only if you have some Google login cookies already -- if you delete all your Google cookies then you won't be asked to log in.

<comment><USER19> Um. What? Did you just tell me to fuck myself?

<comment><USER20> No, I did not.

<comment><USER19> Along the lines of... <http://howfuckedismydatabase.com/nosql/>. Aka, I shouldn't need to "delete all my Google cookies" to read a post.

<comment><USER21> Can you explain what's going on here?

</comment></comment></comment></comment></comment></comment><comment><USER22> How's the garbage collector these days for Go? Is it close to the performance of the Java GC?

<comment><USER18> It's not as sophisticated, but Go structs are smaller than similar Java objects, so that helps beat the tradeoff

<comment><USER23> I like Go, but this is total nonsense. It does help that you can embed values in a struct, rather than using pointers. But marking everything that looks like a pointer is not efficient. Not having generations does not help.

Go is still very young, a better GC will come, just give it time. In the meanwhile, let's not pretend that the current sub-par generator is as performant as that of modern JVMs.

<comment><USER17> Go code does produce considerably less garbage than Java code.

And with Go if you really care, you can be even more careful and produce close to no garbage.

Control over memory layout is really useful.

</comment></comment></comment></comment><comment><USER24> @enneff Do you know if they are using the default gc compiler, or gccgo which is supposed to have better optimisation?

<comment><USER17> I'm fairly sure they use the main gc compilers.

gccgo does better at some things, but the default compilers do quite well already.

</comment></comment><comment><USER25> _To continue shopping on m.macys.com, please enable cookies in your settings._

Really? in 2012?

<comment><USER26> It's a shopping website. It's sorta hard to do cart management without cookies.

<comment><USER27> They are a good fallback, I think he is talking about using things such as Local storage, session storage, or global storage. Since the site is their mobile site I see no reason why they aren't using the new technology available to us since most mobile devices would be able to use it. DOM storage seems to be a better fit for shopping carts than cookies anyways.

<comment><USER28> It's not about the shopping cart. It's about all the session data, especially for authentication. While you could use Dom storage for storing a session ID, you would have to send that through to the server with every request which you get for free with cookies.

Additionally, cookies can be marked as http only or even as secure, making it very hard to lose the token by virtue of a fire sheep like, or even just XSS attack.

For that reason, I personally would prefer a site using (session) cookies to one hacking it via DOM storage any day.

And finally, depending on the store you might want to persist the shopping cart between visits- likely across machines. Thus, the cart should be stored on the server and not in DOM storage.

<comment><USER27> Cookies are stored on the client just like DOM Storage, so nothing is free when it comes to requests and communicating with the server. I understand that both still have their place. Though I generally prefer to use DOM Storage for most things now depending on the use case. I also complete agree about keeping server-side session data.

<comment><USER28> with "free" I meant without additional effort for the developer.

When you set a cookie with a Set-Cookie header, the client will automatically send the cookie with all further requests.

When you put the session-ID somewhere in DOM storage, you have to manually amend all requests with that session-ID - either by appending it as a get parameter or, when you do nothing but AJAX, as an additional request header - but whatever you do, it's considerably more effort.

Also, looking at our logs, I see way more users with DOM storage disabled than with cookies disabled, but that might just be my user base.

<comment><USER27> Alright, thanks for the clarification on "free", I realized that is what you might have meant after posting.

That last bit about your logs is surprising, thanks for that bit of info. I may need to go do the same. Either way I use a storage wrapper so I am accommodating both types of users.

</comment></comment></comment></comment></comment></comment></comment><comment><USER29> Whoah, 500 servers to handle an average of ~300 queries per second? Even if you generously assume they have traffic patterns that sometimes go all the way up to sustained say 5K queries per second... 500 servers? Isn't that like ... terribly wasteful?

</comment><comment><USER6> There was this dart. It somewhat failed, so what they did was, screw up a good systems language so that it sarted looking like dart..

</comment><comment><USER30> Edit: I just posted 3 minutes ago and I'm already in gray text. Wow.

We search with Google, run our phones with Google, run Google's browser, now they want us to write all our code in Google's language. Why Google? What's wrong with Java? Other than the fact that Oracle owns it, I miss Sun. Scott McNealy tried to make the technology world better. Scott, Gosling. Google...why should everything we do all day and night be about Google?

<http://en.wikipedia.org/wiki/Go_(programming_language)>

>> The syntax of Go is broadly similar to that of C

C, seriously? C??!? Why? Why would I want to go back to ... C?

>> Of features found in C++ or Java, Go does not include type inheritance, generic programming, assertions, method overloading, or pointer arithmetic.

And that is a good thing or a bad thing or what?

>> Go allows a programmer to write functions that can operate on inputs of arbitrary type, provided that the type implements the functions defined by a given interface.

Huh? Oh I can pass interface references, ok.

>> A Go interface is best described as a set of methods, each identified by a name and signature.

That sounds like Microsoft's crappy COM from the 1990's.

The code sample on that page shows there are no braces in the if evaluation statements. A wise man, Peter Van Der Linden formerly of Sun's Compiler Group and author of Deep C Secrets wrote about using more braces if needed as explicitness is always better. I agree with that.

At this point, I think I'd rather program in Groovy or even go to JavaScript if I had to, than use Go.

Oh...the language name sux.

Tip, buy Oracle and fix Java or by Java rights from them and fix it, then programming in a language owned by Google when you own so much of our lives now wouldn't be so bad.

PS How does Guido Van Rossom feel about Go?

<comment><USER31> >> C, seriously? C??!?

For those, like myself, that like C and do systems programming. Really never understood why people dislike or fear C so much. It is the foundation for so many systems and libraries.

<comment><USER32> The main problem people have with C syntax is that it's 'old' and 'old' things are bad because new things are better. We're an industry built on fashions. Largely the outcome of the massive success programmers can have without any formal education and so just get by knowing the "best" way to do things instead of understanding why.

<comment><USER33> _There are two kinds of fools: the first kind says "it is old, and therefore it is good"; the second kind says "it is new, and therefore it is better."_</comment></comment></comment></comment>


UDID Alternative for iOS5 - <AUTHOR> https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5

<comment><USER2> Using the MAC address as a unique identifier alone seems like a terrible idea(that is, without other secret, constant data included in the hash, similar to how UDIDs are generated.)

Your device is literally broadcasting your unique identifier to everyone in a several hundred foot radius.

</comment><comment><USER3> It's also quite easy to just grab the MAC address manually: [http://stackoverflow.com/questions/677530/how-can-i- programm...](http://stackoverflow.com/questions/677530/how-can-i- programmatically-get-the-mac-address-of-an-iphone)

</comment><comment><USER4> The point of the UDID was for a unique identifier representing a device, not an application on a device. This project is a bit misleading indeed.

<comment><USER5> Agreed. I wrote a similar technique to overcoming UDID deprecation this morning but the powers that control HN saw fit to ignore it ( <http://news.ycombinator.com/item?id=2908381> ).

My approach is MUCH SIMPLER it doesn't even need MAC addresses are a project under GitHub. Just generate a GUID which is as unique as what this author suggests.

</comment></comment><comment><USER6> Title and project name are misleading. This identifier is not unique per device, but unique per device+bundle identifier. This means different applications on the same device will generate different identifiers. Please, stop upvoting without reading (it's mentioned in the project README).

<comment><AUTHOR> Fixed that.

<comment><USER6> Thanks for updating the title.

</comment></comment></comment><comment><USER7> But how do you know generated UDID won't collide with other phone manufacturer companies?

<comment><USER8> Yeah, this one's a fun issue to deal with, especially on Android where there are some (rather large) manufacturers who seem to forget that UUIDs are supposed to be at least relatively unique. I know of at least one major device line that uses the same UUID for all its devices, however, there are probably more out there.</comment></comment>


Feel bad 'bout friends that didn't sign up. - <AUTHOR>

Here's my situation,I launched a project like six months ago and I asked some of my friends and relatives to sign up and almost half of them didn't. Everytime we met like in a party, they're just saying "Hey how's your site? I haven't look into it yet but maybe next time." So I just whisper to myself "Do they really want to or they're just bullshitting me? I thought friends and family support each other." Does any of you guys experience this too and what are the things you do to deal with this kind of thoughts against friends and families? <comment><USER2> You're being way, way too self centered and naive.

Let's assume you have no interest in local bands. A young cousin of yours starts a band, and gushes about it whenever he meets you. "You gotta come hear us!"

What are you going to say? "No, I'm not interested in your band"? Of course you say "Sure, I'd love to come sometimes."

But now it's a month later and he's hurt that you never came. Guess what? You're busy building your project and his band didn't meet an urgent need of yours.

I'm impressed that you got HALF of your acquaintances to sign on. Count yourself lucky. Yes, they really felt some measure of caring towards you when they were saying they would visit, and probably meant what they said.

No, your service did not meet an urgent enough need to compel them to visit when you're out of their face and they're dealing with their own problems.

I recommend you read the book "How To Win Friends and Influence People". Nevermind the crappy title, the contents are gold. Central message: stop thinking about your needs, and start thinking about theirs.

</comment><comment><USER3> So I write an iphone app that lets people record GPS tracks, it's been out for a year, and I've told everyone. A friend also writes iphone apps. When his launched, I bought it, wrote reviews, and gave him all of our app engine code to put up a quick website about the app. A few weeks ago, he emailed to ask if I knew of a good app to record GPS tracks. Argh.

</comment><comment><USER4> Normal. Most people aren't interested in most of the stuff out there. Your site will be interesting to 1% of the people, you need to go wider than friends & family and try to find the audience that wants to be in your site.

</comment><comment><USER5> I've historically found it more difficult to get people I know to take an interest in my sites than people I don't know.

Even sending out links, I see that they aren't being clicked on.

Then you meet somebody in a coffee shop, and they're interested, and all of a sudden, you see this random person you don't know checking out your stuff.

I've always wondered why it's like this. I think sometimes you don't 'stick' with the people you know because you aren't different. Your friends know you, they know you come up with ideas and build stuff, and only when you strike a nerve with something they want, will you get them to use it.

On the other hand, most people aren't expecting to meet or hear about new and interesting things from a random person they meet, so I think that sticks with them a bit more. It's more novel with a new acquiescence than a familiar one.

Plus, they're wondering what you're all about, if you're all talk, etc. So they take some action.

Just my thoughts.

</comment><comment><USER6> I think one of the first few things you learn about entrepreneurship is that friends and family aren't as supportive as you imagine they might be. They might not use your stuff, and they might even question why you're doing it. Just learn to ignore those and move on. Everyone encounters it. Don't feel too bad.

</comment><comment><USER7> Don't sweat it. If your project is successful, the participation of your friends and family will be a drop in the bucket -- and a support headache.

My friends and family are happy that I'm happy making a living doing what I enjoy on the internet. That's enough.

</comment><comment><USER8> Don't sweat it - that's just what friends do. In fact, friends are quite a bit worse than actual customers for getting feedback. It's much easier to get friends to "sign up", but once they do that, they almost universally log out and forget.

If your experience is anything like mine you'll get more feedback from your first one or two paying customers than all of your friends combined.

I don't even bother telling friends to sign up unless they would be interested in the product because of their work, hobbies, etc. Even then, they're not the most helpful crowd.

</comment><comment><USER9> People in general are very lazy. If they don't have any interest in what you are doing their opinion or feed-back is going to be very poor. So the lack of feedback is not that important.</comment>


Gem install will soon be significantly faster, thanks to tenderlove 💙💚💜 - <AUTHOR> https://twitter.com/tenderlove/status/449699452895240192 <comment><USER2> Every Ruby developer on the planet thanks you for this. Lengthy `gem install` cycles are one of the less fun things about the Ruby ecosystem.</comment>


Some Reflections on VC Investment Decisions - <AUTHOR> http://www.bothsidesofthetable.com/2014/04/27/some-reflections-on-vc-investment-decisions/

<comment><USER2> "I'm dubious of entrepreneurs who key buyer value is highest price. Building a company is hard and the chances of success are low. I'm looking for entrepreneurs that recognize that supportive VCs who bring relationships, experience, perseverance, tolerance and who are unflappable in difficult times are worth their weight in gold. People who solely value highest price as the decision factor exhibit something about their decision-making processes."

^^^^^ The challenge here as an entrepreneur is that unless you work with a VC for an extended period of time like a year, it's very hard to know how much value they're truly going to add. Every VC claims to be the world's most supportive/connected/the founder's friend, but it's very hard to truly figure that out without working with them IMO. As a result, it's easier to just prioritize based on numbers most of the time.

<comment><USER3> Investors are like employees in the sense that you have to actually work and get along with them. Unlike employees, however, you can't fire the investors. So in theory you should be more careful with investors than employees (and we all know to be careful when hiring). I can thus understand if investors view price optimizing as incredibly short sited and a character flaw.

<comment><USER2> On the other hand, investors are unlike employees in that they can be ignored if they're not a good fit/not adding value/worse yet, detracting value. Except if they're on your board.

I guess all I'm trying to say is that it would be cool if there was a way for investors/entrepreneurs to try each other out first.

<comment><USER4> _Except if they 're on your board._

Pretty sure the Author is a "VC" in the sense that he is investing early with a BOD seat in his primary investments. That seems relevant--ie, its not special case--its the base case. Other classes of investor--eg late stage mezanine--is also often priced more competitevly on price alone. And angels are typically not investing quite at the stage where BOD governance is coming into play (pre series A).</comment></comment></comment></comment>


OCaml, Batteries Included 1.0.0 released - <AUTHOR> https://forge.ocamlcore.org/forum/forum.php?forum_id=511

<comment><AUTHOR> A huge project for turning OCaml into a truly usable development platform. I can't wait to test version 1.0.0 .

</comment><comment><USER2> I _love_ OCaml. But its standard library has always struck me as... less than perfect. Batteries is definitely a big improvement though.

<comment><USER3> OMG if Slava Pestov was on Ocaml..

</comment></comment><comment><USER4> non-https link:

<http://forge.ocamlcore.org/forum/forum.php?forum_id=511>

<comment><AUTHOR> Thanks

<comment><USER4> Only because the other one comes with a ton of warnings about expired certificates and exceptions that need to be added.

Weird how they run an https server for a language forum anyway.

</comment></comment></comment><comment><USER5> The Bat* names strike me as a little odd. Does OCaml not have namespaces?

<comment><USER6> The new module organization avoids collisions with existing libraries like Extlib while allowing you to link Batteries' modules selectively, thus decreasing the size of the generated executables.

For convenience, all the modules are also available under the Batteries namespace. In this case, however, all of Batteries' code will be included in the executable --- that's how OCaml's linker works at the moment.

For instance, if you only use BatList in your code (or do module List = BatList to refer to it with that name), only that module will be included in the binary; if you do

        open Batteries

and then refer to the module simply as List, all the other modules in the Batteries hierarchy will also be included in the binary.

</comment></comment><comment><USER3> Windows build already?</comment>


How a computer error helped Deep Blue beat humanity's best chess player - <AUTHOR> http://www.theverge.com/2014/10/24/7056493/how-a-computer-error-helped-deep-blue-beat-humanitys-best-chess-player

<comment><USER2> What I've always found so interesting about this story is how singular a moment this was, where humans and machines could play a meaningful game of chess. For millennia before, a chess-playing machine was nonsense. Today, chess computers so completely outclass human players that mobile phones can win high-level tournaments. There was a period of no more than five or ten years where the best computer could play the best human, and have the result be in doubt, and it happened right around the turn of the millennium.

<comment><USER3> It was really fun at the time. Computer chess enthusiasts were discussing the match on rec.games.chess and analyzing real-time on ICC. PC chess programs could not check as deep as Deep Blue so there was lots of speculation on how good the AI actually was. CrazyBird's (Feng-hsiung Hsu) book is a recommended read.

</comment></comment><comment><USER4> I've always been of the opinion that the computers should have to play through qualifying tournaments to get to a "title" match like this.

IBM had thousands of matches to prep their player and Kasparov had none. This disparity is crazy for top level chess.

I've also never heard about this match being discussed in terms of the FIDE- PCA rift, which may have given the challenger more leverage as IBM could shop between two champions. With a unified chess world, Kasparov might have been able to put the screws to IBM for a more "fair" match.

<comment><USER5> > With a unified chess world, Kasparov might have been able to put the screws > to IBM for a more "fair" match

I'm not up on the details of FIDE vs PCA. However, Wikipedia [1] claims that Kasparov _created_ PCA. So he was actually responsible for the rift. But you're claiming this rift hurt his leverage?

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

<comment><USER4> He was the PCA champ, FIDE had their own champ (or might threaten to, I can't remember). IBM is about to throw a boatload of cash in hyping the event.

From my perspective it would seem anyone claiming to be champion would be under pressure to play or risk having the other league's champion be hyped as the best player in the world by IBM.

I think without the split that Kasparov may have been able to dictate more firm terms. Examples such as requiring previous play by the computer, 3rd party auditing, release of logs afterward, etc...

</comment></comment></comment><comment><USER6> Direct link to documentary [http://espn.go.com/video/clip?id=espn:11694550](http://espn.go.com/video/clip?id=espn:11694550)

</comment><comment><USER7> It's interesting, but it's not news. Nate Silver published this information in his book _The Signal and the Noise_ back in 2012.

<comment> s-phi-nl Link to the chapter: [http://fivethirtyeight.com/features/rage-against-the- machine...](http://fivethirtyeight.com/features/rage-against-the-machines/)

</comment></comment><comment><USER8> "After the loss Kasparov questioned whether Deep Blue's team had cheated in order to beat him, but in a fascinating new short documentary by FiveThirtyEight and ESPN, it's shown that the momentous victory — and the notorious 44th move that led to it — was actually the result of a computer error."

But the video actually says the error occurred in the first game, which Kasparov won, rather than in the second, which he lost and after which he suggested he had been cheated.

</comment><comment><USER9> For a different spin on films about chess-playing computers, check out _Computer Chess_ , a mumblecore mockumentary about a 1980s computer chess tournament:

[http://www.imdb.com/title/tt2007360/](http://www.imdb.com/title/tt2007360/)

</comment><comment><USER10> Can it really be called a "computer error" for a non-deterministic program?

It beat Garry Kasparov in multiple matches, it's probably better than most chess programs at the time.

</comment><comment><USER11> More like.. The Ghost in the Machine.

</comment><comment><AUTHOR> This must be a mite frustrating.

</comment><comment><USER12> why wrong? 1.)correlation does NOT imply causation 2.)psychology of FEAR mode can strike ANY chess player 3.)the computer at that time will lose because it does NOT understand the art of deception and 'feints.' 4.)IBM Deep Blue is moving to poker, which is a MUCH better test.

5.)observations are NOT double blind.

6.)highly useful IMHO (at least for me as a child) is to IMAGINE the opponent is 'genius' and then 'stupid.' Simple thought experiment. Even the dog with low IQ is able to predict the owner's moves.

7.)It's obvious that even basic 'stupidity' is mentioned on HN, the verge and even the Nate Silver book. Why?

8.)time or tempo is important and more so with high level champions. So, 'losing tempo' by 'computer error' or 'harmless rook move' is BAD.

9.)Obviously, it is far worse for a HUMAN PLAYER, since it means that the opponent has lost its train of thought. For Deep Blue it means BAD CODING.

note: based on similarities to my experience as child chess champion.

PS. the definitie book still NEEDS TO BE WRITTEN, including some open sourcing of code.

PPS. generally the only suggestion I can make to improving chess ability is YOGA or relaxation techniques. Why?

the key problem IMHO is stress cause by 'context switching' between frames depending upon 'models.' i.e. model of attack or 'strategic attack' or 'feint attack', etc.

the key question is: the computer does NOT switch between modes but has one global mode, IMHO. as a comparison to human player.

<comment><USER12> addendum martial arts >> kung fu >> styles >> drunken style or erratic movements. information theory >> low Signal to Noise >> SNR or lesson learn - don't make your goal and intention too obvious to the enemy. philosophy >> Art of War Strategy by Sun-Tze >> insert quote here math >> sequential game >> algorithms >> meta and hyper heuristics</comment></comment>


Verimail - <AUTHOR> http://verimail.io/ <comment><AUTHOR> Verimail is a bulk verification tool and REST API that verifies email addresses. For every email address you provide we will perform multiple checks and tell you if it is safe to send emails to this address or not.</comment>


Beam raises $55M for a connected toothbrush - <AUTHOR> https://venturebeat.com/2019/05/29/beam-raises-50-million-for-a-connected-toothbrush-that-lowers-dental-premiums/ <comment><USER2> Communists will steal your toothbrush, capitalists will convince you to use toothbrush-as-a-service, then axe support when the company folds or is bought by Google.</comment>


C++ Value Categories - <AUTHOR> https://ncona.com/2019/11/cpp-value-categories/ <comment><USER2> With all due respect but it looks like a trimmed down copy-paste from cppreference. I dont think they are original themselves, but they don't pretend to be imho. Maybe it's just the same source.

Information-wise it's nothing more and slightly less. So I'd suggest checking the other source.

</comment><comment><USER3> > Lvalue stands for locator value.

Wait, I thought it was for a value that could appear on the "left" hand side of an expression…

<comment><USER4> It is.

<comment><USER5> That would make the term "modifiable lvalue" pointless. You can look it up in the standard.

<comment><USER4> Why? It is definitely from "left" (and rvalue is from "right"). It's pretty obvious.

If you need proof you can look it up in the standard:

[https://stackoverflow.com/a/15765936/265521](https://stackoverflow.com/a/15765936/265521)

</comment></comment></comment></comment><comment><USER6> Worst writeup on the subject I've seen so far.

<comment><USER7> I agree: I do not master C++ value categories, but I am pretty sure there are a few errors. And you don't get to understand much anyway. Does anybody know some better writeup on the subject? It is probably the biggest core C++ topic that I still have to properly digest.

</comment></comment><comment><USER5> > An lvalue is something that occupies a memory location.

Not necessarily. It might also inhabit a register.

> When C++ introduced the const keyword...

As of Stroustrup's first publication of "The C++ Programming Language", C++ has always had the `const` qualifier.

There may be more errors, but this should be enough to discard this writeup and seek enlightenment from a qualified source.</comment>


Happiness is more like poetry than algorithms - <AUTHOR> https://nav.al/math <comment><USER2> This post makes a good point about taking another person's idea of happiness too literally. The same could be said for other words describing internal experiences, like "consciousness". Where I lose the author is where he implies that thinking about it poetically will help get at the truth. It may be that when reading about a happy person's thought process you will absorb bits and pieces to make you happy as well. But it's not obvious at first glance. Is there evidence that reading self-help increases happiness in the long term (for some measure of happiness)? And how does that compare to spending your time reading studies about happiness?

</comment><comment><USER3> Lol. Poetry can be very analytical.

Good poems are meant to be memorized. Good poets often have a very precise methodology.

Reviewers often use the phrase "technical accuracy."

To quote many poets, "Hear this, and pass on."

<comment><USER4> The odd thing is that in school they teach us to dissect poems, going specifically through some authors.

Yet pretty much no poetry resonates with us as students.

It's true that we're young, and we don't have enough life experience to find meaning in those words... but shouldn't the reality be that we should see the world through others eyes? Aren't we empathetic enough at that age, or is that analytical approach that ends up being pointless?

<comment><USER5> Literature teachers try, somewhat haphazardly, to expose students to material that they aren't really ready for. There's no one correct route that will connect with all students. Some will get it immediately; others will connect years later; others will never find it resonates with them at all.

I think the most common approaches aren't very effective. They're taught to treat a poem as a puzzle to be decrypted, as if the poet could have spoken more plainly but chose not to. You're taught to look for "symbolism", because a one-to-one matching of symbols to the real world is easy to talk about. But it didn't help me connect with anything, and I suspect for many others.

A better approach, at least for me, is to take a piece that already connects and then examine why it works. You already know, for example, that popular song lyrics are easy to memorize. Why? What is the structure they're using, and how does that pattern build up more than the same concept expressed in different words? Why did you like Film X and hate Film Y, even when they're superficially similar?

There's no right answer, and that's hard to teach. Especially to students like me, who think of school as "Science and a bunch of classes for students not smart enough to take science." (I suspect that rings bells for many.) I eventually learned that I enjoyed things that were created by those "not smart enough for science", and became interested in how those things worked -- even though there's still no right answer.

I just now have a way to talk about it, lessons that my English teachers tried and failed to get to me. I believe they could have done it better, though what would have worked for me would have failed other people differently.

</comment></comment></comment><comment><USER6> Well, I think the big question is "why can't it be both?"

It seems like Mihaly Csikszentmihalyi has done a lot of research on happiness and related qualities as a kind of "flow" [1]. And this entire, overall process seems reasonably close to the qualities of fractals, which are highly mathematical objects that also have a multitude of rich qualities similar to complex systems in the world[2].

I wouldn't assert that there's a full characterization of happiness as fractals or other math object available now. But it seems like something worth of research, "taking the question seriously" rather than dismissal. It seems like such dismissals often given stunted characterizations of what either happiness or math involves.

[1] [https://en.wikipedia.org/wiki/Mihaly_Csikszentmihalyi](https://en.wikipedia.org/wiki/Mihaly_Csikszentmihalyi) [2] [https://en.wikipedia.org/wiki/Fractal](https://en.wikipedia.org/wiki/Fractal)

</comment><comment><USER7> I always thought of happiness to be in these final passages of Walter Pater's book, The Renaissance:

"Every moment some form grows perfect in hand or face; some tone on the hills or the sea is choicer than the rest; some mood of passion or insight or intellectual excitement is irresistibly real and attractive for us - for that moment only. Not the fruit of experience, but experience itself, is the end."

<comment><USER8> In a similar vein, with regards action:

"He who does his bounden duty without attachment to the fruit of action, he is a yogi, he is a sanyasi" — Bhagavad Gita VI/1

</comment></comment><comment><USER9> Aren't most human emotions more like poetry than algorithms?

<comment><USER10> Almost.

Laziness = minimum spanning tree

Love = merge sort

Sadness = reversing a linked list

But yes, all other emotions are iambic pentameter poetry.

<comment><USER11> This is one of my favorite hn comments ever.

</comment></comment></comment><comment><USER12> >I'm going to conflate happiness, pleasure, peace, joy, bliss, contentment, well-being and more. I don't do it deliberately.

>But at the same time, this is not math. We cannot clearly bound these words. They mean different things in different contexts to different people. So try and get into the spirit of what I'm saying, rather than getting hung up on specific words and details.

Well, acktually... there's a trivial mathematical representation. Represent happiness as a vector. Then you can customize thresholds for each person.

</comment><comment><USER13> Not to be a Negative Nellie here, but when I read the title I expected a bit more substance to the article than a couple sentences rehashing the same idea.

<comment><USER14> Yeah disappointingly trite. Seems obvious on the surface, but also worthy of, dare I say, deeper analysis.

</comment></comment><comment><USER15> Not a fan of poetry, or, happiness.

Happiness, for lack of a better word, is boring.

Happiness is boring in the same way being angry al the time is boring; people evolved to notice change. Every single one of our senses only works by detecting change.

Take smell for example. Your nose detects a _difference_ in the smell of the air. When I burn things in the oven, I get used to the smell after a while but when my wife comes home she says: 'Ahh, cooking again earlier?'

Taste is the most obvious one. Fast for a month then eat a corn chip. You will taste that simple food so deeply you could pinpoint the field the corn was grown in. Now eat a million corn chips. You quite literally won't even taste the last one.

Put a fan on in your office, you'll forget its on. Randomly have someone turn it off and the difference will be a bit painful that change is so obvious.

Gain 100 pounds, you get used to the feeling of it. Lose the 100 pounds, you'll get used to that feeling too. If you didn't, people who were obese would strive to be out of pain. There is pain in being heavy, but you get used to the feeling of your body.

I have heard a version of "Humans adapt" for my whole life. I think it's more than that. I think it's more like 'Humans ride the wave of change." We are so symbiotic with change we don't even notice that change is the thing we both fight and enjoy.

Why do I rewatch episodes of MASH? Because it's both the same and different each time. I watch all eleven seasons over and over and what happens? I notice nuance. That's me detecting change. It's hard to exhaust the nuance because there is just so much of it. I see patterns, like how Hawkeye acts drunk or how Hot Lips manages her hair.

What is hard is FORCING change. That's the tricky bit. Lose the weight, win the lotto, date your dream girl. Now that evolution that has kept you safe by detecting change fights you because you are way outside your comfort zone and what you are used to.

Subconsciously, many of us, would do the things that will help us get back to safe harbor: stifle and defend against self imposed change.

I think focusing on happiness is a poorly defined goal. I'd say to enjoy happiness but strive to have peace.

<comment><USER16> > I think focusing on happiness is a poorly defined goal.

If you think happiness is boring or somehow implies not being able to grieve or feel angry, then you are most likely using the wrong definition of happiness. I think happiness a poorly defined word, allowing you to collapse it into a definition that you saw fit enough to justify ranting about change and evolution.

<comment><USER15> I think you misunderstood what I said so you could accuse me of ranting.

<comment><USER16> An accusation isn't necessary.

</comment></comment></comment></comment><comment><USER17> Article summary "man, happiness is a vibe".

</comment><comment><USER18> Algorithms is more like Happiness than Poetry.

just think about it... wow.

<comment><USER19> I dunno, I think a really elegant algorithm is poetry.</comment></comment>


Offer HN: Hosting security / web site security / web malware removal help - <AUTHOR>

I am really enjoying those "Offer" posts here on HN and already made use of a few of them. Because of that, I would like to offer a little back the community as well.
I have been working with security for many years and I am also the founder of http://sucuri.net, where we specialize in web site security monitoring and malware removal from web sites.
So, if your site got hacked, infected with malware/spam/etc and you need help, just email me at email@example.com. If you just need need someone to check things over, to make sure your security is solid, I can do that as well.
*just make sure to put in the email subject "Offer HN" and send your HN user id, so I know where this is coming from :) <comment> clark-kent If I want to go into site security, web malware detection and protection, is there a book or blog you can recommend to read?

<comment><USER2> Their blog is pretty good: <http://blog.sucuri.net>.

I also like: <http://taosecurity.blogspot.com> and <http://scheneier.com></comment></comment>


Show HN: Collaborative Markdown Trees – write Markdown blocks in a tree - <AUTHOR> https://markdowntree.com <comment><USER2> A description/demo might help sell this better than a static image.

I love markdown but I'm not sure I understand what a "markdown tree" is supposed to be?

<comment><AUTHOR> Thanks for the advice! We thought it should be quite clear from the the image what it does. But probably you are right. We should make an animated gif.

<comment><USER2> Can you explain what you might use it for?

It may just be me, it's 10pm and I've only had 2 coffees today.

<comment><AUTHOR> It could be useful for study notes, programming notes (and code), project planning. It's like a simple Markdown text, but you can nest one Markdown text block to another. You can fold branches you don't need now.

<comment><USER2> I see. So kind of an outliner meets markdown?

<comment><AUTHOR> Yes, or maybe markdown meets mindmap

</comment></comment></comment></comment></comment></comment><comment><USER3> It's an interesting idea. But because we just met, I don't want to provide my Google identity just to learn more. Is there a demo that does not require my identity?

<comment><AUTHOR> Yeah, many people asked this. Well, I think it's time to add a simple email/password registration. Come back in a few days! Thanks!

<comment><USER3> For a 'Show HN', no registration is better for me because I'm just going to put in a fake address and a guessable password anyway...if I bother to provide anything at all.

I'd put it this way, 'Show HN' is a good potential way to get feedback on the implementation and idea for the purpose of improving the project/product. There's a lot of expertise here.

On the other hand, for most projects it is probably about average in terms of garnering emails and page views. PR and marketing aren't going to do better.

Finally, in terms of the project, it looks like something I'd expect to see as open source rather than a product/company. It's cool and potentially useful and if it were rolled into an IDE or an editor it could be a great feature.

But it's harder to see how much I would gain by a _business_ commitment. Collaboration means convincing other people to try it, hoping they find it useful, and then learning how to coordinate use.

<comment><AUTHOR> Opensourcing could be an option in future. For now, we would like to see how people adapt it to their needs. Because it's quite untraditional tool.

<comment><USER3> But for the collaboration part, it reminds me of Emacs org-mode (which uses a different markup language than MarkDown). Being open source, org-mode might be worth looking at because there is a well-established community of users and a tool that does a lot but does not have strong interactive collaboration. On the other hand, feature parity with org-mode would be non-trivial.

There might be a Github like business model there: a business that improves upon an existing tool and grows by expanding the market.

<comment><AUTHOR> Speaking about collaboration, most Linux epoch tools don't have a real collaboration and only synchronize files. Current web apps are much more oriented to conflict-free synchronization. Markdown Tree also is.

Now if you can format branches in Markdown, drag & drop images and other files, keep documentation, study notes, code examples and simultaneously write information with a few more colleagues - that's quite useful I think.

Next version of Markdown Tree should support various embeds like: Youtube, codepen.io, Google maps, etc. That would allow to have a nice workspace for various kinds of tasks. And only web apps are capable of it too.

<comment><USER3> When someone does all those things, what are they making? That is what is the artifact or useful work? For example, a single Emacs org-file can produce calendar entries, a web page, source code files and/or administer a server. It makes stuff that is useful outside of org-mode or Emacs.

In a sense, it captures one of the *nix principles of outputting to conventional interfaces...it makes things rather than being an end in itself. If it had collaboration, people might use it to collaborate on writing a program or a web-page.</comment></comment></comment></comment></comment></comment></comment>


Lessons from 2 months of remote working - <AUTHOR> http://iamnotaprogrammer.com/Remote-teams.html <comment><USER3> I have been working remotely for 7 years now. I love it, but it is not for everyone.

I remember a few months in when it really sunk in that I was actually working out of my home. My house was my office and my office was my house, and everywhere I went I could not get away from work. I had a sudden feeling that the walls were closing in. Lucky for me that went away, and I find that I get more done and am able to be more focused than I was in an office.

A few pointers to those starting to work at home:

1\. If you are like me and tend towards being a work-a-holic, working from home can mean turning your normal 8-10 hour workday into a 24-hour workday. Set limits and work by them get...

2\. ... a home office where you do your work. Make sure it has a door which closes and treat it like an office. You don't have to work in it 100% of the time, but it helps me to have a place I can leave my work. My office is great - I have a big desk, a couch, music, big windows. It is the office that I would like to work in.

3\. Get out of the house. Not to work, but to play. Get around people. It is going to happen - you are going to have a crazy project and find yourself locked in your room for a few days. This is pretty normal, even in a normal office. It can easily become your life since there is no one telling you to go home.

The perks of working from home are great - no commute means more family time, and the you get a personal bathroom and kitchen. If you need to take a 20 minute nap no one is stopping you, and going for a jog is as simple as opening the door and taking off.

<comment><USER4> For me that feeling was immediate, not a few months in, and produced a lot of panic. Having an office with a door that you can close at the end of the day helps tremendously with feeling that you're always at work. Now it's not an issue, I work half the day in my office and half the day sitting on the couch (or somewhere else).

</comment></comment><comment><USER5> > If you're next to someone and they have their headphones on, messaging them > in chat is a more respectful (and productive) way to ask them a question.

This is one thing I didn't like when working in an office. At my last office role we had team chat, but nobody used it, they just walked over and interrupted you if they wanted anything. Happy and free now :)

</comment><comment><USER6> _2.5 billion people in the world have internet access._

But most of them can't have a reliable Skype call. We still have issues calling from Australia on a decent connection to a similarly decent connection in the states.

What we've found - Good connectivity that can hold a reliable Skype or Google Hangout conversation is essential - don't be fooled thinking you can achieve this at a random Internet cafe in Cambodia. You might be able to (!), but plan accordingly.

<comment><USER7> And what is a good strategy for this when deciding where to live (both on macro and micro scale)?

<comment><USER8> Reasonable proximity to a major city is probably a decent starting point.

What's a major city? If we're still in the coarse-estimate mode, I'd say a city most people have heard of.

Maps of internet backbones will help you locate the _ideal_ places, from a connectivity point of view.

[http://www.nthelp.com/images/InternetMCI.jpg](http://www.nthelp.com/images/InternetMCI.jpg)

</comment></comment></comment><comment><USER9> I've been working remotely more often than not over the last four years (a brief 1-year interlude when I was back in an office full-time broke up the streak). I definitely prefer it.

The advantages are too awesome! I get to spend more time with my daughter (I'm a first-time father and she is just turning a year old today). There is hardly anything in this world that makes me happier than spending time with her. If I had to commute to work every day I'd basically see her on weekends and miss out on her every-day life. My parents did that. It sucked for them I'm sure and it would suck for me too.

I am a software developer and so my work is primarily categorized as, "knowledge work." This is a very post-industrial job. Working more hours does not directly produce more "product." Working remotely allows me to take a walk and do some groceries while I mull over the dilemma that has been bothering me. Often I will come back refreshed and with a clear solution. Or I can read a book to my daughter while I think about it. My job requires thinking and generating _good_ ideas (which is a process that requires idleness and spontaneous connections through hunches). A 9-to-5 policy of being in a seat and typing away is not very conducive to developing software (unless you're applying the Shakespeare Monkey Method).

The OP mentioned the disadvantage of spontaneous social engagement. That is a problem I can attest to. However it is one I am willing to give up. I'm not as young as I used to be and it's not terribly important for me to play ping-pong with my co-workers and talk shop over beers. We make up for it by talking shop online during office hours and there are tools such as Sqwiggle which make those spontaneous chats possible.

At first this problem seemed big. I went out less and suffered a lapse in my social graces as a result. However I learned that I was just doing it wrong. Now I find I socialize more than I used to because I'm out in my community working out of coffee shops with other people in the same situation as I am. I meet see local people and we do local things and I've learned to develop a village mentality.

The real challenge for companies engaging remote workers is letting the reigns off. The fear of idleness is a rapacious concept amongst managers and entrepreneurs. You can hear it manifest in expressions such as, "always be hustling," "fail fast, iterate," and the like. However if history and open source have taught us nothing else it is that the condition of the human spirit is towards accomplishment. The goal in finding good people to work with is finding people whose sense of accomplishment shares the same spirit as yours. Even in idleness we unconsciously reach towards that which inspires us.

Remote work is great. Being around people in person is great. We live in a world where this is possible and easy to manage. There's no reason to force people to adopt your standards of living and geographic preferences to work with you.

(We just may be limited to certain national boundaries for the most part due to taxes and the inconvenience of international banking, but hey... walk before you run)

 _Update_

The biggest challenge for remote workers is working with a centrally-located team. The styles of communication need to be more rigorously defined and a part of everyone's habits or else it tends to fall apart. The central team tends to isolate the remote worker because they're so used to just having a hallway chat and forget to share that with the rest of the team. To avoid this everyone needs to agree to share all information and to make it a habit to strike up email threads, create issues and log chats in IRC/Campfire/whatever. Important issues cannot be decided face-to-face over lunch and not documented somewhere. It just doesn't work that way when you have remote workers.

The tools to make communication between remote teams have been evolving at a rapid pace in the last few years. WebRTC, shared documents and better issue trackers... there's almost no excuse anymore not to adopt these habits even if you are a centrally-located team. And if you do adopt these habits there's nothing getting in your way from incorporating remote workers anyway.

<comment><USER10> How do you personally measure "a good day's work?" Is it based on gut feelings or do you have specific hours that you work? Also, do you follow a strict schedule, or leave your day open for "sporadic" opportunities?

<comment><USER9> As to your first question I don't have a good answer. I cannot think of a way to quantify something that I can only intuit about. You can think of any metric by which to measure the progress of a programmer and you will find an endless debates about its usefulness. It's inherently a qualitative value in my experience.

In general though I am motivated by accomplishment. I feel good about doing a good job. It is its own reward. I feel that I've had a _good day 's work_ when I've contributed something worthwhile that has improved the code, the company or my team in some way, even if it's small.

I keep my work days structured around the traditional 9-5. At first it was out of habit but I've since embraced it as a discipline. The difference for me, I believe, is that without a long commute and being stuck in an office far from home there is very little cost associated with following "sporadic" opportunities. I don't leave time out for them because the benefits tend to out-weight the cost of being away from my desk. I can get up and take a walk down to my local café, chat with the barista about local events and pick up some flowers for my wife on the way home. This relieves stress, breaks up monotony and gives me time and space to connect the hunches together in my mind. I may come back from that outing with the solution to my problem or I may not; but at the very least I will be reinvigorated to take on the next set of tasks ahead of me and it cost the team almost nothing and gained quite a bit.

The way I see it my employer was looking for someone who was smart, experienced, creative and responsible. I do everything I can to cultivate that in myself. They're not paying me to trade hours for lines of code. They need someone with my experience, knowledge and intuition to help them solve problems and build a solid product.

If the solution to our problems as programmers could be solved by rote then I'd be out of work and in a different profession.

<comment><USER10> Thanks so much for your thoughts - this is extremely helpful as I'm trying to find balance with remote work.

<comment><USER9> Well if you ever want to chat don't hesitate to look me up.

</comment></comment></comment></comment></comment><comment><USER11> _2.5 billion people in the world have internet access. Statistically speaking, the chances that the best person for us to hire for any position is among the 0.023 billion people in the New York metro area is unlikely._

Of course, we all know that all the good programmers live in SF.</sarcasm>

</comment><comment><USER12> Is it just me? Do you find that working remotely you can get more work done than being in the office with coworkers? The days that I'm in the office working I don't seem to get as much actual work done, because I'm spending most of the day in meetings.

<comment><USER13> I'll generally get more done in 2 hours working from my home office than I would in 4 hours in an office, let alone if there's a meeting as well.

<comment><USER14> Don't forget the meeting that you have to prepare for the meeting; the dreaded pre-meeting. "Hey, Eric, mind if we get together to go over the meeting this afternoon?" And the feared post-meeting. "Hey, Eric, can we chat later about that meeting?" And the email, "Hey, Eric, I missed the meeting. Can you forward me your notes?"

<comment><USER13> I always like the meeting you have about the meeting, then the follow up meeting a few days later.

</comment></comment></comment></comment><comment><USER15> I work a lot from home and what I can say is:

\- you're definitely more productive when working from home and it saves a lot of time

\- communication is much harder

\- traveling and working is difficult and I would not recommend it

\- working from home is a bit depressing over time and you can easily lose touch with the team

For me what works best is a mixture of the two.

</comment><comment><USER10> I'm on my third week of working remotely - Here's what I've learned so far:

1\. Massive sense of freedom - you own your time, and it's yours to be productive. YesGraph (my employer) is results based, and not hours-based. This is awesome as a remote employee.

2\. Exercise isn't Easy - I used to walk over 2 miles/day to work, so I have to force myself to get enough exercise during the course of the day.

3\. Tendency to Overwork - I'm being very proactive about trying to balance work. It's easy to fall into the trap of working too much (especially with 2 hours saved on the commute)

4\. Social Interaction is Important - this is really important internally and externally. If I want social interaction outside my job, I simply need to go to a coffee shop or co-working space. It's important to do this internally too - which means doing hangouts with fellow employees.

I've actually been keeping detailed notes on my productivity (using Rescuetime) and exercise (using Fitbit), you can track my progress here -> [http://lukethomas.com/working-remotely-tracking- progress/](http://lukethomas.com/working-remotely-tracking-progress/)

We actually had an onsite last week, so I have some data to benchmark remote productivity vs. onsite that I'll publish soon.

</comment><comment><USER16> For companies who are considering going remote have you considered the "global" problems you may have (e.g. payroll, local compliance laws - <USER2> etc.) ?

Do you have solutions for them?

There's a cost for most businesses to being in different countries. Typically, for larger businesses, finance and HR pick up most of the slack here. Having 17 employees potentially in 17 different companies feels like it might be a bit of a logistical burden. Any counter experiences?

<comment><USER17> Within the US, you can use someone like TriNet to handle employees in all 50 states. Companies like [http://balsamiq.com/company/](http://balsamiq.com/company/) are all over the world. From what I understand, people often get paid as contractors and have to deal with local tax laws on their own. If you end up hiring people as employees in all the countries, I think it gets a bit tricky. I'd love to know if there are other good ways to do this.

</comment></comment><comment><USER18> Interesting read.

I recently moved to a country with a low cost of living whilst continuing my old webdevelopment role as part of a remote team.

Some things that we do:

      - daily short standup on google hangout
      - everyone is available on an instant messenger when working
      - every office/home office has a continuous webcam feed going on over google hangout
      - remote pairing (not the biggest myself)

Planning to do a writeup of my findings as soon as I pass the six months mark.

<comment><USER19> > every office/home office has a continuous webcam feed going on over google > hangout

We've talked about doing this with my all-remote team, but it seems incredibly invasive. How has your experience been?

<comment><USER20> You could probably have a dedicated conference room or similar which would ensure that you could easily "Go to the teleconference room!" while ensuring that you didn't have a pervasive big brother feeling.

</comment></comment></comment><comment><USER21> It seems to me like whenever people talk about remote work, they always talk about having super rockstars, the top, best coders they can find, and only them. I'm not there yet, as I'm just entering the phase where I am stopping calling myself an entry level coder. Being able to do this however is the reason I got into coding. Is there anyone out there who's not an absolute genius hacker who is working remotely and doing well?

<comment><USER22> Disclaimer: I've never worked from home. I have thought about it a lot though.

I think WFH isn't a good idea for a junior dev (e.g., <5 yrs experience). In my career, I've learned the most from working closely with really smart engineers, and doing CRs over email isn't sufficient to soak up that knowledge. Standing at a whiteboard and arguing about design patterns for an hour, sitting at the same computer crafting a new API, etc., are the best ways for you to learn quickly.

It's also important that you work on a team with smart engineers for the above to be valuable. If you have no CR process, or don't have any devs smarter than you, then there aren't any downsides to WFH, but that's only because the above upsides aren't there.

</comment></comment><comment><USER23> Shameless plug:

We (getblimp.com) are currently working to consolidate real-time chat with task management in a very unique way. This will allow remote workers to collaborate freely on chat and then move those conversations to a more persistent form, a task with context.

[http://blog.getblimp.com/2013/11/blimp-needs-more- bandwidth/](http://blog.getblimp.com/2013/11/blimp-needs-more-bandwidth/)

<comment><USER24> While we have project management tools already in place (jira) and I don't forsee us changing anytime soon, this is a really cool idea. I see a hubot hipchat script implementation in our near future... because though it would be cool to have such chat-like functionality in the management system, it would be even better if it integrated with where we already did our chatting.

That might be something you also want to consider offering in your solution, as an additional method of accomplishing the same thing.

</comment></comment><comment><USER25> Kind of on topic, but I'm a web developer who is partnered with a designer in NYC. I'm already working remotely (a few hours away) and it is really great. I'm in my mid 20s and don't have kids or a relationship at the moment. I've always wanted to travel and I'd rather do it while I am young. I've been thinking of taking 6 months and going around the world, staying at any location for 2-4 weeks. I want to continue working remotely at that time but my big concern is that I'm just going to be sitting in a hotel room working at these beautiful places and not have any time to explore. Or the other way around and I will be having too much fun to get any real work done.

Any HN'ers have any experience or stories doing something similar?

<comment><USER19> Doing what you suggest will be an absolute disaster if you promise your clients you'll be available while you travel. Your concerns about being locked in your hotel room are totally valid, and you'll need superhuman willpower to get anything done. What you _can_ do, however, is set up shop somewhere cheap for 3-6 months and spend your weekends doing day trips. At the end of this period, you will have actually _saved_ money because of your reduced living expenses. Then repeat the same process on anther continent. 2-4 weeks is barely enough time to get your feet wet. You absolutely should do this _right now_ before you get tied down by work and family life. Source: I work remotely and have spent the last 4 years in Brazil, Thailand, and Belize. 3-6 months turns into 1+ years pretty quickly.

</comment></comment><comment><USER26> I've been remote for the past 5 months and I love it. I'm more productive and I feel like I work more just because the convenience of being at home.

Also, I'm starting my own company and reading this helped me understand how others do it. I'm glad this is working out and hope that more people figure this out.

Many companies I've worked for have this outdated mindset that you need to be in an office together in order to make things work. The reality is you don't. Yes, you miss out on some of the local stuff that an office can provide. Like drama, politics, and petty bickering. But I would rather bitch about someone from home......in my jammies. :)

</comment><comment><USER27> I really like these posts from people actually doing remote work. I think with more stories like this we can counteract this idea that remote work can't work. Obviously, we need examples from many different sized organizations.

</comment><comment><USER28> Worked remotely in 2 different distributed teams (US, Europe, South America, Africa) for the last 2 years. Can't imagine coming back to the office job. It's really good idea to build your company with that in mind.

</comment><comment><USER29> We have a small team based in Seattle with people as fat away as France. I definitely agree with this post and with what others have said both about increased productivity and about the difficulty of working with a team that is mostly centrally located and missing out on casual socialization.

However we have also found that having a spread out team can lead to increased collaboration and outreach as people go to seminars/meetups etc locally. It is also nice that people who are normally in the office can easily participate in meetings when traveling or staying home for whatever reason.

</comment><comment><USER30> For remote work: I've heard good things about Sqwiggle. [https://www.sqwiggle.com/](https://www.sqwiggle.com/).

</comment><comment><USER31> I don't really work remotely but at home for myself for the last year. The biggest challenge for me in a given day is lack of social interaction. It is nice to have a quiet place to work, but hard to deal with (some days) not speaking to a single person all day. Frankly my last job had many downfalls, but I did enjoy some of the people I worked with.

<comment><USER32> I'm just about to start a 100% remote work job for a company with no real office to work from. I'm renting a full-time desk at a co-working space just so I can have some casual social interaction that doesn't involve me ordering an espresso beverage.

</comment></comment><comment><USER33> I had an experience this year which made me aware of some of the ways that remote work can go wrong. Although in my case my work was not "remote" in the sense of being away from the office (though sometimes I worked from home). My work was "remote" in the sense that the tech team was all in one office in London, and I was the first programmer they hired in the New York office.

Before I get into the details, I'll offer some qualifiers: I could have done more to communicate with the management that I was not getting the information that I needed. I could have been more pro-active about forcing people to answer the questions that I needed answered. Having said that, I think some of the miscommunication that arose might be common when companies first try either remote work, or simply work that occurs outside of the main office.

I was hired by a large media company. I worked there from January 2013 to August of 2013. The company has about 25 programmers in the London office, plus a QA team and project managers (and the CTO and CEO -- all upper management is in London).

The first month I was there I worked on some projects using functional languages like Clojure and Scala. I needed to ask a lot of questions about the internal API. After awhile, the management decided that I should have a single person that I could contact with questions. I'll call him Jim -- he was a super smart guy and a dazzling engineer. For the next week, he was able to answer all of my questions about the internal API (indeed, Jim had created most of the API). However, the 2nd month I was there it was decided I should work on the company CMS, which was written in PHP. Jim did not know PHP, and he had never worked on the CMS, so he was no longer able to answer my questions. No one else was ever assigned to me as my point of contact.

Informally, I later defaulted to sending all of my questions to the woman who lead the QA team. She could rarely answer my questions but she often knew who could, so she would redirect my questions to the right person. The only problem with this system was that it was slow. Especially given the time difference, if I asked a question at any point after noon, the earliest I could expect a response was the next day. And then, towards the end of my time there, the woman quit. (That was another problem I faced -- there was a lot of turnover in the London office, so even once I had established an email relationship with someone there, they then would suddenly disappear.)

I recall trying to setup the CMS to run on my local machine. I kept getting a strange error regarding dependcies. I looked in the git log to see who was the last person who had made changes to the way the system handled dependencies. There were 4 people who had recently touched the system. I wrote an email to all 4 of them, explaining that I was trying to set up the CMS, and I kept getting this error. One of them replied "Come over to my desk and I'll help you." I was like, uh, I am in New York, I can not come over to your desk. Everyone was surprised that there was a programmer in New York.

Four months later I got another error which I traced back to dependencies. I re-did all the steps for upgrading the dependencies, but now nothing worked. I wrote to several of the programmers again and asked them if they had any idea why things were not working. One of them wrote back, clearly irritated: "If you simply read the announcements, you would know that we changed the dependency system this week." I asked, what announcements? He replied: "The ones posted to the tech mailist." I asked, what tech mailist? I was told that there was a mailist and every programmer was suppose to be on it -- it was the main way annoucements were shared with the whole tech team. For me, it was like having a whole new aspect of the company explained to me. I was finally put on the mailist and started to get the announcements. By this point I'd been at the company 6 months, and by this point I had already complained many times that I was not getting enough information about what was going on in London. It seemed strange that no one had thought to suggest this before.

At some point I was given the assignment to add some serious functionality to the CMS. I was given one month to do it. Despite working some long hours, I was 5 days late getting "done". But I was not done. I sent it to the QA team and they sent it back -- there were some edge cases where things were failing. I fixed the code to handle the edge cases and sent it to the QA team. They sent it back again. This went on for another month. By the time my code went to production it was over a month late. Part of the blame surely lies with me, but part of it was the slow speed with which information was communicated. The QA team would tell me about some edge case, but I would need to ask dozens of follow up questions to understand why the edge cases were in any way relevant.

In many ways, this job was the best job I've ever had: good pay, great people, a relaxed culture. Every Friday we had "Beer Friday" meaning people quit early and we broke out the drinks. The New York office was full of talented writers and creative people.

All the same, the whole time I was there I was concious of being an experiment. The company thought it needed to have a tech team in more than one time zone. But for me, getting needed information was like breathing through a very small straw -- I never got enough. I found it difficult to find the right balance between asking too many questions via email versus reading (out of date) pages on the wiki versus digging through git commit notes to see when a change had been made.

In the end, I decided to leave, because I did not feel that I could do a good job. I am sure I could have done more to get more information out of the folks in London -- it does not speak well of me that I gave up after a few months of trying. All the same, I think there is some lesson in this: if a company has the tech team centralized in one office, and then the company decides to expand the tech team beyond that one office, then some real changes in workflow are needed to make that work.

<comment><USER17> When we looked at starting remote, a lot of I spoke with people cautioned against the "hybrid" approach. Some people on the team remote, some in the office. It sounds like your experience was the extreme. You were the _only_ person not in the office.

What tends to happen is decisions get made that remote people get left out of and they get communicated verbally rather than through the normal channels. It's really important that the company plans around the remote people. I've heard from lots of companies that they've ultimately canceled remote work when there's just one person remote. It's a bit too hard to break out of bad habits.

This is a great cautionary tale for teams who are thinking about adding one or two people remote when they're all in one place.

</comment></comment><comment><USER34> I loathe these uses of 'probability':

      "2.5 billion people in the world have internet access.
      Statistically speaking, the chances that the best person
      for us to hire for any position is among the 0.023 billion
      people in the New York metro area is unlikely."

<comment><USER17> Hi, OP here... I felt that sentence was a little awkward. There are other things to take in to consideration -- english speaking people. People with requisite skills etc...

At least when I was thinking about it, I wanted to convey the sheer magnitude. New York is the largest city in the US (8m), but I used the metro area (23m) as my population size. But even with all the people in New York, we'd be limiting ourselves if we say "You must be physically nearby". 2.5 bn with internet access seemed to convey the scale of things - albeit imperfectly.

What would you recommend is a better way to do it?

<comment><USER34> To me, the sentence wasn't awkward. Rather, the way the probability was implied ignored that the best (most skilled) employees are not evenly distributed across the globe. I would wager your likelihood of randomly choosing a 'top' candidate from the 2.5bn pool compared to the 0.023bn to be something near 1:500, for example. But, you do still have a point. An alternative phrasing, which acknowledges the irregular distribution, might be:

      "2.5 billion people in the world have internet access.
      Statistically speaking, the chances that the best person
      for us to hire for any position is among the 0.023 billion
      people in the New York metro area is unlikely, even
      considering the high concentration of talent in New York."</comment></comment></comment>


Ask HN: What's wrong with email? What do you hate about it? - <AUTHOR> <comment><USER2> <sarcasm> I just hate how I can receive over 10k messages without paying money for this.

Clearly Slack has out-innovated here...

I just don't know what we would ever do if these genii hadn't invented threaded messaging.

</sarcasm>

I don't hate anything about email except spam and the measures necessary to contain said tsunami.

What is super amazing is how well this intra-machine user-messaging system scaled OUT of said box in the first place. (it was only ever supposed to be for users of one mainframe computer to message each other...)

"inter-network email" = wow. who knew it would even work.</comment>


Kosmix releases Google GFS workalike 'KFS' as open source - <AUTHOR> http://www.skrenta.com/2007/09/kosmix_releases_google_gfs_wor.html <comment><USER2> KFS won't really be interesting until they do a MapReduce-clone. You need something like that in order to be able to do anything with the data stored.

<comment><USER3> they don't need to. it already integrates with hadoop

<http://lucene.apache.org/hadoop/>

</comment></comment><comment><USER3> from the perspective of early startups, is this even on the radar since Amazon's S3 is essentially the same thing except without the fuss of buying and setting up your own hardware?</comment>


Ask HN: Why IBM World Community Grid bans Donors from Cuba, Iran, Syria? - <AUTHOR> IBM World Community Grid (worldcommunitygrid.org) claims that it enables anyone with a computer, smartphone or tablet to donate their unused computing power to advance cutting-edge scientific research on topics related to health, poverty and sustainability.
I also wanted to contribute some processing power to help fight  Cancer, but I guess my laptop doesn't qualify because of my citizenship.
https://www.worldcommunitygrid.org/stat/viewStatsByCountryAT.do?sort=members
What are some non-for-profit organizations that allow any human being to contribute and donate CPU-time for the sake of mankind, without being rejected because of his nationality, skin-color, or religion? <comment><USER2> Based on the countries you're mentioning, I'd guess that it's a legal limitation.

<comment><AUTHOR> It's not a business transaction to make profit. Nothing is exported to benefit citizens of these countries, rather they're donating their resources.

</comment></comment><comment><USER3> Donating "unused computing power" implies code gets transferred to the device for execution. Parts of the code may be under export control.</comment>


Preliminary result of the Gangelt, Germany Covid-19 case cluster study [pdf] - <AUTHOR> https://www.land.nrw/sites/default/files/asset/document/zwischenergebnis_covid19_case_study_gangelt_en.pdf <comment><USER2> Paper is short so worth reading, but some key points:

* They had an outbreak in this village as a result of a festival event in mid-February

* A random sample of 1000 from a population of 12,000 were sampled afterwards

* The immunity within the population as a whole was at about 15%.

* The fatality rate was 0.37%

It's got this statement:

> By adhering to strict hygiene measures it is to be expected that the virus > concentration of an infected individual can be reduced to the point that the > illness manifests more mildly, with simultaneous development of an immunity.

But it seems like the that statement is just an assertion, not something specifically supported by the data they gathered in this study, because it goes on to say:

> These favourable conditions are not present in a superspreading event (e.g. > Karneval meeting, apres-ski bar in Ischgl, Austria).

<comment><USER3> These statements are so odd they look like a translation error. Is there a German version of this paper?

<comment><USER4> Yes. Same url just drop the "_en": [https://www.land.nrw/sites/default/files/asset/document/zwis...](https://www.land.nrw/sites/default/files/asset/document/zwischenergebnis_covid19_case_study_gangelt.pdf)

<comment><USER3> The statements are similar so they are stating this community went through the worst case scenario and ended up with 0,37% fatality.

<comment><USER5> If that mortaility rate is common, it would mean there are ~10x (or more) infected in the world...

This sort-of coincides with the large asymptomatic reports. So what do we do from here on? Such numbers would surely raise the famous r0 infection rate, and it means this is far more contagious than reported/believed.

<comment><USER6> r0 can stay the same, it can just means that the epidemic "took off" earlier than what our tests show.

</comment></comment></comment></comment></comment></comment><comment><USER7> Isn't this the report of the case study that was discussed with much controversy in German media, in particular because the researchers hired a high-profile marketing agency for promotion and held a press conference together with the prime minister of the federal state (NRW) before subjecting the findings to the scrutiny of the scientific community?

Edit: link to newspaper article (German): [https://www.sueddeutsche.de/gesundheit/heinsberg-studie- coro...](https://www.sueddeutsche.de/gesundheit/heinsberg-studie- coronavirus-1.4876474) Note that Gangelt is a municipality in the Heinsberg district, so the article and the report refer to the same study by different names.

<comment><USER4> However, the "controversy" has been overstated by the German media as well. Drosten, virologist who has been cited as one of the critics, called the Gangelt/Heinsberg study "very solid and robust" just yesterday: [https://www.zdf.de/politik/maybrit-illner/christian- drosten-...](https://www.zdf.de/politik/maybrit-illner/christian-drosten-lobt- gangelt-studie-extrem-solide-und-robust-aus-sendung- vom-16-april-2020-100.html)

Particulary, the death rate will be close to the estimate.

<comment><USER8> He also said that "..the data on the German town are definitely not representative for the country".

[https://twitter.com/c_drosten/status/1251034050883657729](https://twitter.com/c_drosten/status/1251034050883657729)

<comment><USER9> The thing is that it's simply not exactly stated what kind of population they tested. Whether they were representative of that town or the German population. Of their sample was actually representative of the German population (which I heavily assume since they talked a lot about that) then the results will be quite robust.

<comment><USER10> How would you create a representative sample for the whole population if all your samples are from a sub-population with a known cluster of cases?

<comment><USER9> The cluster thing is obviously hard to remove. But the population.. that should be very doable. You'll just have to adjust the people you chose according to the general population. Not sure exactly how that goes down in practice. But in the press conference he stressed multiple times how this was representative and was done in cooperation with statisticians etc.

<comment><USER10> Problem here comes from the question "representative for what"?

I can easily see this to be representative for the town in question.

But I find it quite obvious that it cannot be representative for the whole country due to the initial difference in exposition.

<comment><USER9> Yeah well but is that really important? If they nail the same sample age-wise etc and use that to calculate lethality, then that number can be used on the general population, right? The only difference left is the rate of infection. But how many of those died should be the same.

<comment><USER11> I would guess that the spread of the disease and the rate of infection could be parameters to consider in planning policy for the immediate future. On the other hand, could this result be used to usefully estimate the total values in other regions from the hospitalization numbers?

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> There is a large number of asymptotic cases which is quite encouraging.

In their preliminary conclusion they write:

" _By adhering to strict hygiene measures it is to be expected that the virus concentration of an infected individual can be reduced to the point that the illness manifests more mildly, with simultaneous development of an immunity._ "

I wonder how they came to that conclusion. It would be great if it turns out to be correct.

<comment><USER13> So wash your hands and gargle and your symptoms are mild?

<comment> rooam-dev Interesting indeed, perhaps by reducing the quantity of virus we give more time to our body to prepare for the "invasion"?

<comment><USER2> I've heard that as well. Basically, the spread of the virus inside your body is exponential too, whereas the immune system's response time will be fairly static. So if you're exposed to a little, the immune system has time to respond before the infection gets out of control; if you're exposed to a large amount, by the time the immune system starts to respond, the virus is already widespread in your system.

<comment><USER14> Why wouldn't it be the other way around? If the virus replicates very fast, people with minimum infectious doses have a couple replication generations of extra time.

If the virus replicates more slowly, a large infectious dose would have the same impact as multiple replication generations.

I'm not asserting the above is what happens, I'm asking the question.

<comment><USER15> Viral load V, dV/dt = rV. This loosely solves to V = a*exp(rt). The bigger your V0, the faster the initial rate of increase.

The Vmin to be detected by your immune system is small. You want the most time between Vdetected and Vdanger.

<comment><USER14> My question is about how much r matters.

For influenza, each infected cell apparently infects ~22 other cells:

[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1563736/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1563736/)

So in 2 generations you have 500x the virus.

If it were 'less' exponential, and each cell only infected, say, 5 others, then you get to 500x late in the 4th generation.

In a cartoon example where a low exposure leads to 1 infected cell and a high exposure leads to 500 infected cells, the low exposure matters more if the reproductive factor is lower.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> There are so many unknowns from this report that it is hard to make much from it. Some of the major questions.

1\. How many people in this town ended up in hospital? How many are still in the ICU and likely to die?

2\. Is the population sero tested representative of the town population? Was this population sampled biased by those who had obvious symptoms being more likely to participate?

3\. Are the 15% positive representative of the German population or is it skewed to the young?

4\. How was the accuracy of the serology test determined? >99% is impressively accurate if true.

<comment><USER17> > "(anti SARS-CoV2 IgG positive, specificity of the method >.99%)"

This is a misprint. They meant to say 0.99 or 99%, not .99%

That means it's very reliable that any positive signal originates from covid19 antibodies, instead of from _something else_.

That does not mean that it's 99% accurate with regards to sensitivity.

<comment><USER18> Preliminary data from China suggests that a non negligible percentage (maybe 5%) of recovered patients never produce the neutralizing antibody.

[https://www.medrxiv.org/content/10.1101/2020.03.30.20047365v...](https://www.medrxiv.org/content/10.1101/2020.03.30.20047365v1)

This would mean the antibody test alone cannot tell the full extent of community spread. There's a brief summary of antibody knowledge here.

[https://www.the-scientist.com/news-opinion/what-do- antibody-...](https://www.the-scientist.com/news-opinion/what-do-antibody- tests-for-sars-cov-2-tell-us-about-immunity--67425)

</comment></comment></comment><comment><USER19> Not everyone is convinced that this study is accurate.

 _" It is important to understand the sensitivity and specificity of the serological test used in the German studies to be sure the test is not picking up antibody to other corona viruses (4 different common cold causing coronaviruses have been isolated in humans during the past years and 3 more serious ones (SARSCoV1 and 2, and MERSCoV)."_ [1]

It would be good to see more of these studies conducted in different areas by different teams to see if they come to similar conclusions.

[1] [https://www.sciencemediacentre.org/expert-reaction-to- unpubl...](https://www.sciencemediacentre.org/expert-reaction-to-unpublished- preliminary-findings-looking-at-the-presence-of-antibodies-to-sars- cov-2-virus-in-residents-of-gangelt-in-germany/)

</comment><comment><USER20> This monograph points to an IgG antibody assay with >99% specificity which means the false positive rate is tiny. Can anybody tell me if there is a commercial antibody test for Covid19 that advertises anything close to this?

My thought is that they have done this with an ELISA. Using a commercially available (or custom made) antibody instead of using one of those terribly inaccurate chromatography strips.</comment>