How Sift Science Rebuilt Its App on React and DropWizard - <AUTHOR> http://blog.siftscience.com/blog/2015/how-we-built-it

<comment><USER2> Sadly, this is more of a teaser with architecture diagrams than actual content about best practices in React and DropWizard. Looking forward to the future posts, though!

On the note of architecture diagrams... if you're geeking out about how to simplify architectures like their "before" picture, I'd highly recommend checking out Confluent's article on LinkedIn's data platform: [http://blog.confluent.io/2015/02/25/stream-data- platform-1/](http://blog.confluent.io/2015/02/25/stream-data-platform-1/) It's much in the same vein as this article, but focusing on backend organization. Highly recommended.

<comment><USER2> Since this is taking off a bit: Here's an excellent talk that provides some context to the Confluent article, and takes us through the thought process of simplifying convoluted database-cache-user interactions by thinking in terms of streams of derived data: [https://www.youtube.com/watch?v=fU9hR3kiOK0](https://www.youtube.com/watch?v=fU9hR3kiOK0) . Also highly recommended.

</comment></comment><comment><USER3> If the authors are reading this: in your later articles, I'd love to see some details about what method of authentication and authorization you settled on for the REST API and how well it plays with Dropwizard.

<comment><AUTHOR> Yeah, I think authentication and authorization are two of the hardest challenges in moving to a fully static app architecture. There're some more details in a talk I gave a few months ago (video: [https://youtu.be/vHXcDKK4eGY?t=6822](https://youtu.be/vHXcDKK4eGY?t=6822), slides: [https://www.dropbox.com/s/uup4tgxyi7uybe0/API- Driven%20Devel...](https://www.dropbox.com/s/uup4tgxyi7uybe0/API- Driven%20Development%20at%20Sift%20Science.pdf?dl=0)), and I'll be writing more (and hopefully open sourcing some code) in the future.

The upshot is we settled on OAuth 2.0 with JWT auth tokens, along with some custom DropWizard filters and annotations to enforce authz. We found two- legged OAuth 2.0 pretty straightforward to implement and use.

<comment><USER3> Sounds like you guys might have used Apache Oltu? If so, I (and I'm sure many others) would be interested in hearing more about that, because modern, non- trivial authorization and authentication is probably the single biggest missing piece for Jersey/Dropwizard.

</comment></comment></comment><comment><USER4> I rather hear about how companies I've never heard of keep getting ads upvoted on hackernews.

</comment><comment><USER5> This may be covered in one of the future articles, but how have you found HBase as a storage system and Hadoop as the primary system for data processing? If you could start from scratch, what do you think you'd use?

</comment><comment><USER6> Great article. I developed a (real world) personal budget app[1] using Angular 1.x + DropWizard. If anyone interested to learn/see source code, the source code is available on Github[2].

[1]: [https://www.budgetapp.io/](https://www.budgetapp.io/) [2]: [https://github.com/paukiatwee/budgetapp](https://github.com/paukiatwee/budgetapp)

<comment><USER7> Thank you, this is a great example. Exactly what I've been looking for.

</comment></comment><comment><USER8> What's the benefits of React against others frameworks? I didn't understood yet all the love and hype around React...

<comment><USER9> Important note: React doesn't attempt to solve any data modeling issues itself. It just gives you a way to describe to a browser what it should draw when given some data. It's not trying to provide solutions to all the same issues as Angular or other MVCs--it just makes some of those issues not even exist, although it obviously requires you to find solutions to other issues on your own.

As for the benefits: React components are _super_ composable. I find myself comfortably reusing modules way more when those modules are React components. Also, there's also low overhead of abstractions to keep track of, so the learning curve is very shallow compared to the ones for figuring out how to draw stuff in a framework like Angular or Ember in my opinion.

These aren't by any means the only or even necessarily the biggest ones, they're just ones that I am very fond of.</comment></comment>


Dependent Types for F# - <AUTHOR> https://jackfoxy.github.io/DependentTypes/ <comment><USER2> I'm very much a newbie when it comes to F# but as far as I can tell this isn't an example of what's traditionally called dependent types, but rather is a way of providing a set of helper functions and types for "smart" constructors, that is providing a validation/verification function that takes in some raw type and gives back an option of either the type you want or none.

As a litmus test (and I'd be happy if either the OP or someone else chimes in), as an example of dependent types, I'd expect to be able to compose constraints, e.g. having a type called

        And<'A, 'B>

and

        Or<'A, 'B>

that would then let me compose constraints e.g.

        And<GreaterThan3, IsEven>

and crucially _have their verification functions automatically compose as well_ , instead of having to invent a whole new type

       GreaterThan3AndIsEven

with a whole new verification function.

As far as I can tell right now, that's not possible with this library and I need to go down the route of making the custom GreaterThan3AndIsEven type.

Another good litmus test is whether literals also need to be passed through the verification function or not (or whether you have to pass them through the verification, get an option, and then unwrap the option with a comment indicating that it's safe to do so); for a usage of dependent types I would expect the answer to be no usage of the verification function would be required.

The crucial thing that dependent types let you do is that you can manipulate types and values with many of the same tools. Composition (the and and or from above) is one hallmark of this ability. Another is being able to call a value- level function in a type signature. For example a type signature that looks like

        x : if (a + b == c) then Boolean else Int

FWIW I don't mean to take away from this library; the practice of using smart constructors is something I'd love all expressively statically typed languages embrace wholeheartedly.

<comment><AUTHOR> OP here.

Since Martin-Löf type theory has introduced dependent types through the dependent function. No one I am aware of has improved on this approach, or even attempted a different way of introducing dependent types. And I think theory is very important.

In Practice I think [https://en.wikipedia.org/wiki/Dependent_type](https://en.wikipedia.org/wiki/Dependent_type) gets it right in that dependent types exist independently of dependent functions. _[A] dependent type is a type whose definition depends on a value._ I think ordinary programmers solving ordinary problems benefit far more from the type safety dependent types provide than dependent functions or compile time creation checks. In ordinary programming most data is independent of the code. There are notable exceptions, of course.

If in practical programming we may only ever use a term from computer science when it meets the CS definition in every way, I invite the reader to start a list of all the terms where this is already not the case.

Also ordinary programmers are more likely to gain at least a superficial understanding of dependent types when every implementation of smart constructors _does not_ call the resulting types something specific to that programming language, but otherwise unconnected to most anything else.

Constructor composition is a neat idea and merits investigation. The idea of course springs from function (dependent function) composition. Not exactly what you are thinking, but I think somewhat related, take a look at the section _Converting between dependent types_ in the tutorial [https://jackfoxy.github.io/DependentTypes/tutorial.html](https://jackfoxy.github.io/DependentTypes/tutorial.html)

<comment><USER2> I agree with I think what you're hinting at with regards to practicality. It is definitely the case that using this library or the practices that it espouses is far more practical for the working programmer than to try to get people to rework rewriting their codebase in Coq.

That being said, if I understand this library correctly, I strongly disagree with the choice to call it "Dependent Types." There's certainly no inherent reason that a cabal of type theorists should have a monopoly on the word "dependently typed," but I think describing this library as dependently typed dilutes the meaning of this word beyond usefulness. The crucial idea behind this library can be implemented in every statically typed language I know of (essentially anything that supports hiding certain constructors and exposing alternate ones and using some sort of optional type to represent failure rather than blow up at runtime). The specific implementation details of storing all the functions together can certainly be approximated in every statically typed FP language I've used (which is not to say it isn't valuable or a unique take on the problem!). Under what I think is your definition of dependent types, Java is a dependently typed language, which really starts muddying the waters for programmers trying to learn this stuff. This has two main drawbacks.

1\. It obfuscates what this library is doing to programmers who have not used dependent types before. The mix of questions in this very HN thread, some of which are more appropriately directed at a language like Idris, is a testament to that. Once again depending on whether I understand this library correctly, this library seems to be an extension of the idea of having separate public and private constructors for types and codifying the public constructors for a type. This is something that I would wager most working programming have some familiarity with and can immediately understand its usefulness instead of having to ask around (and get irrelevant answers) about what dependent types are.

2\. It disappoints and confuses people who have used dependent types. Honestly it comes off as buzzword marketing. An analogy would be if someone took the C language and added a new word "class" that was a synonym for "struct," did absolutely nothing else, then proclaimed that C was object-oriented (a term which is far less well-defined than dependently typed). "Ah so do your new C OO classes support inheritance?" "Nope." "Hmmm... so do you have methods?" "Nope." "Well then they aren't really classes and it feels disingenuous to call them such... (unlike e.g. how C++ extends the semantics of struct)."

If what you're talking about RE Martin-Löf type theory and the dependent function are pi and sigma types sure that's the formal treatment of dependent types, but I'd argue that there's a simpler working definition that suffices for most cases. A dependently typed language is simply a language where expressions not only can have a type, but can evaluate to a type. Hence my "if ... then ..." example from earlier.

I think the most accurate, widely-used term that describes what's going on here is the factory pattern. Simple as that and I think that's familiar enough to most programmers.

Upon re-reading this comment, I want to say that I don't think this library is trivial (it's not "just" the factory pattern) and that it is definitely a valuable way of structuring a given pattern! I know putting something on HN is a great way of getting crowds of know-it-alls to heckle and discourage you so I hope I haven't done that, just wanted to point out something that was bothering me.

</comment></comment></comment><comment><USER3> From what I gather, this happens at runtime, which makes me feel it's a bit unfortunate to call it _dependent_ _types_ , or at least my view of dependent types is of it being a compile-time guarantee.

Take for example Liquid Haskell[0] where you can, at compile time, make guarantees about your code. For example, here's a function that makes division safe, by never allowing the second value, _y_ , to be 0,

        {-@ safeDiv :: Int -> {v:Int | v != 0} -> Int @-}
        safeDiv     :: Int -> Int -> Int
        safeDiv x y = x `div` y

The second annotation is plain Haskell meaning it takes 2 `Int`s and returns an `Int`, with the third line being the function body. The first _{-@ .. -}_ annotation is the one Liquid Haskell reads, stating it takes an `Int` as the first argument, another `Int`, which we now refer to as _v_ , that is _not_ 0, and finally returns an `Int`.

Another practical language with dependent types is Idris[1], which supports full dependent types with dependent pattern matching.

Finally, for the "why would I use this", I recommend checking out Gabriel Gonsalez's keynote, from Haskell eXchange 2017, "Scrap your Bounds Checks with Liquid Haskell"[2]

[0] [https://ucsd-progsys.github.io/liquidhaskell-blog/](https://ucsd- progsys.github.io/liquidhaskell-blog/)

[1] [https://www.idris-lang.org](https://www.idris-lang.org)

[2] [https://skillsmatter.com/skillscasts/10690-keynote-scrap- you...](https://skillsmatter.com/skillscasts/10690-keynote-scrap-your-bounds- checks-with-liquid-haskell)

</comment><comment><USER4> Does this library actually allow you to express dependent types or is it just for runtime validation? I can't see any examples in the documentation of a type depending on a value like the common

        let v : Vect 3 Int = [1,2,3]

example.

There aren't many types shown in the examples but it looks like

        let myNonEmptyIntSetOpt = [] |> Set.ofList |> NonEmptyIntSet.TryCreate

would just return None at runtime rather than a compilation error?

<comment><AUTHOR> How can you do a compile time check on data that has not entered the system?

You can apply the same technique to Vect 3 [1,2,3] or any other type.

<comment><USER4> How do you express the type `Vect 3 Int` using this library? F# doesn't support it and all the example types appear to depend on other types, not on values like 3.

<comment><USER5> Basically when you take some value the user gives you and cast it to the dependent type, you can then cover the case where you got some result because the cast was successful or you got none. You can't have dependent types at compile time, at least not completely so, though you could use something like fslint to catch any data being entered in code.

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

<comment><USER5> it would seem that in practice you can go even further, essentially writing exhaustive proofs. However F* already supports this and compiles to F#, so I would say if you want that level of correctness you should probably use a language which is better at describing the totality of a function.

</comment></comment></comment></comment></comment><comment><USER6> Is there a reason dependent types aren't more widely used? Is it just a case of people not wanting to learn anything new, or are there some show-stopping issues in practice?

The idea seems promising. If I'm not mistaken it would let you statically declare that an integer had to be between values X and Y, for example.

<comment><USER7> I think it's two things. The first one is that most people are not comfortable changing up the programming paradigm that they are most familiar with. They're familiar with adding some if-statements to verify at run time. They're not familiar with using the type system to prove the properties of their data. Proving non-trivial properties can be hard (and in some cases impossible), so it makes sense that few people are jumping at the opportunity to learn everything from the ground up all over again when the alternative is to just use an if-statement.

The second thing is that sometimes you're going to get dynamic data at run time and you're going to have to use a run time property checker anyways. So for example if you needed to parse a bunch of text sent in by the user. You can still use dependent types to offload as much as possible to the type system, but at some point you'll have to deal with receiving user data. And if we go back to my first point, people are uncomfortable with using new things. They won't have a good idea of when to put what into the type system and what into the run time, so the default will be to just do it all at run time.

Liquid types look kind of promising, but I'm not sure if it's still an active research area. The stuff rust is doing with affine types is also promising. It's not dependent, but you can make a bunch of very nifty compile time checked apis. Finally, ML style types are slowly becoming more familiar in general in the industry. Once everyone is fully familiar with type parameters, they'll start to ask about kinds and values in types. However, it may take a while.

<comment><USER8> > You can still use dependent types to offload as much as possible to the type > system, but at some point you'll have to deal with receiving user data.

Of course you have do deal with receiving data at run time, but I think very few people appreciate that it's actually possible to do the "input verification" at one specific point in your program and then have a "proven" safe input and then never have to do any validation/verification again. This even goes for things like "give me a vector of integers between 1 to 3 of size _exactly_ 9 as input". Of course you still have to _handle_ the invalid cases in that one specific place, but that's no different from how you'd ideally do validation anyway. That stuff already _should_ be in a single place, and dependent types make that utterly obvious at compile time :).

(I think I may actually be agreeing with what you're saying, but I though it worth expounding on what dependent types can do for you.)

Btw, AFAIUI Liquid Types, at least as far as LiquidHaskell goes, is still a thing, though it's definitely quite "researchy" and who knows whether it'll become 'mainstream'.

Liquid Types also seem to be somewhat orthogonal to dependent types since they usually just rely on an external solver that works by "magic" (SMT) and which has built-in knowledge of e.g. arithmetic whereas most attempts at dependent types seem to want to avoid building in any of that knowledge in favor of induction + a more general "tactics" or "elaboration" type solving where the programmer guides the solver along. (Idris is an example of the latter, I think.)

<comment><USER9> > it's actually possible to do the "input verification" at one specific point > in your program and then have a "proven" safe input and then never have to > do any validation/verification again.

This can be done with "tainting" types, which are simple intersection types (even Java has them as one of its new pluggable type systems [1]), and doesn't require dependent types.

[1]: [https://checkerframework.org/manual/#tainting- checker](https://checkerframework.org/manual/#tainting-checker)

<comment><USER10> It's useless if it's optional.

<comment><USER9> So is F#.

<comment><USER10> Assuming you mean "dependent types in F#" rather than "F#", after reading the article, I concluded that these are, in fact, _not_ dependent types, but just so-called "smart constructors". Since "dependent types in F#" don't exist, it doesn't make sense to ask whether they're useful or useless.

<comment><USER9> I meant that F# itself is optional. So are tests, by the way, and therefore also completely useless.

<comment><USER10> Yeah, F# is kind of problematic since you aren't forced to use F# to typefully use F# libraries. Things would be a lot better in a language like Standard ML, where you can either use a library correctly (assuming it exposes the right interfaces) or not use it at all. Hooray for abstraction!

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment> rob-kuz Very cool library that Jack implemented here using an idea from my blog. We are using it in production. Works really nice.

</comment><comment><USER11> This is cool, but isn't it more like refinement types?

</comment><comment> xyz-x Nice lib and library tests!

</comment><comment><USER12> This looks neat!

</comment><comment><USER13> It's like subclassing, but it has to be called something else to be cool. Objects are so last-cen.

<comment><USER14> It's significantly different than subclassing. The wikipedia examples are instructive:

      a dependent type is a type whose definition depends on a
      value. A "pair of integers" is a type. A "pair of integers
      where the second is greater than the first" is a dependent
      type because of the dependence on the value.

<comment><USER13> That's a subclass with an object invariant.

(Gotta use the new buzzwords to be l33t. Even for old ideas.)

<comment><USER14> Sure, so if you use Ada you can write types like this and the runtime will enforce your invariants automatically. What other non-academic languages support that? It's something I miss from Ada for sure.</comment></comment></comment></comment>


Truly decentralized bittorrent - <AUTHOR> http://torrentfreak.com/truly-decentralized-bittorrent-downloading-has-finally-arrived-101208/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:%20Torrentfreak%20(Torrentfreak)

<comment><USER2> One of the by-products of centralized trackers is allowing private trackers to exist. There are two reasons for them

      * Promoting seeding
      * Basic invite-only protection from IP gathering oponents

Decentralized alternatives don't provide that. Think about the Wikileaks "insurance" torrent, there are plenty of government agencies sniffing. Even with peer blockers they can gather client IPs with the tracker, through DHT or peer exchange.

It's very interesting how this will shape the future of Internet and the Web.

<comment><USER3> OneSwarm has an interesting approach to that problem, using short hop onion routing when sharing data with unknown nodes.

Tribler promotes seeding by gossiping upload/download totals between peers and is experimenting with various methods of calculating reputation based on these statistics.

</comment></comment><comment><USER4> Haven't all clients supported DHT for a while now? It's good to see a client take the extra step and decentralise search as well, though. Hopefully this won't go the way of KaZaA/Limewire/Gnutella, but even if it does, we'll still have private trackers.

<comment><USER3> Its not using a DHT, its a gossip based network. Its simpler and more resilient to random faults but uses more space and bandwidth. As far as I know there hasn't been much research into their resilience against systematic or malicious faults.

</comment></comment><comment><USER5> Does anybody have a more technical description of this? as they say, the devil is in the detail

<comment><USER3> From my comment on the dupe: <http://news.ycombinator.com/item?id=1985431>

Most of the underlying protocols are described here, though it is a bit out of date:

[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.78....](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.78.4174&rep=rep1&type=pdf)

Essentially the core protocol is a gossip overlay. This generates random connections between peers in the overlay. Over these connections peers transmit information like recently seen torrents, recommendation lists, download/upload totals for other peers etc. Each peer proactively distributes known torrent files so that every peer builds up a database of torrents. Then search just works by broadcasting queries to nearby peers.

The algorithms used have dozens of applications outside of filesharing. I wrote my MSc dissertation on a similar subject:

<http://scattered-thoughts.net/one/1283/644001/538941>

The code for Tribler is naturally very specialised to their purpose. At some point I want to sit down and reimplement them in such a way that they can easily be reused and recombined for other applications. I have some vague ideas about building a prototype trust-based distributed database for dot-p2p.org based on similar principles.

<comment><USER6> > Essentially the core protocol is a gossip overlay.

Is this a broadly similar idea to NNTP 'flood fill', where once you have a peer (discovered in some way), you exchange articles (or in this case torrents) you each have - so they propogate to all connected nodes in the graph?

If so, doesn't this have problems scaling? (All nodes receive all torrents)?

<comment><USER3> > All nodes receive all torrents?

Each node has a subset of all torrents. You flood searches as well. There is also a second overlay on top of the first which groups peers by their similarity in taste, with the aim of reducing the number of hops necessary to find what you're looking for. The taste similarity is also used to actively propagate recommendations so that stuff you're interested in is more likely to move towards your immediate vicinity.

I would recommend scanning through the paper to get a more accurate idea of how it works. My knowledge of Tribler is pretty out of date.

<comment><USER7> wasn't the biggest issue with the first gnutella networks that search through flooding basically does not work? Is this somewhat accomodated by the fact that now we, well, can basically keep much larger databases?

<comment><USER3> Bigger databases, proactive distribution of torrents and similarity based clustering of users. Tribler is too small as yet to know if it will work but it certainly _looks_ like an improvement on gnutella.

</comment></comment></comment></comment></comment></comment><comment><USER8> One big question: did it work for you? Did you download/watch something?

<comment><USER3> I've used it a couple of times. Their streaming video is pretty useless most of the time but downloading stuff and watching it offline works fine. I can't tell how well the search works - there are only a few thousand active users so its likely that the stuff I'm looking for just isn't there. It might be worthwhile for them to also run searches on tpb etc and then import the torrents, otherwise they are going to suffer from network effects.

<comment><USER8> So, no practical difference from any regular client at the moment.

</comment></comment></comment><comment><USER9> How is it different from DC++?

<comment><USER3> The core principle is similar. DC++ has centralized hubs which handle searches and upload files directly to users. Tribler has a distributed search engine which runs on every peer and uses bittorrent to share files. Effectively every single Tribler node behaves like a DC++ hub. As a result it is much harder to take down.

<comment><USER10> A minor nitpick is that DC++ is the open source client. The protocol/network is called Direct Connect.

<http://en.wikipedia.org/wiki/Direct_Connect_network></comment></comment></comment>


In Some Ways, It's Looking Like 1999 in the Stock Market - <AUTHOR> http://www.nytimes.com/2014/03/30/business/in-some-ways-its-looking-like-1999-in-the-stock-market.html <comment><USER2> I really have a hard time understanding these arguments.

There are some good examples out there of difficult-to-understand buys and misunderstood valuations- there's no way the WhatsApp purchase is ever going to recoup its costs(the userbase is irrelevant, at a $1 per year price it just isn't gonna happen, especially considering the WhatsApp founders claimed they weren't going to be charging any more than that or for many other services they wanted to provide, AND that they wouldn't have ads), King.com is just this year's Zynga(news to the tech investment scene: The games industry is not nearly as simple as you seem to think it is), and there's no shortage of questionable investments in smaller companies, to be sure.

But then, you use examples like Airbnb and Oculus as an example of tech industry madness?

"Airbnb is like a hotel chain without the hotels." Yeah. That means they absolve themselves of costs, growth time, investment into that growth, location issues, the works. They hacked the _concept_ of a hotel, and found the holy grail for that market space. Frankly, if you think $10 billion is a ridiculous number, with them being worth more than Hyatt- I'd be inclined to wonder what holds them back being worth 3 Hyatts. They've got momentum, they've got product, and they've got the community. Short of the possibility of some grand competitor actually coming in and doing a bangup job, I think Airbnb's potential is at least an order of magnitude higher than this.

And Oculus- so they have little revenue now? They have decent revenue _at all_ for a product that has only been released to developers. You even admit that VR can completely change the world, but don't do the homework to understand they're probably less than 2 years from a product release with _massive_ community and business support? What, did your deadline come up and you just had to submit?

Look, it's fine if you think either are overvalued. But trying to use either in your examples for how we're in a 1999-style bubble is laughable. You hand us two of the best reasons we're not in a bubble and wonder why everyone thinks we're not. Really now?

<comment><USER3> I have about a 50% success rate with AirBnB when using it. At a hotel I know what to expect and those expectations are met probably 90% of the time. I'm not going to enter a room at the Hyatt and have my eyes start watering because it smells so strongly of cat piss (actually happened). How can people argue that AirBnB is anything but pretty CSS and some tech. efficiencies on top of HomeAway/VRBO? It may be a _substitute for a hotel_ , but it is not Hyatt.

You also forgot to bring up all the regulatory hurdles AirBnB faces _in a multitude of cities, counties, states, and countries_. I really don't understand how investors are not calculating that into the risk and valuation (maybe they are).

<comment><USER2> Honestly, I've been consistently let down by hotels, and so far only incredibly impressed with AirBnB. They've consistently cost me only 80-90% the local hotel rate, for twice the space, in-general-nicer accommodations, and a couple times it even included homecooked meals that were nothing short of unbelievable, just 'cause the owner was still staying there.

I also have a hard time believing that the cat urine thing happened- and that if it did, that you didn't report them to AirBnB. That sounds to me like the kind of thing they'd refund you(or more) for.

<comment><USER4> "...just 'cause the owner was still staying there."

Honestly, my favorite part of a hotel is not having to share a living space with a stranger.

<comment><USER5> Some people really like meeting strangers and especially travelling strangers.

<comment><USER6> If staying in the home of interesting strangers is part of what appeals to you about traveling, Couchsurfing lets you do it while paying _0%_ of local hotel rates.

</comment></comment></comment></comment></comment></comment><comment><USER7> I don't think it's fair to lump the biotech firms in with the tech stocks.

Biotech firms are different for a few reasons. Biotech firms have a very long lead time before getting FDA approval and can start making money. Therefore, it shouldn't be unusual that they are showing a loss each year. You can't create a MVP for a drug and starting selling it.

Second, the value of biotechs is firmly linked with IP. If the drug works, no one else can sell it until the patent runs out (usually 8-10 years after FDA approval). The valuations you see are not based on current revenue/profit, but rather potential revenue/profit once approval happens. Tech companies don't really have the benefit of IP that biotech companies have (someone can make an AirBnB knock-off and there is nothing AirBnB can do about it).

That said, I think the biotech stocks are getting really high valuations lately. There is a TON of risk in biotech stocks. If you're drug has bad side effects, you might not get approval and future revenue = $0. Not quite the same as tech stocks where you can still enter the market, you might not do as well as you thought, but you still get some revenue.

<comment><USER8> Part of the issue with biotech is that it costs so much to fail. Companies have to spend massive amounts of money just to find out an idea isn't going to work.

<comment><USER7> I don't disagree. For the most part biotech investment outcomes are binary. You either win or you lose (there are some exceptions).

And since it typically costs $5-10M just to be able to test your drug in the first human, when biotechs fail, they fail hard.

</comment></comment></comment><comment><USER9> There's a big difference between the dot-com IPOs of the late 90s and the IPOs of today: revenues. Some may express surprise that Candy Crush generated $1 billion of revenue, or that Facebook generates $8 billion / yr; and some may not agree with the multiples assigned to these companies by the markets; but neither of those thoughts makes the current environment comparable to 1999, when pre-revenue companies with unworkable business plans IPO'ed at high valuations. What I don't see in this article is any analysis of the growth potential, long-term margins, and defensibility that these businesses possess. That kind of analysis is crucial to a valuation discussion.

<comment><USER10> >when pre-revenue companies with unworkable business plans IPO'ed at high valuations.

Twitter? Or Splunk?

<comment><USER11> Twitter had $422 million in revenue in the three quarter before its IPO. Splunk had $121 million in revenue the year before its IPO.

Both were running at a loss, but they did both have a considerable amount of revenue. That puts them way ahead of many of the companies from the dotcom bubble since they at least have a proven way of bringing in money, even if it isn't enough to fully cover their expenses.

<comment><USER10> I apologize, that was a reading comprehension fail and I read pre-profit.

</comment></comment></comment></comment><comment><USER12> If you think that today's stock market is like 1999, then you weren't around to see the utter madness that was the stock market during the dot com days.

It was sheer insanity how crazy stocks were being bid up. Absolutely valueless companies were bid up 10x by day traders. There was zero sense of fundamentals, and fraud was rampant everywhere. The company I worked for went bankrupt due to financial fraud and many of my coworkers lost hundreds of thousands to millions of dollars.

Right now, we have essentially 2 companies, Google and Facebook, that are throwing billions upon billions of dollars worth of shareholder money to seemingly stupid ideas. And while I'm sure there's still plenty of fraud, you don't have anywhere near the same level of fraud as you did back during the dotcom days. I truly do believe that most companies and more especially CEOs are a lot more cognizant that they will go to jail for financial fraud if they step over the line, so they are a lot cleaner than they were 15 years ago, for the most part.

</comment><comment><USER13> The article makes no mention of quantitative easing. I think that has a bit of an effect of the stock market I general, not just tech IPOs.

So, I don't think this market is anything like 1999, this is very different.

<comment><USER14> Weren't there similar, though less dramatic circumstances in 1999 too though? ISTR that Alan Greenspan lowered interest rates in order to help fight the LTCM fire.

<comment><USER15> That was in 1997 though. As was the Asian crash and Russia default (which partly caused LTCM), so there are plenty of other reasons for the Fed action.

</comment></comment></comment><comment><USER16> Good article but the bit about Oculus VR was way out of place.

You're going to put Candy Crush, a mobile match-three game valued at $7B, with a company producing top of the line VR hardware and legends of the 3d industry on its staff that sold for $2B?

</comment><comment><USER17> It depends how you look at it. If you're comparing 2 line charts, tech stocks in 1999 versus now with no other contextual information, then yes it looks like 1999. Otherwise, the new wave of tech companies are leaders in highly competitive markets and have some significant revenue stats to prove it.

I would only start to get worried if a company like Box had a wildly successful IPO with ~$160m in losses, technology thats relatively easy to make, and lots of competition coming from the industry giants. That would seem bubbly to me.

</comment><comment><USER18> AirBnB and Oculus create value one by disruption and the other by innovation ... They are better left off from King lane which is more ephemeral ..

'99 was more of a tide where everything rose - look @ how King got punished in the market, would that have happened in '99?

</comment><comment><USER19> OT: is there a good HN like forum for discussing finance?

Old timers will remember newmogul.com, however, that's defunct.

<comment><USER20> The problem with finance related discussion forums is they wind up being used to generate fake information to try to drive pump and dump stocks. It's hard to keep them clean.

</comment></comment><comment><USER21> The thing that should scare you all, is that this article isn't wrong. If you argue that it is wrong, than I'm sorry, but you aren't seeing things clearly and this is going to hurt you most.

If you are making a good wage in this industry, put some away for when shit hits the fan. It's not a matter of if, it's a matter of when. Be prepared, friends, because shit is going to go down.

</comment><comment><USER22> I think the key point they're missing is that most tech goes through a "hype cycle" of unreasonable expectations followed by a crash followed by slow, steady, solid growth[0]. That's the same trend at play here: it's not that the dotcom-bubble ideas were categorically idiotic, it's just that many were premature and overhyped. Now, a lot of those ideas are being done right, and people with a weak grasp on the underlying tech can't tell the difference.

0\. [http://en.wikipedia.org/wiki/Hype_cycle](http://en.wikipedia.org/wiki/Hype_cycle)

</comment><comment><USER23> During the 90s internet stocks were doubling or tripling in a matter of days. That isn't happening now. This market is very frothy but this most certainly isn't 99. That said, the market can go anywhere. The market could be topping right now and on it's way to DOW 5000, or it could be taking a break then go merrily on it's way to DOW 35,000. It doesn't matter what Schiff says, it doesn't matter what the cheerleaders say. The market will do its own thing.

</comment><comment><USER24> You'll may have seen this, since this is a bit old now. But, the quality, lucidity, and accessibility of this piece makes it worth another read.

Aswath Damodaran, NYU Stern Professor of Finance has a great piece here on Whatsapp pricing - [http://aswathdamodaran.blogspot.in/2014/02/facebook-buys- wha...](http://aswathdamodaran.blogspot.in/2014/02/facebook-buys-whatsapp- for-19-billion.html)

</comment><comment><USER25> First, investment pours into companies with users and revenue.

The next stage it's companies with users but no revenue.

The final stage is companies with no revenue and no users.

It's the Minsky-moment updated for the internet age. (first people take out loans they can afford to pay back; then loans where they can only afford to pay the interest; then finally people start taking out loans where they can afford neither the interest nor the principal payments)

<comment><USER26> Its worth pointing out that due to Sarbanes-Oxley, some of this will not happen on the stock market this time. So if you are just looking at P/E of publicly traded stocks you are going to miss the signs.

</comment></comment><comment><USER27> He did a good job of negating the entire first half of the article by showing that P/E ratios are totally reasonable, especially compared to 1999.

<comment><USER28> Well while it is clear the P/E ratios today are on average much lower than during the dot-com bubble, they are still high enough in some cases to warrant taking a closer look at whether they are 'reasonable', I think.

For instance although King.com has a P/E ratio at launch of around 10 and many other top stocks like Google and Apple have P/Es below 30, Facebook currently has an estimated P/E ratio (ttm) of 101.7 [1]; Netflix, Amazon and LinkedIn clock in at 213, 612 and 941 as of last February; and Twitter has a _negative_ P/E ratio of -10 or so, having lost $645 million in 2013 [2]. Not a clear picture by any means, but it is fair to ask if all these valuations are reasonable.

[1] [http://www.bloomberg.com/quote/FB:US](http://www.bloomberg.com/quote/FB:US)

[2] [http://www.newyorker.com/online/blogs/johncassidy/2014/02/wh...](http://www.newyorker.com/online/blogs/johncassidy/2014/02/which- internet-stock-is-the-most-overvalued.html)

</comment></comment><comment><USER29> The reference to the AirBnB valuation is completely misplaced: The best rated hotel chains don't own the real estate. Furthermore the ubiquitous coverage that AirBnB offers is unmatched by any hotel chain.

The current valuations reflect the perfectioning of business models and practices since the nineties. Everybody has learned a lot since.

It's not like 1999. This feels more like 1998.

<comment><USER11> AirBnB only targets one of the major segments of hotel business. AirBnB almost exclusively focuses on the consumer market. Hyatt, the example from the article, focuses primarily on other segments, business travelers and meetings and groups.

AirBnB has the potential to take away most of the consumer segment, but they don't have much appeal to most of Hyatt's customers.

</comment></comment><comment><USER30> Relevant quote, "The point is that even if prices are high in the overall market, they are being backed up by earnings to a much larger extent than in 2000. That's important, because back then, when the dot-com bubble burst, the downdraft brought most companies down with it."

</comment><comment><USER31> In some ways it's far worse than 1999. The Russell 2000 has a 75 pe ratio (a year ago it was 35).

<comment><USER22> P/E is a useless metric for high-growth industries.

<comment><USER31> I wasn't aware that all the companies in the Russell 2000 were high growth. I was under the impression they're small caps, which has nothing to do with growth rate.

A doubling of the PE over the course of one year is not a useless metric in fact. It means you're paying twice an already extreme price for the growth you get, compared to last year.

<comment><USER22> Companies that have a strong vision for how to turn their cash into growth should not have profits.

</comment></comment></comment></comment><comment><USER32> I think it's important to distinguish between general stock market and tech stocks.

</comment><comment><USER33> bogus article, best accompanying photo ever.

</comment><comment><USER34> ...But in most ways it's not.

</comment><comment><USER35>
        Markets can remain irrational longer than you can remain solvent.

</comment><comment><USER36> It's a small nitpick about the article, but I found it hard to continue reading when the author called WhatsApp "a social media company with modest sales".

</comment><comment><USER37> Whenever people criticize the market valuations, shouldn't Laissez Faire advocates say, "the market is always right?" There is something they don't know.

</comment><comment><USER38> Economist believe in the free market as long as its not the price of new money ie the interest rate. Then most economists believe in that a central planned system is better via central banks. That is strange to promote that the free market is best in one way but not pricing another goods.

I think that central banks manipulation of the interest rates are creating the boom and bust cycles. Like Hayek and Austrian economics. When the price of new money is wrong it will be wrongly allocated which in turn creates economic bubbles.

<comment><USER39> The thing is there is not a clear way to have a market control the creation of new money - the choice is between central control of the money supply and a fixed money supply.

<comment><USER25> I wouldn't say that - private banks create new money whenever they issue loans (ie. all the time).</comment></comment></comment>


John Conway – The world's most charismatic mathematician - <AUTHOR> http://www.theguardian.com/science/2015/jul/23/john-horton-conway-the-most-charismatic-mathematician-in-the-world?id= <comment><USER2> I took Math 217 (Honors Linear Algebra) [1] with John Conway back in undergrad. Here are some anecdotes.

He announced that the midterm would be open notes. We study accordingly. We get to the midterm, and he is in California for a conference. A grad student is proctoring. We tell him that that the professor told us that it would be open notes. The grad student chuckles, says no way, the students outraged, and the exam proceeds closed notes. I guess he forgot to tell his grad student!

My friend comes to the exam late, didn't hear about the closed notes update, takes the exam open notes (how did his neighbor not notice?), turns himself into Conway later. The class average was something like 32 points out of 95.

After the midterm results, he was dismayed that he "had clearly done a poor job teaching us," and proceeded to spend the next 3 lectures going over the first 6 weeks of the course at a furious pace.

A classmate had met Conway back at a summer math camp during High School. John Conway had a real bicycle around his neck. He proclaimed that in the future if she sees a John Conway without a bicycle around his neck, that he is not the real John Conway! (much to our dismay he never came to class with a bicycle around his neck. I think he did, however, come to class with a metal cloths hanger around his neck. I think he did a trick involving one or more of these that day)

If students seemed a bit sleepy during lecture, he would routinely start to suddenly lecture at the top of his lungs. I definitely remember jumping up in my seat many times because of this. In one occasion, he opted to take off his shoe and throw it as hard as he could at the window for similar effect.

He would lecture and write on the blackboard so fast that we would copy the blackboard furiously for 90 minutes. If I started 2 blackboards behind (there were 6 boards), I would usually not have caught up by the end of lecture.

[1] [https://www.math.princeton.edu/undergraduate/course/mat217](https://www.math.princeton.edu/undergraduate/course/mat217)

<comment><USER3> I roomed with Conway's son at Princeton. His son was one smart guy

</comment></comment><comment><USER4> One time when I was wheeling my unicycle down the street this manic with a beard and sandals came after me and started asking some really odd questions. Turned out it was Conway and he'd recognised me from the maths common room, so figured I might be able to answer his questions. Turns out I did.

Subsequently I was one of very few people he'd bother playing backgammon with because we'd both play stupidly fast, and switch between extreme style of play, almost at random. I'd usually lose, but he stayed and played because he found it interesting. He's very like a cat, in that he'll play with something for a time, then completely lose interest and walk away without a word.

Fascinating, and humbling, to spend time with someone just so far out of my league.

<comment><USER5> Do you remember what the odd questions were that he asked you while you were unicycling?

<comment><USER4> Sadly, no, not in detail. I could fill in some answers, but I wouldn't be sure I wasn't making them up. I think it was about torque versus the power available at different parts of the cycle, but it might have been something completely different.

Knowing Conway, it probably was.

The thing about riding a unicycle is that you don't think of staying on top of it, you think about keeping it underneath you. Falling forwards? Pedal faster to bring it back under you. Falling backwards? Stop pedalling so you catch up. The side-to-side balance largely looks after itself when you're riding - it's different when you're idling.

But I'm not sure that's what he asked about. It was 31 years ago.

<comment><USER6> > The thing about riding a unicycle is that you don't think of staying on top > of it, you think about keeping it underneath you. Falling forwards? Pedal > faster to bring it back under you. Falling backwards? Stop pedalling so you > catch up.

Sounds vaguely like track standing on a fixed gear. It's more like balancing a broom on your finger than trying to balance yourself on a rail.

I really love bikes of all varieties, but I've never messed with a unicycle. They seem fun. My friend has one; I'll have to try his sometime.

Because you mentioned torque and such, if you never have, check out this book: [http://www.amazon.com/Bicycling-Science-David-Gordon- Wilson/...](http://www.amazon.com/Bicycling-Science-David-Gordon- Wilson/dp/0262731541)

I picked it up expecting to read a chapter here and there and ended up cover to covering it. Great read

</comment></comment></comment></comment><comment><AUTHOR> Reposting after a prod from the mods because there is so much fascinating stuff e.g. this quote from James Propp, professor of mathematics at the University of Massachusetts Lowell:

"Conway is the rare sort of mathematician whose ability to connect his pet mathematical interests makes one wonder if he isn't, at some level, shaping mathematical reality and not just exploring it. The example of this that I know best is a connection he discovered between sphere packing and games. These were two separate areas of study that Conway had arrived at by two different paths. So there's no reason for them to be linked. But somehow, through the force of his personality, and the intensity of his passion, he bent the mathematical universe to his will."

</comment><comment><USER7> Numberphile, an awesome youtube channel on its own, has done some great interviews with John Conway that are definitely worth watching: [https://www.youtube.com/watch?v=R9Plq-D1gEk](https://www.youtube.com/watch?v=R9Plq-D1gEk), [https://www.youtube.com/watch?v=E8kUJL04ELA](https://www.youtube.com/watch?v=E8kUJL04ELA), [https://www.youtube.com/watch?v=xOCe5HUObD4](https://www.youtube.com/watch?v=xOCe5HUObD4) He really comes across as a genuinely great guy.

<comment><USER8> Thanks for mentioning those. Here's a single link to the YouTube playlist for the 5 Conway videos on that channel:

[https://www.youtube.com/playlist?list=PLt5AfwLFPxWIL8XA1npoN...](https://www.youtube.com/playlist?list=PLt5AfwLFPxWIL8XA1npoNAHseS-j1y-7V)

</comment></comment><comment><USER9> > He's invented many peculiar algorithms—for counting stairs while you climb > without actually counting, and for how best to read through a stack of > double-sided loose-leaf pages.

Any ideas about how this is done?

<comment><USER10> I was curious as well and googled it ("counting stairs conway") and found this:

[http://blog.tanyakhovanova.com/2011/06/a-nerds-way-to- walk-u...](http://blog.tanyakhovanova.com/2011/06/a-nerds-way-to-walk-up-the- stairs/)

> His invention is simple. Your steps should be in a cycle: short, long, long. > Long in this case means a double step. Thus, you will cover five stairs in > one short-long-long cycle. In addition, you should always start the first > cycle on the same foot. Suppose you start on the left foot, then after two > cycles you are back on the left foot, having covered ten stairs. While you > are walking the stairs in this way, it is clear where you are in the cycle. > By the end of the staircase, you will know the number of stairs modulo ten. > Usually there are not a lot of stairs in a staircase, so you can easily > estimate the total if you know the last digit of that number.

</comment></comment><comment><USER11> I had the chance to meet him in person during a summer school a few years ago. He's simply awesome. Super fun guy, great to talk to and a great teacher (even though sometimes quite a bit disorganised... I remember him leaving behind some of his stuff when he had to catch the taxi that took him to the airport at 6am or so ;) ).

<comment><USER12> I met him over 30 years ago, a great teacher as you wrote.

<comment><USER4> Our paths may have crossed, then. I was at DPMMS from 1983 to 1987, spending much time in the "common room". Is that where you met Conway?

<comment><USER12> I met him while I was still at school, 1981 or 1982.

The maths department at my local University (Liverpool) organized meetings for kids from the surrounding region who were reasonably good at the subject, Conway came to one on a trip back to see his parents.

</comment></comment></comment></comment><comment><USER13> This is an extract from the new biography of Conway, _Genius at Play_ , which I'd thoroughly recommend if you found this interesting.

</comment><comment><USER14> The author of the article wrote a recent book on John Conway as well [http://www.amazon.com/Genius-At-Play-Curious- Horton/dp/16204...](http://www.amazon.com/Genius-At-Play-Curious- Horton/dp/1620405938)

</comment><comment><USER15> Wow I don't understand how you can just change your personality in an instant. Maybe he has an easily 're-programmable' brain.

<comment><USER16> Just do it.

Nothing is stopping you other than your own will.

<comment><USER17> And the billions+ of entrenched synapses that compose the sum total of your life to date. You can not just rewire yourself in a heartbeat, and injunctions to "just do it" are as misleading as they are unhelpful.

You may will yourself to act in a different manner, but the will of a moment frequently exhausts itself, leaving the collection of rhythms and habits built into you over the years. Or, to put it differently, we all have an equilibrium, a norm we tends towards in the absence of persistent and sustained external stimuli. Your will is a small stimulus for change, and it works over weeks and months in a series of small nudges.

You can change, in almost any way, but if you "just will yourself to do it", you'll most likely find yourself failing again and again, convinced that if you could only be (somehow) just a bit more stronger-willed, complete change is right around the corner.

Perhaps you mean "Just do it – envision what you wish to become, work out the set of habits necessary to that new person, and slowly rework your present habits, one by one, (removing environmental triggers/cues to old habits, and redirecting their behavioral outcomes), until you've discarded or transformed the old set into the new.

Nothing is stopping you other than [a clear goal, a choice, and steadily repeated applications of] your own will."

<comment><USER16> Like I said: just do it.

You're agreeing with me. Yes, it's hard. So what if it's hard? It's a matter of second-by-second choices. Failed? ok, that's in the past. Might fail? ok, that's in the future. You're in the present. Just do it.

<comment><USER15> Ok I am open minded. Today I will just do it and post back some results :-).

And perhaps I should buy a certain brand of trainers?

</comment></comment></comment></comment></comment><comment><USER18> Not related to the article itself - I happened to open Javascript console on the page. Try it yourself - you might find it interesting too : )

</comment><comment><USER19> I really want to play Phutball, now. I wish there was an android app.

</comment><comment><USER20> The narrative of this piece is really great -- that the most charismatic mathematician around just up and decided to reinvent himself as a charismatic person. I gained a bunch of weight a couple years ago, and I genuinely feel like a funnier, more gregarious person because of it. It's interesting to think about how much of your personality is really "you".

<comment><USER21> I met someone who did a similar reinvention. He said, "I used to be an introvert, and one day decided I would be the type of person who gives hugs." Up until then, I thought being introverted or extroverted was a fixed trait.

<comment><USER2> That's not introvert/extrovert. That's about being social / antisocial.</comment></comment></comment>


Recent reports on our whitehat program - <AUTHOR> https://www.facebook.com/note.php?note_id=10151538365500766 <comment><USER2> Facebook, at least send the guy a new laptop.

You don't even have to tell anyone you did it if you are worried about "rewarding non-preferred behavior".

Mute the commercial and watch this video to meet this guy and realize he was trying to help and you were being idiots:

[http://www.cnn.com/2013/08/19/tech/social- media/zuckerberg-f...](http://www.cnn.com/2013/08/19/tech/social- media/zuckerberg-facebook-hack/)

He hasn't worked in two years and his laptop is missing 5 keys.

<comment><USER3> Maybe they did. If they followed your advice we'd never know.

</comment></comment><comment><USER4> I am the only person out there that agrees he shouldn't receive a bounty?!

Facebook's stance is akin to "we don't negotiate with terrorists". Although obviously this wasn't malicious (or "terrorism"); just a case of a foolish newbie who failed to follow the rules.

<comment><USER5> I guess next time he should just sell the exploit on the black market then.

<comment><USER6> If he's the kind who would sell the exploit next time, Facebook isn't interested in rewarding him anyways.

Bounty programs are not there to create a more appealing market and out-bid the black hat hackers.

<comment><USER7> That's exactly what they're there for. They encourage and reward a white-hat culture.

<comment><USER6> Bounty programs do not attempt to compete with black hat markets or outbid black market rates.

The purpose of bounty is to encourage white hat hackers to challenge one specific application instead of millions of other applications out there that the white hat hacker could spend his/her time on.

So it's saying "Hey...instead of working on that random application why don't you try to hack us because hey you could earn some money too".

It's assumed that the person is a white hat hacker who would not sell the bug in black market anyways, even if there was no bounty.

</comment></comment></comment></comment></comment><comment><USER8> This is wrong. The reporting guy clearly had white-hat intent and made an effort to alert Facebook to a real security problem. Because of miscommunication and some poor decisions, a message was posted to another user's wall. There was no malicious intent, this was done as a (admiteddly desperate) part of a conversation.

Now is the time for both sides to make their apologies and for Facebook to reward the hacker.

</comment><comment><USER9> They're not going to pay him. To do so would be legally risky, and set a precedent that could be helpful to _actual_ malicious attackers in civil litigation. "Don't use accounts without accountholder consent" is the single most important term in a bug bounty; if you don't honor it, you're not participating in the bug bounty, but rather doing something else.

<comment><USER10> I don't see why paying him would necessarily have legal consequence: Facebook could make a discretionary payment while making it clear it's outside the scope of the bug bounty terms (indeed, by stating that he was doing something else).

<comment><USER11> Should (will) the next person to post on MZ's wall expect a "discretionary payment" for "doing something else"?

</comment></comment></comment><comment><USER12> They should pay the guy, not because it's the "right" thing to do, but because it maximises future bug reporting.

If people see that facebook back out of paying for legitimate, reported bugs, they'll seek other options to monetize them.

</comment><comment><USER13> After reading the messages between the white hat and Facebook, I do believe it is the right decision do not pay him.

In his report he lacked the communication skills necessarily to make a useful bug report, which after my opinion caused the problem.

<comment><USER10> > lacked the communication skills necessarily to make a useful bug report

If anything, he had great communication skills. He overcame a non-native language barrier, while being conversationally blocked, and still made his point clearly.

Besides, are communication skills the important skill here? I would say, not.

Facebook do not pay white hat hackers at a level appropriate to their skill and work ($1m total? _that 's all?!_) and now it's also clear they are looking for technicalities to avoid payment.

<comment><USER14> $500 for a bug report. that'll be cheaper than a day's work for one of their developers

</comment></comment></comment><comment><USER15> This is absolutely the right response; I think it's not a stretch that a security report might be provided by a "newcomer" or potentially even a complete layman.

</comment><comment><USER16> It makes way more sense to offer some sort of sandbox to prove bugs to filter this kind of thing (instead of having less-than-stellar bug responders like the "this is not a bug" guy).

If you could create your own "non-friend" user mock object and demonstrate the bug, no one has to parse your bad language. He proved the bug through a live test - doesn't it make sense to provide this kind of testing ground to whitehats?

I'm not a hacker, just a plain old developer. But in my world, when I want to explain something, I do it with test-case code and live examples, not through long-winded emails or bug reports.

<comment> jack-r-abbit The whitehat program page clearly spells out that you should use test accounts and then links you to a place to view/create test accounts: [https://www.facebook.com/whitehat/accounts/](https://www.facebook.com/whitehat/accounts/)

</comment></comment><comment><USER17> I guess he would have made more money by selling the exploit to someone with tons of fake accounts and botnet. Then they would have used it to flood walls with malware and advertising links and generic spam.

</comment><comment><USER18> Facebook can't possibly pay him. Exploiting a bug on the live site is not something they can reward, even if they want to. It would set the wrong kind of precedent, signaling that it's OK to do whatever to demo an exploit on Facebook.

That said, facebook will surely find some deal so they end up with positive PR.

</comment><comment><USER19> This could be soooo easy. Just provide a way to create a temporary account for tests that is not "a real user" and offer it on request. Creating and deleting these should not be a problem - if a report is false, the account won't change anyway.

<comment><USER20> Facebook already has the ability to create test accounts: [https://www.facebook.com/whitehat/accounts/](https://www.facebook.com/whitehat/accounts/)

<comment><USER19> If these accounts were internally tagged as security test accounts and were created automatically and a security researcher had no control over them (think honeypots), Facebook could monitor changes and see if anything on these accounts changes that should not. As the security researcher does not control the account unless an attack is successful, Facebook can grade attacks without human intervention. I can't see anything suggesting they have such a system in place.</comment></comment></comment>


AMD Threadripper 3990X's 64 cores promise monster rendering - <AUTHOR> https://www.cnet.com/news/amd-threadripper-3990x-64-cores-promise-monster-rendering/ <comment><USER2> [https://news.ycombinator.com/item?id=21628149](https://news.ycombinator.com/item?id=21628149)

<comment><USER3> That's about 3960X and 3970X, which are the 24 and 32 core CPUs that had their benchmarks released today.

Post is about a 64 core part that launches next year.

<comment><USER4> Core count is becoming more and more bullshit. If I get performance X using 1 core and Y using all cores, then true core count is Y / X, regardless of what advertised CPU count the manufacturer may dream.

Geekbench scores: \</comment></comment></comment><comment></comment><comment>-----

Intel Core i7-8086K: 6288 single core, 29927 multicore, asvertised cores: 6, real cores: 4.75, bullshit factor (advertised/real): 125%. Decent.

AMD Ryzen Threadripper 3970X: 5838 single core, 68457 multicore, advertised cores: 32, real cores: 11.7, bullshit factor: 270%. Ridiculous.

<comment><USER5> This just means Geekbench isn't good at scaling to multiple cores. It could be the workload or the implementation. If you have the right workload and a good implementation, modern processors do scale reasonably well (all numbers with Threadripper 3970X):

Cinebench R15: 206 single, 7302 multi, 35.4x scaling

POV-Ray: 9:02 single, 0:19 multi, 28.5x scaling

The scaling can be greater than the number of physical cores due to SMT. On the other hand, turbo clocks increases the single-core speed by 10% or more on most CPUs.

<comment><USER6> Or they demonstrate that the CPU is throttling cores due to excessive heat. Compare the 24-core 3960x to the 32-core 3970x, and also look at the power consumed when running cores at 100% utilization. It would appear that the 3970x starts throttling the cores once ~21-22 cores are in full utilization, leading the 3970x to be only marginally faster than the 3960x, even though it has 50% more cores. EDIT: 3970x has a GeekBench score of 70655 (single- threaded: 5684) while 3960x has a score of 66676 (single-threaded: 5703; according to [https://www.anandtech.com/show/15044/the-amd-ryzen- threadrip...](https://www.anandtech.com/show/15044/the-amd-ryzen- threadripper-3960x-and-3970x-review-24-and-32-cores-on-7nm/8)). Meanwhile, power consumption per core starts dropping off significantly at 21 cores for both ([https://www.anandtech.com/show/15044/the-amd-ryzen- threadrip...](https://www.anandtech.com/show/15044/the-amd-ryzen- threadripper-3960x-and-3970x-review-24-and-32-cores-on-7nm/2))

<comment><USER7> > Meanwhile, power consumption per core starts dropping off significantly at > 21 cores for both

Which you would expect with so many cores. Power consumption per core is probably going to be even lower for the 3990X, especially considering it has the same TDP.

</comment></comment></comment></comment><comment> bloody-crow This whole article is basically "there's a rumor 3990X will have 64 cores, come out in 2020 and based on the performance of 39{6,7}0X is gonna be great for rendering".

Maybe this will save someone a click.

<comment><USER8> Well it's not a rumor anymore, AMD announced it.</comment></comment>


AeroFS on Docker - <AUTHOR> https://www.aerofs.com/blog/aerofs-on-docker/

<comment><USER2> One of my favorite things about this launch is that both Docker and AeroFS were in the same YC batch, so doing this was extra special for us.

<comment><USER3> CoreOS is S'13\. One big happy family.

</comment></comment><comment><USER4> Also see [https://github.com/aerofs/aerofs- docker](https://github.com/aerofs/aerofs-docker)

It looks like they use a private registry and just provide a script that runs the docker image from their registry. No Dockerfile. I was curious because last time I tried to dockerize aerofs I ran into issues in regards to OS detection: [https://github.com/zimbatm/aerofs- docker#todo](https://github.com/zimbatm/aerofs-docker#todo)

<comment><USER5> Hey there, engineer from AeroFS here. Neat that you tried to dockerize our Team Server application!

This work is related to our "appliance", which is the web and management part of our solution. The "Team Server" is the storage part, and dockerizing that is next on our list.

</comment></comment><comment><USER6> It's about f*cking time.

Ahem. I mean, way to go guys, this will definitely help reduce friction for enterprise installation/support.

</comment><comment><USER7> Dockler, its spellt Dockler.</comment>


Noclip.website – Explore game maps in-browser - <AUTHOR> https://noclip.website/#HalfLife2/d1_canals_06 <comment><USER2> Hey I loaded the game and ran into a wall. After than I am can't get unstuck from the wall. Below are the error log from the console.

main-5b4da2e18d96589d9eb9.js:39 DataFetcherRequest: Received error l XMLHttpRequest ProgressEvent (anonymous) @ main-5b4da2e18d96589d9eb9.js:39 gznoclip1.b-cdn.net/HalfLife2/hl2_misc_000.vpk:1 Failed to load resource: net::ERR_CACHE_OPERATION_NOT_SUPPORTED main-5b4da2e18d96589d9eb9.js:39 DataFetcherRequest: Received error l XMLHttpRequest ProgressEvent</comment>


Ask HN: Slow ML Library Compilation Time - <AUTHOR> Did anyone notice that it is extremely slow to compile Tensorflow from source? It takes multiple tens of minutes for me to compile from source on a decently configured server machine and virtually forever on my Macbook Pro. Results are similar/on the same order of magnitude for Caffe2. Is it just me or is it the same for everyone else? Is there any ways around it? <comment><USER2> You are now a systems programmer. Join the Club.</comment>


The perils of walking slow: scientists analyze sidewalk rage - <AUTHOR> http://online.wsj.com/article/SB10001424052748703786804576138261177599114.html?mod=WSJ_LifeStyle_LeadStoryNA

<comment><USER2> I don't think this is fair on the so-called "ragers". F'rinstance here in London we really do get people who will ride the escalator to the bottom, step off and just stop, seemingly oblivious to the fact that there is a conveyor mechanism directly behind them delivering a stream people to just where they're now standing.

Of course they know, they've got all the senses of everyone else. They're just self-absorbed, and don't care that they're being rude by getting in the way. There's no reasoning with such people; a shove is the only language they understand.

<comment><USER3> Exactly.

 _"After all, it seems simple enough to just go around the slow individual."_

Trust me, if I'm able to do that, then I _do_ , no questions asked. Unfortunately the other common behaviours of slow walkers include: sudden erratic motion, walking side by side in lines with others, and stopping dead in choke-points.

<comment><USER2> Or people who will stand right in the doorway of a train when people are getting on and off, rather than stepping to one side (or even off the train altogether, people will always let them get back on first). These people have made their choice, it's just attention seeking really. However the London commuter is not a shy species...

Or people who will stand on the left, despite clearly being able to see that _no-one else is_ , even if they can't read the clear signs in English. Again it's not rude to push them out of the way; they started it.

<comment><USER4> I have this theory that in London at rush hour, the space available on a busy train will exactly hold the total number of London commuters that are waiting at the platform. Apart from myself, I've never seen a London commuter not get on a train, however packed it is.

I'm a pavement rager. I'm baffled by slow people with no consideration dawdling through a train station at rush hour. I tried once to patiently amble along behind them, and found out it impossible.

I've learnt with OAPs that if they look like they are slowing down (!), and you have the choice to go around either side, always chose the smallest gap. Almost always they turn like an oil-tanker into the larger gap. That way you can pass by unnoticed.

Couple of things wind me up. A guy reading a Kindle bumbling up a flight of stairs utterly unaware of the holdup he was causing.

Not sure about handbags, they seem to be blunt instruments to be swung at fellow commuters. And always seem to increase in size and violence when their handler is looking away from you.

Also, the number one tip for being bumped into by other people: wear a laptop backpack. I have a feeling there's some sort of super-magnetic quality backpacks have when on my back...

I would find it useful to demarcate walking and standing areas in train station concourses. Although they have a no-standing area in Shepherd's Bush and that doesn't seem to be working. Not sure whether passengers are generally oblivious of their surroundings or have just have their London commuter face on.

<comment><USER2> And bloody wheeled luggage, I've seen people approach the ticket barrier from the side, and actually block the next turnstile with their bag while they look for their ticket! Kicking's too good for these people.

</comment></comment></comment></comment></comment><comment><USER5> I guess I would be considered a "sidewalk rager", although rage is a very strong word since I've never risen to the level of physical contact or even verbal confrontation - perhaps exasperation would be a better word. It's not limited to sidewalk-walking; it also applies to city driving.

In my experience (having lived in San Francisco and New York) there are two types of people who trigger this:

1) People who are so self-absorbed that it doesn't even appear to register in their minds that there are actually other people in the city or on the road. Into this group would fall some cell-phone users, arrogant business-types, stroller-pushers, escalator-blockers, etc.

2) People who feel powerless in their own lives, and intentionally cause grief as a passive-aggressive way of asserting dominance over others without really breaking the law. Typically urban poor and out-of-town youths.

Lest anyone get the wrong idea, I don't think everyone needs to have the same conception of city etiquette as I do. I'm just describing one of the (little) drawbacks to living in a crowded city for someone with my personality.

<comment><USER6> Stated beautifully. The issue cited in the paper doesn't seem to be "rage", which seems fairly uncommon. Instead, it seems to address common exasperation with the congenitally (and deliberately?) witless, with a few extremes thrown in for good effect.

It would be different if the author acknowledged that the people triggering exasperation were, in fact, behaving badly. Instead, he seems to dismiss any sense of socially cohesive conduct as something mysterious, arbitrary, and possibly dangerous. It's easy to read the whole thing as a passive-aggressive defense of passive-aggressive jerks.

The one in a million who actually go ballistic are outliers. The PA types who trigger them - though a minority - are exponentially more common, and an irritation for everybody.

<comment><USER7> I don't think this is the author's focus. He is trying to convey that there is a better way rather than being easily exasperated because the negativity wastes the limited life we each have.

The sense of exasperation arises out of a state of mind that is easily disturbed and ruffled. Whatever skills one can gain from being 'at one' with the crowd will translate into the rest of their lives, and improve the relationship with their loved ones.

</comment></comment></comment><comment><USER8> The example of a rager they give reminds me (somewhat ashamedly) of myself last summer at the Expo in China.

I "know" China and Chinese people so the way people in massive crowds walk in China is no surprise to me but at that Expo, with its massive-even-for-China crowds and sardine-like packed spacing I lost it a couple of times.

The Chinese idea of personal space is already a challenge for most from the West but pack the place nuts to butts with way too many people, throw in the utter disregard for lines that many in China have and it's a recipe for tension for most foreigners. My breaking point was when people started to shove and push my 9 year old daughter (as she was the weakest link in our group).

I got yelled at when I squared my shoulders and bulled through a line, kids and wife in tow, that (for lack of someone providing a foot of space) would have otherwise required a quarter-mile detour and I admit I feel a bit bad about that. Heck, just standing still I knocked a guy flat on his back (I got tired of being the only one, seemingly, moving out of the way when I walked so as an experiment I decided to walk from point A to B in a straight line. There was a small group headed my way and when we got close I simply stopped and stood my ground. When they collided with me people went flying as I'm a very big guy and they were not). The folks that ran into me thought it was hilarious. I was a bit steamed.

I guess it takes a bit of a push to get me going but I have some of that rage lurking in me. Makes me feel the need to excise it, lol.

</comment><comment><USER9> A lot of their examples involve narrow passages in locations, where it's likely that a large percentage of pedestrians are pressed for time: airports, subways, business districts. There's etiquette that prescribes behavior in those places, and often it's quite official.

In Moscow, which has one of the busiest subway systems in the world, you learn as a child to stand on the right and let people pass on the left, regardless of how crowded or empty the escalator is. There are occasional loudspeaker reminders of that rule. When I moved to the States, it exasperated me that people would block the entire escalator and wouldn't even think of budging, being completely oblivious of other people and their needs.

Another recent example -- I was late to a meeting and had to navigate through a long corridor, which was reasonably empty and wide enough for 6 people to walk shoulder to shoulder. No problem, except for a lady in front of me, who not only walked just fast enough that I couldn't execute a quick maneuver to pass her, but also did not walk in a straight path and instead oscillated quickly and unpredictably. We walked for half the length of this passage, before I finally had an opening to pass her.

Generally, slow walkers are not a problem. Slow walkers in narrow passages that act as if they're a sole Earth inhabitant -- are.

<comment><USER10> Yes. There's a weird sense of, "Man, people think there are all these _rules_..." in TFA.

Well, there _are_.

</comment></comment><comment><USER11> I lived in the southern-most point of Kowloon, Hong Kong, easily one of the most crowded areas on earth, and also one with the highest concentration of tourists. This never fails; go to the gate of any metro stop and you will find a group of tour-bus idiots holding hands in a road-blocking vigil.

How about the Shoulder-to-Shoulder Walkers: the obstructionist quartet of parallel dimwits.

Or guy who likes to stand in the middle of the moving walk way when I am running to board a flight (bonus if he has no luggage.)

</comment><comment><USER12> I have a similar but slightly different issue: raging at bicycles while walking on the sidewalk. I've been hit twice, by completely unrepentant cyclists, and had near misses with scores of others. I will always give a dirty look at a cyclist on a sidewalk, the meanness in direct proportion with their speed.

One that gets me: riding in a business district right next to open shop doors --someone could walk out and get seriously injured. For these cyclists, I will sometimes step in front of them (if I can safely) and nicely tell them to take it to the street.

<comment><USER13> You're right, bicycles do belong on the street -- it's actually safer for them there (most accidents are at intersections, and the closer you are to the middle of the road, the more visible you are).

However, far worse than pedestrian ragers are car ragers. There's something about being isolated in a bubble that turns ordinary people into ragers. And some of these car ragers believe that bicycles belong on sidewalks and deliberately endanger bicyclist lives to force them onto the sidewalk.

There's no easy solution, but one is simply more bicyclists, making bicyclists a common site on roads.

</comment></comment><comment><USER14> Walking-etiquette seems to be even less established/clear in places in the UK where there are many tourists, expats and/or overseas students.

I've lived both in London and Oxford now, and in both these cities (but especially Oxford) there seems to be no default side of the road/sidewalk to walk on, or for passing people, leading to all kinds of interesting situations.

There is less bumping into one another here, probably, because most people here seem quite polite, but 'after you, no after you', and 'left-right-left dancing, as two people approach one another from opposite directions and consider on which side to pass', are quite commonly observed :)

I wonder how the left VS right side of the road issue + the idea that pedestrians should walk on the other side than traffic, so they can see cars coming - forked on top of it, works out in other, similar places, and whether it could lead to different local optima ?

</comment><comment><USER15> This article was clearly written by someone who A) Doesn't live in a city and B) Never had to get anywhere by walking.

<comment><USER16> The previous post was clearly written by someone who A) Is an aggressive walker ;-)

</comment></comment><comment><USER17> And yet another case of " Am I free to impede the freedom of others? " type of conflict.

</comment><comment><USER18> This Improv Anywhere "mission" seems apropos:

<http://improveverywhere.com/2010/06/08/the-tourist-lane/>

</comment><comment><USER19> Closely related:

Checkout-Line Rage: When you empty your shopping cart with only one hand because you're on the phone. When you don't step forward to enable the next person to emply her cart. When you take 27 items through the express line. When you pay by credit/debit/check/etc. and don't know how. When you use coupons.

Movie Theater Rage: When you enter the theater 5 minutes after the movie started and complain you can't find a seat. When you talk during the movie. When you text during the movie. When you bring your baby. When you put your feet on my chair, next to my head. When you say, "Here comes the scene where the car hits him!"

Neighbor Rage: When your yard sale visitors block my driveway. When your idiot kid shovels your snow onto my driveway. When your dog shits on my lawn. When you play any Rick Astley song while you wash your car.

Work Rage: When you put the empty coffee pot on a hot burner. When you leave your fish sandwich in the refrigerator for 3 weeks. When you touch every donut just to see what they are. When you buy the last Snickers from the vending machine. When you wear too much fragrence. When you bitch about others wearing too much fragrence.

Previous Programmer Rage: When you name all your variables x, xx, xxx, and xxxx. When you have the exact same code 9 times in the same program and I only changed 8 of them. When you document anything 4 different places, all of them differently. When you promote your code before bothering to test for outlying cases. When you don't sign your work so I don't know who to bitch about.

<comment><USER20> > When you don't sign your work

Also, when you put your name anywhere in the file, since not only the code is going to outlive you career there, I can get more detailed information from the VCS. It's like a badly drawn graffiti tag.

<comment><USER21> Some of us have done too much work in environments where VCS scares people.

Actually, when I worked with UniBASIC/Datatel, VCS was basically impossible because the architecture was so bizarre. Unless I wanted to write my own, and of course I had actual tasks I was trying to accomplish and writing a VCS was not really worth it if I couldn't get anyone else to use it.

Better to adopt the habit of copying database records (which doubled as source files) with a note of the date and my initials, since that's how it was done. Well, also I did quit.

<comment><USER22> One nice use of git in this circumstance is just turning some directory into a versioned directory. Then every time you work on it, you commit everything that's there with a comment "all the shit everyone else did since I last touched it", then you have a nice record of what you did and also big clusters documenting whatever fuckups may have occurred.

<comment><USER21> I seriously considered it. It probably would have worked, since database tables were implemented as delimited text files. [1][2]

But our vendor had their own deployment system, and there was zero chance of them sending us Git patches instead of their proprietary ones, and most of what we did was integrate patches from the vendor into our code. So really I took the only option available to me.

[1] <http://en.wikipedia.org/wiki/Pick_operating_system>

[2] <http://en.wikipedia.org/wiki/Rocket_U2></comment></comment></comment></comment></comment>


Nerd merit badges - <AUTHOR> http://www.nerdmeritbadges.com/

<comment><USER2> I'll fess up, I totally don't understand the crown-wearing horse in the rain.

</comment><comment><USER3> i love it! thanks for the link!

<comment><AUTHOR> Glad you liked it. I thought it was pretty neat too. :-)</comment></comment>


Is the AP worth $2.50 a word? - <AUTHOR> http://mashable.com/2009/08/02/associated-press/

<comment><USER2> I would imagine that a random sentence from an AP story has been written word for word in some shape or another somewhere on the net. This would be especially true with headlines as more bloggers go to cover the news. Is the AP going to filter their own stories to make sure they are not using a headline that was previously used?

I see Twitter as the place news breaks, not the AP. With everyone having access to Twitter the playing field is even on breaking news stories. Maybe we should all just follow Twitter and write as many clever headlines as possible, then send the bill to the AP when they will undoubtedly use the same headline.

</comment><comment><USER3> no

</comment><comment><USER4> $2.50 a word to _reprint_ it, not to read it.

So the answer for me is no, but if I had a way to generate more than that through clever advertising or some other method, then of course it's worth it.

<comment><USER5> But you're already allowed to quote the AP for fair use reasons.

<comment><USER4> Exactly. So the question in the title is moot for most people.

</comment></comment></comment><comment><USER6> Seems crazy to me, except maybe the $100 for the full article legally. I could see a few select, high quality pieces being bought in full for $100 to round out certain kinds of upscale sites or newsletters.</comment>


OpenStreetMap creates and distributes free geographic data for the world - <AUTHOR> http://wiki.openstreetmap.org/wiki/Main_Page

<comment><USER3> OpenStreetMap is awesome but not really a map service, it hosts the open data and the map editor/wiki. You can use their map to a certain extend but if there was a huge spike in traffic, their site would fall. If you want a good service based on OSM with directions and more, you have to use something else such as mapquest which is US based or host it yourself.

<comment><USER4> Or MapBox - [http://www.mapbox.com/](http://www.mapbox.com/)

Though, MapBox is _extremely_ expensive if you require SSL support (because your site is on SSL) and you are a startup. You can't even solve it yourself by performing the SSL termination and proxying the requests as that is prohibited in their T&Cs.

But at least they exist and offer a really beautiful map style based on the OSM data. Still US based though, but they also provide TileMill so you can host your own (though not using their very good Streets styling).

<comment><USER5> Another option for map tiles is [http://www.thunderforest.com](http://www.thunderforest.com)

On the data side there's the recently launched [http://opencagedata.com](http://opencagedata.com) (disclosure, I'm the founder).

The point is with OSM there's more than one way to do it. You can dive in, get your hands dirty and do it all yourself, or work with a rapidly growing ecosystem of service providers who do the work for you at a cost. With private geodata / map providers, be they internet giants like Goog or national mapping agencies there is their way or ... their way.

<comment><USER4> My biggest use-case for maps on web-sites is to simply communicate a location.

Not to navigate by car, by bike, by foot. Not to show advertiser bubbles, or utilities.

Just a clear communication of "The point in question is in this neighbourhood, at that point.".

For me, that's the beauty in MapBox's Streets style... it does that one thing really well. Retaining enough countryside detail to make location recognition very good, and it works brilliantly in a city. Yet at the same time it's neutral enough to look great no matter how bad the design of the web-site it appears on.

I definitely prefer non-US, and non-giant mapping providers, but there's a lot to be said for cartographers who design maps to be useful generically for location recognition rather than anything else. I strongly feel that this is what Google Maps got so right, and is also why MapBox will do very well.

More than the tech, design matters.

<comment><USER6> I agree with this, which is why the new Google Maps rubs me up the wrong way. I don't like how it changes the emphasis of different streets and roads depending on what you've searched for. A major road is a major road, and shouldn't turn into a minor road just because the restaurant you clicked on isn't on it.

We look at a map of our town or city, and the main roads in and out are the spines - everything is off one of them. If you turn those white, and remove the emphasis, the map becomes far less readable.

</comment></comment></comment></comment></comment><comment><USER7> From the OSM home page: "We started it because most maps you think of as free actually have legal or technical restrictions on their use, holding back people from using them in creative, productive, or unexpected ways."

To me, this is the biggest issue using other mapping services. T&Cs can be a real pain - API usage restrictions, data usage restrictions, quotas, licensing.

Mind you the restrictions themselves are not the big deal but the fact that most major mapping providers don't make these restrictions clear enough - <USER2> have to sift through the terms page in most cases and read vaguely worded "legalese" to figure out if what you're attempting to do violates their terms of use.

</comment><comment><USER8> I wonder if any American public agencies like NASA satellites pictures being public domain has something to do with that.

In Europe we pay public satellites companies an arm and a leg, and then the information is not free for taxpayers. You have to pay or fill long forms justifying the use of the data for an European company.

If you are the son or daughter of the required politician your request will be granted, if not you will wait as they simply ignore your message. I did it myself.

This means that any European maps startup(Asian is even worse), serving Europe's market is really f*cked from the start.

<comment><USER9> If they're public domain, they're probably available for europeans as well, though?

<comment><USER10> There is public domain satellite imagery for USA and Europe available from the US Government (e.g. NASA). There is public domain map data available for the USA, but not Europe available from the US Government (e.g. Tiger data).

</comment></comment></comment><comment><USER11> Ironically Apple Maps is based on Tom Tom's cartography (but succeeded in making things worse). Tom-Tom is a company from the Netherlands which acquired Tele Atlas ([https://en.wikipedia.org/wiki/Tele_Atlas](https://en.wikipedia.org/wiki/Tele_Atlas))

</comment><comment><USER12> That is simply not true. TomTom is in the Netherlands and their map is here: [http://routes.tomtom.com](http://routes.tomtom.com)

<comment><USER13> But is it really global? For example Kabul only has 2 roads on tomtom

<comment><USER14> So the real question is: Is it complete? Not "is it global". But I'm sure OpenStreetMap is incomplete as well, although maybe less incomplete than others.

<comment><USER13> I think there's a difference between being incomplete and effectively not having mapped a country at all.

</comment></comment></comment></comment><comment><USER15> What does "global non-US maps service" mean?

Does it mean a service which provides worldwide mapping that's not based in the US?

<comment><USER16> yes

</comment></comment><comment><USER17> [http://maps.yandex.com](http://maps.yandex.com)?

<comment><USER18> They use cartography from Navteq, a Chicago-based Nokia subsidiary. [https://en.wikipedia.org/wiki/Navteq](https://en.wikipedia.org/wiki/Navteq)

<comment><USER19> The relevancy of that depends on what the motivation for declaring OSM the only non-US map.

If it's with reference to NSA (one can only guess, but that seems to be in line with the times), that you won't get tracked, it's irrelevant where the map was made, as long as the map servers are operated outside the US.

</comment></comment></comment><comment><USER20> Technically speaking: Isn't Nokia HERE also a global non-US map-service, seeing as Nokia is based in Finnland?

<comment><USER11> Nokia's cartography is from Navteq, a Chicago-based subsidiary. [https://en.wikipedia.org/wiki/Navteq](https://en.wikipedia.org/wiki/Navteq)

<comment><USER21> Actually, Navteq is no longer an independent entity since 2011-2012. The business unit is now called HERE [1] and mostly divided between Germany and the US.

It provides maps services for MS, MapQuest, Garmin, Amazon, Yahoo! Maps, Yandex, BMW, Oracle GIS...

But the Navteq brand still exists.

[1] [http://www.nokia.com/global/about-nokia/about-us/our- structu...](http://www.nokia.com/global/about-nokia/about-us/our-structure/)

</comment></comment></comment><comment><USER22> Why would I directly use it through browser and not third parties? What is their differentiating factor? I am not being facetious, but just being curious. I only know 4 square and maybe Apple uses their data.

<comment><USER23> Because in a lot of places, OSM has more accurate points-of-interest coverage.

I maintain the map for a fair chunk of Soho in London. On Google Maps, I've seen places I know about filled with points of interest that aren't actually there, geo-targetted SEO spam and so on.

For various bits of London, if the map says it's there, I either put it there or checked it.

I just checked an area of London that I maintain for OSM but on Google Maps: it's a load of shit. Shops and businesses that closed years ago still on the map. Large corporations inside police stations. The Victoria Embankment Gardens marked as being in the River Thames.

</comment></comment><comment><USER24> What about [http://www.mappy.fr/](http://www.mappy.fr/) ?

<comment><USER12> that is mostly TomTom behind the scenes, but that is European as well.

</comment></comment><comment><USER25> TIL Nokia's maps are based in the US. Odd...

</comment><comment><USER26> Wikimapia? BTW it has OSM layer support now.

</comment><comment><USER27> I think BlackBerry maps has global reach (and BlackBerry is a Canadian company).</comment>