Dynamic languages are static languages - <AUTHOR> http://existentialtype.wordpress.com/2011/03/19/dynamic-languages-are-static-languages/ <comment><USER3> "Since _every_ value in a dynamic language is classified in this manner, what we are doing is agglomerating _all_ of the values of the language into a single, gigantic (perhaps even extensible) _type_."

Yes, that's right, but you're overlooking the upside of doing things this way. What this gives us is the ability to define new types -- to extend the universal type, if you want to put it that way -- _at runtime_. No longer do we need this strict separation between compilation time and runtime; no longer do we need the compiler to bless the entire program as being type-correct before we can run any of it. This is what gives us incremental compilation, which (as I just argued elsewhere, <http://news.ycombinator.com/item?id=2345424>) is a wonderful thing for productivity.

"[...] you are depriving yourself of the ability to state and enforce the invariant that the value at a particular program point must be an integer."

This is just false. Common Lisp implementations of the CMUCL family interpret type declarations as assertions, and under some circumstances will warn at compile time when they can't be shown to hold. Granted, not every CL implementation does this, and the ones that do don't necessarily do it as well as one would like; plus, the type system is very simple (no parametric polymorphism). Nonetheless, we have an existence proof that it's possible at least some of the time (of course, it's uncomputable in general).

"[...] you are imposing a serious bit of run-time overhead to represent the class itself (a tag of some sort) and to check and remove and apply the class tag on the value each time it is used."

For many kinds of programming, the price -- which is not as high as you suggest, anyway -- is well worth paying.

In particular, dynamicity is _necessary_ whenever data live longer than the code manipulating them. If you want to be able to change the program arbitrarily while not losing the data you're working with, you need dynamicity. In dynamic languages, the data can remain live in the program's address space while you modify and recompile the code. With static languages, what you have to do is write the data into files, change your program, and read them back in. Ah, but when you read them in, you have to check that their contents are of the correct type: you've pushed the dynamicity to the edges of your program, _but it's still there_.

For this reason, database systems -- the prototypical case of long-lived data -- have to be dynamic environments, in which types (relational schemata, e.g.) can be modified without destroying the existing data.

So to argue -- rather arrogantly, I might add -- that dynamic languages are really static languages is to overlook an operational difference that is a commonplace to anyone who uses both.

<comment><USER4> 1) If CL can only sometimes enforce invariants about type sometimes, and in special cases, I'd argue that the original statement was true. You'll still be deprived in many (probably most) cases. (People have survived falls where their parachutes didn't open, but in an essay most people wouldn't say "You can of course jump out of a plane without a parachute" despite the existence proof. And saying "Although there have been cases where people have survived, you can't generally expected with any reasonable success rate to survive a fall from an airplane without a working parachute" just isn't good writing.)

2) I don't get the database analogy. When I add a column to a table, the size of the table on disk does indeed change. Not to mention the schema can be changed statically. If you add/remove/modify a Field in a FieldList, the type doesn't change. So that really isn't a static vs dynamic issue.

<comment><USER5> About 1): I think the point was that CL can only sometimes enforce invariants _at compile time_. If the compiler can't prove that something is always true or always false, it will simply emit code to do a runtime check.

<comment><USER4> But as a general principal, you can't reliably or consistently do this in a dynamic language in any sort of guaranteed fashion, which was implicit in the original statement being refuted.

Even with a runtime check, you still CAN pass in a bad value, and the program will just fail, either locally or globally.

(Not to mention that the paragraph immediately following the refuted statement starts with 'Now I am fully aware that "the compiler can optimize this away", at least in some cases, but to achieve this requires one of two things (apart from unreachable levels of ingenuity that can easily, and more profitably, be expressed by the programmer in the first place)...')

</comment></comment></comment></comment><comment><USER5> This article is full of FUD and completely misses the point of static/dynamic distinction (flame-war, if you want). It's a perfect example of someone arguing to make a point without even trying to understand the opposite position.

No one has ever argued that dynamic languages are more expressive than static languages. This is impossible, as long as we're considering Turing-complete languages. The fact that Harmony/EcmaScript 5 reference compiler was implemented on OCaml. However, it is equally futile to argue that they are _less_ expressive[1].

"you are imposing a serious bit of runtime overhead to represent the class itself [...] and to check [...] the class [...] on the value each time it is used."

Users of dynamic languages simple trade runtime efficiency for compile-time efficiency. What's wrong with that?

The point of having multiple languages is that different languages make different things simple and easily expressible. Sure, you can do dynamic programming in Haskell or OCaml, but the language is going to work against you in some way, requiring you to specify your intension in a particularly lengthy and awkward way (think Java, except Java makes you do that for any kind of programming).

[1] Ironically, the author fails to point out the one way in which static languages are more "expressive" than dynamic languages: overloading on function's return type. I have yet to see that in a dynamically typed language.

tl;dr: All Turing-complete languages are equally expressive, but different languages make different things simple.

<comment> alok-g I have not used dynamic languages enough to know what I say before for sure, but this is my current understanding:

>> No one has ever argued that dynamic languages are more expressive than static languages. This is impossible, as long as we're considering Turing- complete languages.

As I think you note in your last sentence, "expressive" here is not meant to imply whether something can be expressed in the language or not. It's rather about being able to express the concept in the language in a way that is no more or less complex than the concept itself, and expresses no more or less than the concept itself. So the Turing-complete argument does not really apply. (John McCarthy in fact had to say the same thing about Tuning-machines themselves -- that while they help to understand limits of any machine, for AI programs they are at too low a level to help real humans build new insights into AI beyond understanding those limits.)

>> Users of dynamic languages simple trade runtime efficiency for compile-time efficiency. What's wrong with that?

1\. A program is run more times than it is compiled (hopefully). So the goal is really to make the effective combination of the two more efficient in a given usage scenario. On the other hand, with a dynamic typed language, if N seconds are shoved away from compilation, at least N seconds will be added to run-time.

2\. The bigger issue I have is that dynamic languages often turn compile-time "errors" into run-time errors. Run-time errors take longer to detect and correct and the process of doing so is bound to see less automation. This is not to say of course that dynamic typing is always an issue.

<comment><USER6> > 1\. A program is run more times than it is compiled (hopefully). So the goal > is really to make the effective combination of the two more efficient in a > given usage scenario.

You're not counting development time, or rather, cost.

Even if I eventually need the efficiency of a statically typed language, dynamic languages let me save the time that I would have spent satisfying the type checker on code that didn't make it into that version.

> On the other hand, with a dynamic typed language, if N seconds are shoved > away from compilation, at least N seconds will be added to run-time.

It's unclear that that's true. In fact, the cost of compile-time type checking is typically more than the cost of run-time type checking during much of development.

> Run-time errors take longer to detect and correct and the process of doing > so is bound to see less automation.

Run-time errors aren't detected until run-time but since folks with dynamic languages get to run-time faster, they're often detected earlier.

As to "less automation", I don't see it. Do you have an automated system that corrects type errors?

<comment> alok-g I partly agree to what you said, but just for sake of completeness:

>> Even if I eventually need the efficiency of a statically typed language, dynamic languages let me save the time that I would have spent satisfying the type checker on code that didn't make it into that version.

This conversion does not sound so trivial to me generally. At times converting from a dynamic language to a statically typed language requires either a change of code architecture or a massive refactoring operation.

>> Do you have an automated system that corrects type errors?

Not corrects, just detects. I have at times faced issues when code runs for half-an-hour and then crashes just because a the given object could not be converted to the needed new type at run-time. My reaction: "Sigh! I wish the compiler told me earlier during compile-time!"

<comment><USER6> > This conversion does not sound so trivial to me generally. At times > converting from a dynamic language to a statically typed language requires > either a change of code architecture or a massive refactoring operation.

I didn't claim that it was necessarily trivial. However, I'm happy to claim that it is very rarely required. What is it that they say about premature optimization?

That said, I think that you're overstating the amount of work. As our python friends keep demonstrating, the amount of code that is actually performance- critical is usually fairly small and can be handled by special means once you get things relatively stable.

And, when it is required, it may be an indication of massive success. If you wrote the first version, said massive success may make the conversion someone else's problem. :-)

> Not corrects, just detects. I have at times faced issues when code runs for > half-an-hour and then crashes just because a the given object could not be > converted to the needed new type at run-time. My reaction: "Sigh! I wish the > compiler told me earlier during compile-time!"

No optimization produces speedups in every situation.

As to that particular problem, I develop in dynamic languages so I "never" have that problem after a significant amount of run-time.

To me, it's important to remember that dynamically and statically typed languages give you different rope with which to hang yourself, so it's best to program with that in mind.

To put it another way, it is generally agreed that it's a bad idea to write fortran in other languages even though it is possible. Why would you think that it would be a good idea to write static in a dynamic language or the reverse?

</comment></comment></comment></comment></comment><comment><USER7> This is an impressive and informative argument. It's a shame that it's aimed at a straw man.

I use the term "dynamic language" to refer to a well-recognized (though not perfectly agreed upon) set of languages. I didn't choose the term "dynamic," and I've never tried to argue that since they're _dynamic_ , they're better/more fun/more expressive than non-dynamic languages. Hence the straw man.

I use the term simply to distinguish between, say, the set {Java, C, C++} and the set {Python, JavaScript, Ruby}. Most people are aware of this usage and immediately understand the distinction. You could call the latter set "cranberry languages" instead of "dynamic languages" and it would be okay. As long as everyone understands the usage, it's a functional (no programming language pun intended) term.

<comment><USER8> It's not so much a straw man as it is a misnomer. What he's calling a "dynamic language," I (and I think most others) would call a "dynamically typed language." It's possible to have a dynamically typed, static language - <USER2> the dynamic keyword, that's what C# is, for example.

<comment><USER7> I try to avoid any discussion of "typing" when I comes to programming languages because I recognize both my own ignorance in the nitty gritty of language design and the general lack of consensus in the meaning of " _x_ typing" terminology.

</comment></comment></comment><comment><USER9> I _found_ this _article_ extremely _difficult_ to read, as he seemed more _concerned_ with _enunciating_ through italics than with _expressing_ his _point_ in a _clear_ and _unambiguous_ manner.

<comment><USER10> This and the comment suggesting that if you went to Carnegie Melon this would all be obvious were a bit of a turnoff.

<comment><USER11> I am pretty sure the Carnegie Mellon remark was just saying that a CMU CS graduate would have learned this already. Which is true, since the blog author (Bob Harper) teaches a course there which covers this very topic!

</comment></comment></comment><comment><USER12> Funny how he treats 'static typing' as the natural order and 'dynamic typing' as the special case. I would have pegged it the other way round. Machines are typeless, its all numbers until somebody puts (or doesn't put) a type system on it.

Plus it's rather meaningless. Bald is a hair color. Clear is a paint color. Silence is a syllable.

<comment><USER13> Your assumption is the natural order of computation are digital computers. I think some will argue that type systems are inherent in the world. Mass has a type, velocity has a type. mv has a type that is a function of mass and velocity.

Computation is about expressing the type system that is inherent in the computation. Modern computers not having types are an artifact of their implementation, but not of computation per se.

<comment><USER14> Whoa there. Church-Turing tells us that everything that is computable is computable by a universal Turing machine. It also tells us that a universal Turing machine and the lambda calculus are computationally equivalent. The lambda calculus is untyped. (There are typed lambda calculi, but they are not computationally more powerful than the lambda calculus. Some of them are less so.)

<comment><USER13> Right. Computability says that you can compute any computable function with the lambda calculus. But I'm saying something broader, which is that anything you're trying to model with computation has a type system. IOW, computability theory says that one can model any computable function, while type theory says that one can properly constrain it.

In essence you need both. You can compute if the number five is greater than the color red, but you may want to ensure that you never do.

</comment></comment></comment></comment><comment><USER15> As pointed out in a comment on the original, this is a well-known source of holy wars.

The interesting bit is that this argument is one of the sides of an equivalence. Dig up the old archives of LtU,

<http://lambda-the-ultimate.org/classic/lambda-archive.html>

and search for the big threads. This direction of the argument (dynamic languages are static languages) was made most forcefully, in my recollection, by Frank Atanassow.

However, the other direction _also_ applies: static languages are dynamic languages. This was first pointed out in LtU, to the best of my memory, by Kevin Millikin, here:

<http://lambda-the-ultimate.org/node/100#comment-1197>

Someone ought to write up the old days of LtU holy wars somewhere. They taught me more about programming languages than everything I ever read anywhere else.

(edit: minor wording)

<comment><USER16> And as in most holly wars, most arguments thrown around are dumb and without consequence to us, the developers that have to work.

Fact: I know of a single statically typed language that could be used for real-world usage and that gets operator-overloading right, and that is Haskell, a language who's authors list contains many PhDs.

Another fact: it is perfectly within reach of a talented sophomore student to implement a dynamically typed language with support for multimethods, which would get operator-overloading right, in the course of a single semester.

And yet another fact: dynamic versus static really is runtime versus compile- time and many languages to which we refer as being "static" or "dynamic" are in fact somewhere in between.

That's because -- real language designers ship.

And it would be perfect if the compiler would tell you all kind of things about your algorithm at compile-time, but you have to draw the line somewhere and start making compromises. And did I mention the halting problem? Yes, that's a problem for compile-time too.

</comment></comment><comment><USER17> One of the things that a 'dynamic' type system (or as the author would see it, a restriction to a single type) imposes on its creators is the need to make that single type as useful as possible. This includes things like being able to easily lookup an object's class, documentation, methods, properties, uses (is it a sequence? is it a map?, etc.). As a result, I find the design of the core libraries of dynamic languages like Clojure more well thought-out than say something like .NET. It's simple things like being able to treat a string as a sequence (Haskell, a statically-typed language, does this), an 'object' as a map, a map as a sequence, etc. I wonder if it has to do with a sort of de-centralization of control; being dynamic seems to make a language more malleable and open to experimentation. Accomplishing the same things in a statically-typed language requires more planning (which means that after it ships, its too late).

I really appreciate a well-thought out static language like Haskell, but it still has some way to go for the common programmer. For now, I don't think that the practical outcome of this article is for programmers to abandon dynamic languages.

<comment><USER8> You could do that sort of classless message passing in a static language. In fact, isn't that how message dispatch in Obj-C works?

<comment><USER18> The only statically typed part of Obj-C is the C part, while the Obj-C types are themselves dynamic.

</comment></comment></comment><comment><USER19> To paraphrase an old joke about mathematicians: "He must be a computer scientist!" "How do you know?" "His answer is absolutely correct, but has no practical value."

Most of the points he makes do not touch any practical problems of this devide. For example: How do I get my XUnit tests to run if one of the functions/methods/whatever in a file does not compile because the software has changed? Ruby really excells at that: it fails at runtime. Java? Not so, it will break my whole test file at compile time. Any other number of similar examples can be found. Yes, its a problem that the language marrying both of these properties has not been found yet. But Haskell certainly isn't the one.

Also, the much respected Erik Meijer made a similar point long ago in a much better fashion: <http://lambda-the-ultimate.org/node/834>

<comment><USER20> As for you comment, if I were in the mood for trolling I would say: likewise. If you introduce a static error in a file, hopefully a tool will detect it, and the sooner the better. That you can't even run any code in the file because it makes no sense any more won't prevent your unit tests from running on other files (or at least a subset) if your program has at least a semi- correct architecture. At this point you just have to use the diagnostic information the compiler gave up to fix the syntaxic/typing problem, instead of trying to fix it at a latter stage for a greater cost. There is absolutely no point in trying to _test_ a program that statical analysis has _proved_ to be wrong.

<comment><USER19> In a theoretical sense: yes. But for practical reasons, I do not have one test per compilation unit, but multiple. Thats why I chose XUnit as an example: classes are groups of tests, while the actual tests are written in methods. So it makes sense to defer (or at least to be able to defer) "broken parts" to have a better understanding of how much is exactly broken. And "just have to use" is sometimes not that easy if for example your task is ripping out a whole subsystem and fitting a new one. You would really like to see progress there instead of "tiny feature Y is not provable by your compiler, so I won't tell you whether feature X,Z and B work". So I am interested in whether only a part of the compilation unit makes sense. Ruby does that: I can tell my test suite that I fully expect this test to be broken at the moment and that I want that reported. In Java, I'm lost until I satisfied the complainer - ehm - compiler.

Thats actually the reason why I know more then one Java and C shop that use Ruby/Python/similar for their test suite.

</comment></comment></comment><comment><USER21> "Now I am fully aware that "the compiler can optimize this away", at least in some cases, but to achieve this requires one of two things (apart from unreachable levels of ingenuity that can easily, and more profitably, be expressed by the programmer in the first place). Either you give up on modular development, and rely on whole program analysis (including all libraries, shared code, the works), or you introduce a static type system precisely for the purpose of recording inter-modular dependencies."

Or you can use a tracing jit. You monitor at runtime the actual values taken by the variables and produce type-specialized code.

</comment><comment><USER13> Good blog entry.

I do like the direction C# is going with the dynamic type. I want a statically typed language, but I want the ability to have dynamically extensible type classification -- when I want it.

<comment><USER22> Are you referring to extension methods? Or the "dynamic" keyword/type? I've only used the dynamic type a little bit, can you use it to solve the type vs representation problem he is referring to?

Thanks

<comment><USER13> Yes. Basically it works by using the class hierarchy to define types. And w/ subtype polymorphism you get new types that are also classified under their base types. And with dynamic you now get the ability to join the "uber type" and be classified dynamically.

</comment></comment></comment><comment><USER23> "Another part of the appeal of dynamic languages appears to be that they have acquired an aura of subversion. Dynamic languages fight against the tyranny of static languages, hooray for us! We're the heroic blackguards defending freedom from the tyranny of typing! We're real programmers, we don't need no stinking type system!"

I don't know anyone who prefers dynamic languages who actually thinks this way. I program in both statically- and dynamically-typed languages, and I prefer dynamically-typed languages because it's less code I have to write.

<comment> loup-vaillant Have you tried _real_ statically typed languages, like ML or Haskell? They're really concise. Sometimes even more so than Python or Ruby.

</comment></comment><comment><USER24> Here is why the article doesn't make sense to me: I frequently find that languages in the "dynamic" group (python, ruby, js, smalltalk etc) feel much, much more similar to languages in the "ultra strict" type group (haskell, ocaml, etc), than either do to say, the medium group (c(#|+)*, java). If the case were really that there is some sort of natural order along the type strictness lines, wouldn't it be that python felt closer to c than to haskell in terms of power and expressiveness?

<comment><USER25> How does Smalltalk get lumped with C and Java and not with Python and Ruby?

<comment><USER24> Because I thought of it later and clicked in the wrong place and didn't notice. Thanks for the pointer. Editing parent.

</comment></comment></comment><comment><USER26> While the basic perspective of this post is interesting, I find the authors rhetoric entirely off-putting.

Example:

 _"There are ill-defined languages, and there are well-defined languages. Well-defined languages are statically typed, and languages with rich static type systems subsume dynamic languages as a corner case of narrow, but significant, interest."_

I would like to see justification for the claim that there does not exist a single well defined language with runtime type enforcement.

This tone runs through the entire article, which is mostly begging the question rather than supporting the premise. I'd love to see the author's point illustrated by contrasting Haskell/ML and Python/Scheme/Ruby code listings or something similar.

Instead the article merely restates its premise in an attempt to make an impression, rather than to inform. Disappointing.

</comment><comment><USER27> > That's one argument, and, to be honest, it's quite a successful bit of > marketing.

who markets the dynamic languages? pls show me this person/firm. i'll try to hire them

</comment><comment><USER28> Author apparently knows has knowledge and experience, but attributing psychological traits to tools like programming languages is a poor trick and a fallacy.</comment>


Show HN: Develop Formal Language Designed as Digital Scientific Notations - <AUTHOR> https://www.guaana.com/projects/scientific-notations-for-the-digital-era <comment><USER2> In keeping with the spirit of "Show HN" is there anything I can play with or try out?</comment>


Let's talk about WSGI - <AUTHOR> http://www.b-list.org/weblog/2009/aug/10/wsgi/ <comment><USER2> FTA:

 _The WSGI spec impresses upon its readers (or upon this reader, at least) the overwhelming desire for everybody to just quiet down and use ISO-8859-1 instead of whatever character set is actually convenient._

Is this really true? What a disaster. If you're going to pick/encourage a single encoding, how can that choice _not_ be UTF-8?

<comment><USER3> Looking at PEP333, the only reference to ISO-8859-1 is:

 _Note also that strings passed to start_response() as a status or as response headers must follow RFC 2616 with respect to encoding. That is, they must either be ISO-8859-1 characters, or use RFC 2047 MIME encoding._

start_response is to set the HTTP headers. So I suspect that's a requirement of the HTTP spec for headers (correct me if I'm wrong).

I don't believe WSGI cares about the character set you use for the HTTP message body.

<comment><USER4> Well, that and all the places where it goes on about how all "strings" it mentions must be bytestrings (even on platforms which don't have bytestrings), must only contain code points lower than 0xff, must be str, precisely str and neither any other type of string nor any subtype... and all of it to try to pretend that Unicode doesn't exist.

Yeah, HTTP is a byte-based protocol, and yeah, headers have to be ISO-8859-1 or MIME-encoded. But that doesn't mean that the particular bytes HTTP uses have to leak up into what are supposed to be high-level applications. There's no earthly reason why -- with _every_ Python implementation moving to native Unicode strings -- WSGI should still have this attitude.

<comment><USER2> OK, I'll byte: what python platforms lack bytestrings? Is there an PDP-10 port I missed somewhere? :)

<comment><USER4> CPython 2.x and Python implementations built directly on it have bytestrings. PyPy does, as far as I know. And Unladen Swallow is a CPython fork, so it does.

But everything else either has strings which are natively Unicode (and hence not byte-based in the sense we want here) or run on platforms where the underlying string abstraction is natively Unicode. This includes Jython, IronPython, Python 3.x, etc.

WSGI would like very much for those platforms to do something else, because it has to expend a bit of verbiage to basically say "shame on you for having these dangerous Unicode strings, don't you dare try to take advantage of them!"</comment></comment></comment></comment></comment>


How to find job in these hard times? - <AUTHOR> How to find job in these hard times?? <comment><USER2> job search?

indeed.com is a good place to start....</comment>


Awesome Tensorflow: A curated list of Tensorflow resources - <AUTHOR> https://github.com/jtoy/awesome-tensorflow# <comment><USER2> Been looking for more high level examples and articles on TensorFlow. This is perfect -- thanks!</comment>


A Digital Rumor Should Never Lead to a Police Raid - <AUTHOR> https://www.eff.org/deeplinks/2016/09/digital-equivalent-rumor-should-never-lead-police-raid <comment><USER3> FWIW, the prospect of being suspected and questioned (but not necessarily raided) because of your IP location is one of the best metaphors to relate what it's like as a minority to be searched just because you are of the same race as a suspect in an nearby active case.

It is _perfectly logical_ to say that if there was an assault on a college campus and that the victim said the perp is an "Asian male", for the police to _not_ prioritize the questioning of all non-Asians in the area. And if the report was made within minutes of the incident and the suspect is on foot, it may be justifiable to target the 5 Asian males loitering around rather than the 95 people of other demographics. What logical person would argue otherwise?

But the problem creep comes in the many, many cases when police don't have a threshold for how long and wide that demographic descriptor should be used. Within 1000 feet of the reported attack? A mile? Why not 2 miles? And why not 2 days or even 2 weeks after the incident, just to be safe?

The main difference in the ISP/IP metaphor is that in the digital world, it's possible to imagine search-and-question tactics that aren't time-consuming for the police or for the suspect. Hell, the suspect might not even know their internet-records were under any suspicion. OTOH, there are definitely real- world places in which for the police (and their community and most specifically the politicians), hand-cuffing and patting someone down has been so streamlined and accepted by the powers-that-be that it isn't a bother for them (the police) either.

edit: To clarify, I don't mean to get in the very wide debate on racial profiling, etc. But when I worked at a newspaper, we had a policy to not mention race unless the police could provide 4 or 5 other identifiers. That led to readers cussing us out because, they'd argue, knowing that the suspect was black is better than nothing. My point here is that sometimes, nothing is not always better than something, and that is most explicitly clear when it comes to broad IP range searches.

<comment><USER4> >" _But the problem creep comes in the many, many cases when police don 't have a threshold for how long and wide that demographic descriptor should be used. Within 1000 feet of the reported attack? A mile? Why not 2 miles? And why not 2 days or even 2 weeks after the incident, just to be safe?_"

The big difference being the cumulative nature of peoples' experiences. If the same police are repeatedly exposed to a disproportionate amount of crimes being performed-by(or accused) by a specific group, then it would only be logical for them to naturally stop/search that specific group more often. It's a game of numbers, and I see no reason for it to be demonized as much as it has been as some "systemic oppression". As long as the police don't falsify reports that exaggerate those numbers, and behave in a civil manner towards complying citizens, then it should be "okay".

Personally, I would say that profiling by race and gender alone is way to wide of a search-criterion. For all we know, the police are actually using other side-properties of the individuals in order to profile them more specifically, yet on the surface to others it appears crass and simply based off crude properties such as race/gender. I.e. it may even be a layered approach where they "back-off" when they hit a dead-end in their search through the "good indicators for being a criminal or have just committed a crime".

E.g.: Broken tail-light -> hiding face behind hoodie -> oh, well spoken individual that just lost a family-member, must be fine.

Or: Broken tail-light -> hiding face behind hoodie -> hmm's and haw's when asked to leave vehicle for DUI test -> acting aggressive -> etc.

<comment><USER5> _The big difference being the cumulative nature of peoples ' experiences._

Your post focused on the cumulative nature of the police experience, but completely neglected the cumulative nature of the minority's experience. Therefore I downvoted you.

<comment><USER4> I'm part of a different targeted-minority. The only times I felt it weighing on me more than as a nuisance, was when I actually had something to hide. Which shouldn't have a bearing on whether or not the police should target me or not, as long as they behave and I as a citizen don't escalate.

Edit: Grammar.

</comment></comment></comment></comment><comment><USER6> A similar example, while not a raid, hit me closer to home a bit over a year ago.

I'm sure that if you follow US news at all, you heard about the looting and arson in Baltimore in the Spring of 2015. While the city was on edge in the wake of a citizen's death in police custody, there had already been some minor demonstrations and a brawl between protesters, baseball fans, and provocateurs downtown earlier in the month.

Then, on the day of the funeral held for the man killed in custody, word started to spread of plans for some sort of riot or mass havoc being planned later in the day. Later, authorities pointed to a digital "flyer" being passed around yet nobody investigating this outside of the police has found any source or initial copy of this flyer that dates before this was published in the media. Trust me, we looked.

In response to this alleged threat to public order, cops with riot gear and a freaking mini-tank showed up at a major public transit hub right as school let out. Transit was shut down and everyone was corralled into a small area next to a busy street and without a way home for hours.

Eventually, tensions got high enough that when the first pissed off teenager or whoever chucked a bottle or a rock, it didn't take long for others to join in. In the ensuing vandalism and arson, hundreds of thousands in damage was caused, people got hurt, the city was put under curfew for a week, and to this day, businesses and residents have suffered from the reputation gained (worsened?) that day.

Looking back, the part that really sticks out to me is how the whole thing was triggered (assuming you don't think it was a deliberate provocation) by some "social media flyer" that claimed some teens were planning to run around starting shit after school. This rumor summoned riot police, shut down transit, stranded loads of adults and teens alongside the road, and facing down a phalanx of police plus one armored tactical vehicle.

Would those shops and homes still been damaged or those stores been looted and burned in a wave of unrest without this rumor-inspired flashpoint? No idea. But it sure didn't help.

<comment><USER7> A spoiler is contained in the following reference.

This reminds me of Ghost in the Shell: Standalone Complex: 2nd Gig, wherein a single actor causes an AI to rotate military forces within a refugee area, with the explicit intention of increasing anti-police sentiment among refugees.

The world is a stage and, without proper leadership, crowds will behave in ways they believe are allowed within the hard constraints of the social order. This is at the core of the BLM movement, and a pillar of the Occupy movement: police must not view themselves as separate from the policed. For cybernetic reasons as well as pathos ones. Otherwise, from the perspective of the social order, the distinction between the two is error.

<comment><USER8> You missed the even deeper point of Ghost in the Shell: The standalone complex.

The original commentator described a standalone complex. Copy cats without an original.

<comment><USER7> I actually did not miss this, I simply did not have the space to say it, nor was it relevant to the point I was making.

It is strange to tell someone you have likely never met that they have missed something, based on very little information provided to you. This might be a sign of a cognitive impairment on your part, or perhaps a broken worldview. I don't have time to discuss either of these points, but it may be helpful for you to consider why you believe you can "read the minds" of people over the Internet.

<comment><USER8> I didn't mean it like that. I meant it like "you missed this parallel with the post in question" not "you missed this concept entirely".

So back at ya with the mind reading.

</comment></comment></comment></comment></comment><comment><USER9> It starts off saying:

> If police raided a home based only on an anonymous phone call claiming > residents broke the law, it would be clearly unconstitutional... Yet EFF has > found that police and courts are regularly conducting and approving raids > based on the similar type of unreliable digital evidence: Internet Protocol > (IP) address information.

I'm not sure that these two are equivalent. A better example would be the police raiding my home based on an illegal phone call that came from my phone number. Sure, the fact that it comes from my phone number doesn't mean I did it, but it's certainly evidence that points to me, just as an IP address can be.

In general, the summary linked to above makes it sound like police should never use IP addresses. To be fair, if you read the whitepaper itself, it doesn't say this, but rather that police should be _careful_ in how they use IP addresses. Specifically, it recommends that police "conduct additional investigation to verify and corroborate the physical location of a particular decive connect to the Internet whenever police have information about an IP address' physical location, and providing that information to the court with the warrant application".

<comment> crooked-v > A better example would be the police raiding my home based on an illegal > phone call that came from my phone number.

That's broadly overestimating the reliability of IP addresses, though. Consumer IP addresses change on a random basis, based on whatever obscure policies an ISP has set up at the time.

<comment><USER10> That doesn't matter.

Police get the physical address from the ISP. The ISP knows which IP was assigned to each customer at any particular time because they log it. Yeah, it's theoretically possible they don't keep the logs, but IRL they always do.

<comment><USER11> You have to remember that the ISP might have a physical location if this is a paying customer on a landline, but that's not usually the case. Reverse IP address location lookups are unreliable as worst and inaccurate at best. That house in Kansas that they mentioned? It's the default "middle of the US" location that is returned when they don't actually know where you are.

<comment><USER12> Any ISP is going to have a more accurate idea of which customer has an IP than a generic geolocation service. An ISP in Ohio is not going to return a latitude and longitude that happens to be in Kansas.

</comment></comment></comment></comment></comment><comment><USER13> In the 1980's, some powerful senator's cell phone was snooped on, resulting in a major scandal when the contents of his phone calls was revealed in the press.

This resulted in Congress passing laws that made it illegal for radios to be capable of listening in on cell phone frequencies or being easily modified to allow them to do so.

It is likely that only similar widely publicized embarrassments and privacy violations of the rich and powerful will result in any meaningful legislative attempts to curtail the growth of the police state in the United State.

They clearly don't intend to do much about it unless they themselves are the victims of such abuses of power. As long as it's just "nobodies" or social or political outcasts who are the victims the police and surveillance aparatus, it's doubtful that much will change.

<comment><USER14> Your example shows why that _doesn 't_ work. The correct solution to people eavesdropping on calls is end-to-end encryption, which we _still_ don't have for phone calls. Which means that bad people can still eavesdrop.

But meanwhile we now have a stupid law that prevents honest people from buying interesting radio hardware and makes it even less likely that we will ever have open cellphone baseband processors etc.

</comment></comment><comment><USER15> A few more examples of botched attempts at IP-based raids:

[http://arstechnica.com/tech-policy/2011/04/fbi-child-porn- ra...](http://arstechnica.com/tech-policy/2011/04/fbi-child-porn-raid-a- strong-argument-for-locking-down-wifi-networks/)

The one I'm familiar with is the Sarasota, FL incident, where a married couple was raided in the middle of the night in response to alleged child pornography. Their unit was in a condominium, practically on the edge of Sarasota bay, where various boats moor and dock. After further investigation, it was discovered that the traffic had originated from some guy in a boat using a high gain antenna. If I remember correctly, he had cracked their WEP key and illegally accessed their network to obtain nasty images, lots of them. The insecurity of WEP has been known about for a long time, presumably by LE too.

It is conjecture on my part, but a few things come to mind regarding alternative methods of investigation that may have avoided this. 1. Contact the ISP first (in this case I think it may have been Verizon). I remember Verizon having the ability to remotely reset router passwords, which possibly suggests the ability to remotely view associated client data, e.g. MAC addresses and hostnames and maybe even OS. This may have provided valuable clues. 2. Note the protocol used by the wireless router. 3. Wardrive a bit. 4. Maybe check for logs of any accounts the boat guy logged into while on their network.

Regardless, the raid was botched and pretty traumatic for the couple, considering they were operating a legal AP probably secured with what they thought was adequate encryption. At the time of this event, WEP was standard default, straight from the ISP. They'd done nothing wrong.

More info: [http://www.heraldtribune.com/news/20110131/wireless- router-h...](http://www.heraldtribune.com/news/20110131/wireless-router- hijacked-for-child-pornography)

<comment><USER16> most police, especially in smaller areas, don't have the people on hand or on call to explain all this "techy" stuff to the people who make these decisions OR those people choose to ignore them... it seems like it takes 10+ years for cops to catch up and improve their investigation techniques, at least in the smaller areas with fewer resources.

<comment><USER17> > most police, especially in smaller areas, don't have the people on hand or > on call to explain all this "techy" stuff

Perhaps they should not explain and make decisions which can have devastating effects on "techy stuff" they don't understand?

</comment></comment></comment><comment><USER18> Not great to start an article off with sloppy reasoning:

> If police raided a home based only on an anonymous phone call claiming > residents broke the law, it would be clearly unconstitutional.

> Yet EFF has found that police and courts are regularly conducting and > approving raids based on the similar type of unreliable digital evidence: > Internet Protocol (IP) address information.

When police go after an IP address, it happens after there is evidence linking it to some crime. That makes the situation wholly unlike an anonymous phone call, where there is no evidence a crime has even been committed, and where the identifying information itself is trivial to falsify.

Also, IP addresses give a lot more information than the article implies. Especially these days now that everyone has a home router that probably keeps the same IP address for weeks at a time if not months. Not enough to trigger a police raid, of course (if we want to argue that the police have too low a standard of evidence for initiating a raid, I agree) but it's probably a good lead to go on in the common case.

EDIT: I don't disagree with the rest of the article.

<comment><USER3> Huh, how is that sloppy reasoning unless you take that out of context? I don't think the EFF is saying that the IP address should _never_ be used as information. It seems they are in perfect agreeance that if there is enough corroborating evidence in addition to the IP information, _then_ the police can consider action.

The EFF's problem is when IP information, as with an anonymous phone call, is used to spur action _without_ enough additional evidence. This is the anecdote they cite in their whitepaper:

[http://fusion.net/story/287592/internet-mapping-glitch- kansa...](http://fusion.net/story/287592/internet-mapping-glitch-kansas-farm/)

edit: I responded to someone who clearly pointed out that I misunderstood raynier's argument. The comment was deleted by the time I hit Reply, but here is my reply:

I now agree that I'm at fault for short-shrifting raynier's argument. The whitepaper also includes up on top a story of a place being raided for being a Tor node, which may feel similar to the vagueness of justification that comes from a anonymous phone call, but that's not completely analogous either.

Perhaps the closer analogy would have been SWATting, but I don't think law enforcement _supports_ that as a practice (because it's a result of them getting actively deceived). But I feel that's part of the EFF's overall point: SWATting is clearly a bad thing, whereas the specious reasoning the police sometimes uses to justify a raid based on IP information is not scrutinized enough, because of general tech ignorance.

<comment><USER19> > Huh, how is that sloppy reasoning unless you take that out of context? I > don't think the EFF is saying that the IP address should never be used as > information. It seems they are in perfect agreeance that if there is enough > corroborating evidence in addition to the IP information, then the police > can consider action.

Shouldn't it depend on the action? An IP address alone would not justify going to the location it was assigned to and arresting, charging, and holding in jail until trial the person(s) found there.

However, if the action is just to get a search warrant to search that location for more evidence, that seems OK to me. With nothing else other than that the IP address was used for some criminal activity, that is pretty good evidence that something related to the crime took place at the location the IP address was assigned to at the time.

<comment><USER20> Without first going to the ISP and filing a warrant to get the information regarding whom had that ip address its not even enough for a warrant.

If you've been following some of the recent stupidity police have opted repeatedly to just use some sort of resource to correlate ip address to physical location. This could be because this provides instant gratification or because they lack enough evidence as of yet to even justify THAT warrant.

As an example one such resource used to list a single coord for all unknown addresses in the US. This led to parties at that address dealing with hundreds of cases of unpleasant police contact wherein each officer individually learned that this address wasn't the center for criminality on planet earth. Unfortunately this knowledge didn't percolate upward.

So we aren't dealing with just proxies, tor exit nodes, open networks, many users connecting to the same router and other relatively complex matter. We are dealing with the fact that the police can't even be bothered to confirm with the ISP which customer even had that address at a given time.

In that context, without an initial warrant to gather the most basic of information IP addresses rarely are sufficient for anything at all except further research.

</comment></comment></comment></comment><comment><USER15> A few examples suggesting that SWAT protocol may altogether need reform:

1\. [http://arstechnica.com/tech-policy/2012/06/swat-team- throws-...](http://arstechnica.com/tech-policy/2012/06/swat-team-throws- flashbangs-raids-wrong-home-due-to-open-wifi-network/) 2\. [https://www.salon.com/2013/08/29/11_over_the_top_u_s_police_...](https://www.salon.com/2013/08/29/11_over_the_top_u_s_police_raids_that_victimized_innocents/) 3\. [https://en.wikipedia.org/wiki/Swatting](https://en.wikipedia.org/wiki/Swatting) 4\. [https://www.techdirt.com/articles/20150805/19343431865/no- im...](https://www.techdirt.com/articles/20150805/19343431865/no-immunity- cops-who-sent-swat-team-to-68-year-old-womans-house-threats-delivered-over- open-wifi-connection.shtml)

I'll refrain from posting dozens more supporting links.

<comment><USER21> Here's the problem: what do you do when somebody has managed to describe, over the phone, a convincing scenario that demands an immediate and severe response. Like "people are dying in that room right now and will continue to die if nobody stops them".

Fundamentally, there is no good answer to that. Both options can result in lives lost. One is an active shooter being allowed to continue killing freely, the other is sending police officers ready to deal and face lethal force.

Obviously no-knock raids on suspected drug-dealers are a different matter - those are unacceptable by any sane metric. But you include swatting in your list. Swatting generally involves a violent emergency where delaying for verification would cost lives.

For that case, all I think we can do is treat the swatters as people committing aggravated kidnapping or even attempted murder. They're attempting to send men to detain somebody at gunpoint.

<comment><USER22> > For that case, all I think we can do is treat the swatters as people > committing aggravated kidnapping or even attempted murder.

Absolutely. In fact - if swatting results in the death of a person, then the swatter should be charged with first degree murder.

The problem, however, is that the swatters are not always in the US, so even identifying the swatter can be quite difficult; let alone extraditing them.

Thus, the swat teams also need to, in one way or another, tone down their violent, no-knock raids.

<comment><USER23> If I told an easily-angered person that her spouse had intimate relations with someone I didn't like, could I be charged with the resulting murder? Why don't the police have agency?

<comment><USER21> Intent matters. The intent was to send a group of dangerous and heavily armed men in to detain an innocent person. That's aggravated kidnapping.

In common law, if somebody is killed in the commission of a violent felony even if the death was unplanned, it's "felony murder". In most of the USA, "felony murder" is first-degree murder.

</comment></comment></comment></comment></comment><comment><USER24> "If police raided a home based only on an anonymous phone call claiming residents broke the law, it would be clearly unconstitutional"

I thought that was how SWATting worked - anonymous denunciation by untraceable phone call?

<comment><USER25> Yeah, is this just an urban legend? Fake videos, etc.? It's always seemed absurd to me that you can send men with guns to raid someone's house just with an anonymous phone call.

<comment><USER26> Nope, not an urban legend. This is really happening.

Just last week a home with 5 children was wrongly raided: [http://www.denverpost.com/2016/09/14/swat-officers-raid- home...](http://www.denverpost.com/2016/09/14/swat-officers-raid-home-in-mesa- county-only-to-find-innocent-family/)

Wrong house with Grandmother and Teen girl raided with flash-bang: [http://reason.com/blog/2015/08/03/swat-team-liable-for- wrong...](http://reason.com/blog/2015/08/03/swat-team-liable-for-wrong-house- flash-b)

This gamer was "Swatted" and the web cam caught it: [http://reason.com/blog/2014/08/28/militarization-of- police-h...](http://reason.com/blog/2014/08/28/militarization-of-police-helps- feed-swat)

This 1-year old baby was critically burned by a flash-bang grenade thrown into the playpen: [http://www.cnn.com/2014/10/07/us/georgia-toddler-stun- grenad...](http://www.cnn.com/2014/10/07/us/georgia-toddler-stun-grenade-no- indictment/)

</comment></comment></comment><comment><USER27> If the use of IP addresses in this manner disturbs you, you should look into the the proposed changes to Federal Rule Of Criminal Procedure 41.

This is the EFF's article, which is either a highly overzealous or highly prescient: [https://www.eff.org/deeplinks/2016/04/rule-41-little- known-c...](https://www.eff.org/deeplinks/2016/04/rule-41-little-known- committee-proposes-grant-new-hacking-powers-government)

</comment><comment><USER28> > If police raided a home based only on an anonymous phone call claiming > residents broke the law, it would be clearly unconstitutional.

But they do this all the time, especially in low income areas. They just don't call it a raid. They call it a "welfare check".

<comment><USER29> It's honestly terrifying.

</comment></comment><comment><USER30> > Put simply: there is no uniform way to systematically map physical locations > based on IP addresses or create a phone book to lookup users of particular > IP addresses.

Maybe today, but when we have wide deployment of IPv6 (heh), won't ISPs do away with NATing and give everyone their own block of IPs? Then I would think you could reliably tie a person to an IP address as long as the ISP cooperates.

<comment><USER31> NAT isn't the only or even the most important source of errors here. The article cites two examples, one where imprecise IP location information was being represented as precise, and one where a Tor exit node was mistaken as the actual originator. Neither one would have been fixed by using IPv6.

<comment><USER32> Well, location will be fixed to an extent with IPv6. All you need to do is contact the ISP that owns the appropriate /48 or whatever they were given, ask them the address of the customer with said /64 and there you go. Of course, this is the same thing they should already be doing with v4, carrier-grade NAT is fairly uncommon for anything but mobile use except in Asian countries.

Still, you can't tie an IP address to a specific person or computer, v4 has NAT to contend with and privacy extensions with v6 (which Microsoft and Apple use by default, most Linux distributions do as well) - so regardless if you can get the physical location where that IPv4 address or IPv6 prefix is assigned it does you no good on determining who was actually behind that address (unsecured wifi or easy to crack passwords, malware, the list goes on).

<comment><USER31> The first example isn't due to an inability to get the location, but using a source of data that didn't have it, and didn't adequately explain that fact. It'll happen just as easily with IPv6.

</comment></comment></comment></comment><comment><USER33> Otherwise the police become the weapons of criminals which is, of course backwards.

</comment><comment><USER34> (1) It's unreliable (2) It's unconstitutional assuming judges agree (3) It's expensive if you screw it up, such as people die, lawsuits, or embarrassment. All of which is unlikely change behavior unless everyone agrees.

</comment><comment><USER35> _" A call is an unknown source, talking about unreliable information, about a location. It is NEVER to be trusted NEVER...."_ \-- Michael A. Wood Jr

An unverified call can never to be trusted. Read the whole twitter thread by ex BPD, USMC Retd., Michael A. Wood Jr [0] to understand why.

[0] [https://twitter.com/MichaelAWoodJr/status/778813281376931840](https://twitter.com/MichaelAWoodJr/status/778813281376931840)

</comment><comment> nv-vn >If police raided a home based only on an anonymous phone call claiming residents broke the law, it would be clearly unconstitutional.

Isn't that exactly what happens when you get SWATted?

</comment><comment><USER36> I'll just point this out here. Reena Virk started as a rumour going around in schools. Until eight days later her body was found. A little bit of prudence is necessary, but don't discount rumours out of hand.

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

</comment><comment><USER37> It's as much a "law and order" issue as it is a civil rights issue.

Cops have limited resources to deal with a number of problems and if they don't have the training and procedures to use internet evidence they are going to waste those resources tracking down stolen cars, child porn and whatever in the wrong places.

</comment><comment><USER38> Why don't we just regulate any Internet-connected device? When you purchase one, you register your name and address and are given the IP address in return.

Then, we can simply look up the physical address of the IP address holder.

<comment><USER39> I'm not sure if you're trying to make a sarcastic analogy to gun registration or not, but if you are, they aren't quite the same, given that a gun is a physical object and an IP can change without the user knowing or being responsible for that change.

<comment><USER38> Haha nah, I didn't put those two together. I guess gun registry is a big topic in the states right now. I was just pretending to be a politician since that's the sort of response I feel they would come up with.

</comment></comment></comment><comment><USER40> > _Law enforcement's over-reliance on the technology is a product of police > and courts not understanding the limitations of both IP addresses and the > tools used to link the IP address with a person or a physical location._

You can most certainly narrow down an IP address to a particular ISP customer. Is it possible that they have an open wifi? Yes. Is it possible to narrow it down to a single member of the household? Depends! Is it possible that a computer at the destination is being used a proxy by the real attacker? Yes! But it's certainly not the blackbox that the EFF is trying to portray it as.

It's totally appropriate to execute a search warrant based on IP logs. A search warrant doesn't mean that any particular person is guilty, just that there is probable cause that there is information about a crime at a certain location.

<comment><USER32> I mean, it's reasonable to link it with a physical location, but only to the extent that there's obviously _A_ computer at the location that is being used for some purpose. The problem is when they use it to try to identify an individual, which is completely unreasonable.

<comment><USER41> > obviously A computer at the location that is being used for some purpose

Well "A computer" could be any TCP/IP enabled device nowadays, including a router. So no, it's not reasonable to look at traffic coming from an IP, and say that traffic originated from the physical location of that IP, just because the LAN beyond that router is opaque.

I mean, several ISP IP addresses are involved with routing, but "everybody knows" they're shared machines. But again, simply because a trace route stops at a certain machine doesn't mean the routing actually terminates there - <USER2> most cases this is not true. It's just that the person behind the router with NAT often owns all devices on the LAN/opaque side. Using this correlation alone is dangerously inaccurate.

<comment><USER32> I never implied that a system in that network was the origin of the traffic, but if a traceroute ends there then obviously SOMETHING at that location is involved, knowingly or not.

A search warrant leading to a malware infected machine is acceptable in my eyes. Again, tying traffic to a location is fine, as long as the correlation ends at the computer that originally appears to be the source of the traffic (even if it ultimately isn't) is all that is targeted until evidence can determine the individual behind it.

<comment><USER41> > A search warrant leading to a malware infected machine is acceptable in my > eyes.

Search warrant for what? All TCP/IP enabled devices? Or the router? An IP address doesn't even uniquely identify a single device.

(Also given how search warrants are executed in the US and how long they can seize these devices for, I don't know if I'd say it's "acceptable". I'm in favour of setting the bar high to protect the innocent.)

<comment><USER40> You realize that what you're suggesting would make it impossible to prosecute most computer crime, right?

</comment></comment></comment></comment></comment></comment><comment><USER42> > IP address information was designed to route traffic on the Internet, not > serve as an identifier for other purposes.

I think you're going to have a hard time here convincing a jury or judge with this argument. In general LOE isn't concerned with the _intentional_ of what an IP address was meant for. At least with today's ISP an IP address can be a reasonable approximation of a person or persons.

<comment><USER43> It is _not_ a reasonable approximation of a person or persons. That's the point.

An IP address is merely an end point to some internet traffic. There's a nearly infinite number of reasons why traffic could originate from an IP that was not initiated by the current responsible party. Anything from hacked machines to clever redirects to shared IPs to just plain network trickery.

It is so ambiguous at this point that you can't even make an analogy that it is like a home housing a dozen people. Because even in that situation it just means there's _n_ more devices that could've been hacked and they've shared their wifi with _n_ more guests.

An IP address by itself should never be used for anything but _starting_ an investigation. For a warrant it had better be surrounded by corroborating evidence.

<comment><USER42> I totally agree with you in principle. However, ultimately the EFF is the one making the argument and I don't personally believe it's going to convince a judge and a jury.

And it's important to sometimes be skeptical, because if they use this argument in a trial and lose then it sets a precedent that can be used in future cases.

And the prosecuting attorneys have _plenty_ of examples where IPs successfully led directly to the perpetrator of a crime. Think of all of the people who have been arrested and prosecuted for online crimes and took a plea bargain.

It's a very uphill battle. I wish the EFF all of the best luck (I myself am a contributor and believer), but I don't think they're going to make much progress with this one.</comment></comment></comment>


Ask HN: Payments/Subscriptions Based Startups and Niches - <AUTHOR>

I'm doing some research for an article and would like your help:
What startups and niches use payments or subscriptions as their primary revenue model?
The immediate one that comes to mind is groupon, but there are plenty of others. Like dating sites for example. Even 'service' sites like pandora.com fall under this.
What startups, niches or ideas can you think of that follow this revenue model? Please list as many as you can.
P.S. Lets leave out those that sell and ship physical products. <comment><USER2> 37Signals</comment>


how much stock (options) should I give to new employees/partners - <AUTHOR>

I have a startup company that is fully privately funded. I am now in the process of involving more (technical) people. I want them to take risk (and reward) so that they will get heavily involved en get enthousiastic. Can you give me some pointers (to documentation) on what I should think of (how to come up with a reasonable offer, do's and don'ts etcetera). <comment><USER2> Having had several jobs where stock options were a motivator, I have a little advice to offer:

Stock options are not a replacement for a competitive salary, unless the technical people are given substantial ownership. So, for example, 1% of a company that could realistically reach a valuation of 2 million dollars is not enough. The risk is only worth it if the payoff will make up for and exceed any salary trade offs.

Be clear and realistic about the numbers. Don't exaggerate, please please please.

Options can make good bonuses, but only if the company is perceived as doing well. If your employees don't feel connected to the company, they'll scoff and become actively de-motivated.

</comment><comment><USER3> <http://paulgraham.com/equity.html>

What PG writes here is a pretty good explanation of how equity should work and he even gives an example of a situation where a hypothetical startup wants to hire a good hacker and trade equity for him.</comment>


Truly New Marketing Trends - <AUTHOR> https://capitalandgrowth.org/questions/1899/what-are-a-few-truly-new-marketing-trends.html <comment><USER2> this is a great article post.</comment>


Italian cave makes sense of the change in Earth's ice age rhythm - <AUTHOR> https://arstechnica.com/science/2020/03/italian-cave-makes-sense-of-the-change-in-earths-ice-age-rhythm/ <comment><USER2> While the warming episodes do seem to align with peaks in the normalized Milankovitch cycle curves...there are plenty of peaks on that graph that occurred during severe cold episodes. What's the explanation for those glacial peaks? This doesn't seem like a complete picture.

The article hints at something within the climate system having an effect. My wonder is what influence geothermal has had on ice ages. In particular, deep sea hydrothermal events. Do these events periodically get disrupted and cause less heat to be released into the oceans?

</comment><comment><USER3> Six spheres of climate: 1. Atmosphere, 2. Biosphere, 3. Hydrosphere, 4. Cryosphere, 5. Lithosphere (tectonic plates), and 6. Solarsphere (Milankovich Cycles).

This is a fantastic article that helps fill in the puzzle of glacial termination/reglaciation. The LR04 Benthic Stack is the overarching story and it is nicely complemented by Arctic/Antarctic ice core data, Chinese cave data, and now Italian cave data.

I think it is the feedback between the configuration of the tectonic plates of the Lithosphere and the ocean currents of the Hydrosphere that controlled the transitions that first initiated the 23k Cryosphere glaciation cycles and the subsequent 41k and 100? K cycles. The isolation of Antarctica, the connection of North and South America, the closing/opening of the Mediterranean, etc.</comment>


Word-of-mouth job vacancies - <AUTHOR> http://www.grey-jobs.com <comment><AUTHOR> Find here your next career move with an off-market, word-of-mouth job. Many work vacancies aren't officially disclosed. Get a chance here to know about them.</comment>


Show HN: Applebananaderek.com - <AUTHOR> http://www.applebananaderek.com/

<comment><USER2> There's a difference between quirky and random, and just plain random.

</comment><comment><USER3> I laughed only because this is insanely weird. I could even see myself making this site as a joke but wouldn't post it as a Show HN project.

</comment><comment><USER4> I don't at all understand this.

</comment><comment><USER5> wat.</comment>


Why North Korea is a safe haven for birds - <AUTHOR> http://www.bbc.com/news/magazine-36533469 <comment><USER2> In the US, shorebirds declined tremendously not because of habitat loss, but because of market hunting. [1] For example, in the South San Francisco Bay, market hunters killed everything in sight and shipped the birds to San Francisco for food. Around 1900, SF consumed around 250,000 ducks annually.

Considering the food situation in North Korea, I'm really surprised those flocks exist. Perhaps it is due to a lack of shotguns outside of the military?

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

[2] _PDF_ [http://downloads.ice.ucdavis.edu/sfestuary/skinner/archive10...](http://downloads.ice.ucdavis.edu/sfestuary/skinner/archive1007.PDF)

<comment><USER3> Now shorebirds are declining because of overfed geese which we don't shoot enough of.

[http://netnebraska.org/article/news/1028942/farmland- buffet-...](http://netnebraska.org/article/news/1028942/farmland-buffet-helps- snow-goose-population-boom)

<comment><USER4> That makes a pretty good case for farming the geese as well. Every year, near thanks giving, I listen to the food banks implore people to donate turkeys for the meals they prepare for the homeless and poor. And every year I hear this while walking around piles of Canadian Goose crap from birds that have stopped being migratory having found enough food and comfort in the Bay Area. And every year I think, "There is a very simple solution to this problem, at least for the short term."

<comment><USER5> I've never eaten one, but I've read they taste terrible.

<comment><USER6> I've never had a wild Canadian goose that I know of, but roasted gooose is quite tasty, used to have it every Christmas as a kid.

<comment><USER7> I'm waiting for Wabbit Season.

</comment></comment></comment></comment></comment></comment><comment><USER8> On a related note, during the Chinese cultural revolution Mao declared war on sparrows(Great Sparrow Campaign) and billions of birds were killed (not only sparrows...). It's considered as one of that catalysts of The Great Famine that killed 15 million Chinese. They had to import birds from Canada and USSR.

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

<comment><USER9> Chief, this was not the cultural revolution, this was the Great Leap Forward. The Great Proletarian Cultural Revolution started in 1966.

</comment></comment><comment><USER10> Sorry, I simply can't trust anything that comes out of the DPRK. Everything over there is a propaganda photo op.

>>> But we were able to show local people shorebirds through our telescopes.

North Korea regular issues propaganda about staying away from foreigners. The fact that these guys were 'mingling' with the locals tells me that the whole thing was staged.

For all we know these guys visited the one place in the country where there are birds, and they were then instructed to write how the 'great leader' is protecting the environment for animals elsewhere the country.

Notice how the kids in the photo seem well dressed and well feed....

<comment><USER11> I don't know what someone who is 'well feed' looks like.

</comment></comment><comment><USER12> This is probably the first time in my life that I read something not negative about North Korea.

Western propaganda is not what it used to be ;-)

<comment><USER13> That was my first thought too.

Would it be even possible in today's world to have a country that is purposefully underdeveloped/feudal, but without an oppressive regime?

<comment><USER14> I wouldn't call North Korea _purposefully_ underdeveloped. It just refuses to accept foreign investment like every other country on the face of the planet. It's modernizing, albeit slowly and on its own terms.

<comment><USER15> > It's modernizing, albeit slowly and on its own terms.

On the terms of its dictatorship. Not on the terms of the people.

<comment><USER16> South Korea also modernized on the terms of its dictatorship. It did so very quickly, though.

Rate of modernization has little to do with the form of government.

</comment></comment></comment></comment></comment><comment><USER17> It's one of those things that makes perfect sense, but you probably didn't think about.

<comment><USER18> It's probably up there with the Korean DMZ, Chernobyl, and Bikini Atoll as unintentional nature preserves.

<comment><USER19> I'm a engineer inspecting an unrelated project next to a superfund site in NJ (Toms River). The superfund site is now 22,000 acres of untouched wilderness. The municipal workers say it's now filled with all sorts of wildlife including coyote and turkeys.

</comment></comment></comment><comment><USER20> It seems to me that the situation is very fragile and worrisome, mainly for 2 reasons. China once (1958-1962) had a Four Pests Campaign (除四害运动), which defined four pests to be eliminated: rats, flies, mosquitoes, and sparrows. In less than 1 year, nearly 2 billion sparrows were systematically exterminated. I'm not saying that North Korea will do the same thing, but a starving country with a totalitarianism government is one of the worst threats to nature, as China has clearly shown. On the other hand, should the political situation change in North Korea (in any direction), nature will as well be the first to suffer, as China has clearly shown.

<comment><USER21> Well I think the situation in the US, Europe, and others shows that it's not like other political arrangements do better here.

</comment></comment><comment><USER22> All non-korean bird photographers are bearded. Is that's where SD cards with _real_ pictures are hidden?

</comment><comment><USER23> Meanwhile, in Lebanon...

[http://www.wildlifeextra.com/go/news/lebanon-bird- hunt.html#...](http://www.wildlifeextra.com/go/news/lebanon-bird-hunt.html#cr)

</comment><comment><USER24> "Stalinism - Lovely weather for ducks"

<comment><USER25> Joseph Stalin is well known for the lack of industrial development under his leadership?

<comment><USER26> Papa Joe was no environmentalist. There are still places that were completely wrecked by his policies 80 years ago.

<comment><USER24> Yep. To overclarify: my post was a joke about the (surface level) environmental benefits of an unde(r)veloped economy within North-Korea's current form of bizarro pseudo-stalinism.</comment></comment></comment></comment>


Ryan Model 147 - <AUTHOR> http://en.wikipedia.org/wiki/Ryan_Model_147

<comment><USER2> See also the Lockheed D-21: [http://en.wikipedia.org/wiki/Lockheed_D-21](http://en.wikipedia.org/wiki/Lockheed_D-21)

I don't know why, but the D-21 feels very creepy. Especially in person.

</comment><comment><AUTHOR> > _The flights were given a cover story, describing the drones as high- > altitude targets for surface-to-air missiles (SAMs), in case one of them > came down in a public area._

> _The system injected chlorosulfonic acid into the engine tailpipe when the > drone entered hostile territory, which created very tiny ice crystals, > forming a transparent contrail._</comment>


H.R. 5741 - Bill to Instate Mandatory National Service (Draft?) - <AUTHOR> http://www.govtrack.us/congress/billtext.xpd?bill=h111-5741

<comment><USER2> "For context, Congressman Rangel has introduced this bill many times in the past. Each time, it has received very little support, and Rangel knows it has no chance of being passed."

</comment><comment><AUTHOR> Section of interest:

SEC. 109. CONSCIENTIOUS OBJECTION. (a) Claims as Conscientious Objector- Nothing in this title shall be construed to require a person to be subject to combatant training and service in the uniformed services, if that person, by reason of sincerely held moral, ethical, or religious beliefs, is conscientiously opposed to participation in war in any form. (b) Alternative Noncombatant or Civilian Service- A person who claims exemption from combatant training and service under subsection (a) and whose claim is sustained by the local board shall-- (1) be assigned to noncombatant service (as defined by the President), if the person is inducted into the uniformed services; or (2) be ordered by the local board, if found to be conscientiously opposed to participation in such noncombatant service, to perform national civilian service for the period specified in section 104(a) and subject to such regulations as the President may prescribe.</comment>


Evernote stumbles into Markdown - <AUTHOR> https://discussion.evernote.com/topic/88677-evernote-for-mac-62-beta-1-released/page-2#entry379209 <comment><AUTHOR> Evernote is just out of touch:

> So sorry about this - we've been trying to avoid calling this "markdown > support" because, to your point, it clearly is not... sorry for (our) > miscommunication!</comment>


Why You Should Never Check-in at Home on Facebook - <AUTHOR> http://www.sparsebundle.net/posts/why-you-should-never-check-in-at-home-on-facebook

<comment><USER2> Yet another site that disables pinchzoom on mobile devices.</comment>


Apply HN: Brandvertisor – Transparency Advertising Marketplace - <AUTHOR> Brandvertisor is the first marketplace matching advertisers with specific publishers through detailed & complete profiles.
Basically the idea is to make sure advertiser gets traffic ONLY from publishers you selected - no arbitrage traffic , no unknown sources of traffic, no overpriced or under-quality traffic. Start with any budget & no technical skills needed. We target US Display ads market: banners, native ads.
Also (and for that I need your feedback guys) idea is to build an alternative of current very few monetizing options for Publishers. Small, mid-size publishers do not have RTB networks access - so we give them opportunity to export their profile & host their own "Advertise Here" page. So they can accept direct advertisers & RTB synchronization - this is in the future when we have in-house ad network.. Please help us on this, as I haven't been publisher myself.
Here is sample clickable demo:
brandvertisor.com/ - search or browse by industry, filters etc
brandvertisor.com/startup-magazines.html - you get a list with top publishers per industry & filters on the right side to sort
brandvertisor.com/sample-publisher-profile.html - detailed & complete big data aggregated traffic statistics, ads placements, Q&A etc.
brandvertisor.com/images/success.png - then you get your ads placed :)
We are 2 co-founders: Nedko - me - co-founder in ad network for the last 4 years, online serial entrepreneur with tens of failures and very few succeeds into paid traffic, local/seo, mailing, b2b, ad networks. Petar - front end & node.js developer with 8+ years coding skills in php, node.js.
We are located in far away Bulgaria :) But I will relocate once we get this from the ground.
I just graduated Founder Instutite FI.co - had stressful 4 months, but I am satisfied & focused for next level:)
www.slideshare.net/marketingseo1/brandvertisor-demo-day-founder-institute
Thank you!
Please shoot us any feedback & questions? <comment><AUTHOR> Sorry about that, I had some issue while submission, let me reupload those as I cannot edit anymore the post:

[http://brandvertisor.com/](http://brandvertisor.com/)

[http://brandvertisor.com/startup- magazines.html](http://brandvertisor.com/startup-magazines.html)

[http://brandvertisor.com/sample-publisher- profile.html](http://brandvertisor.com/sample-publisher-profile.html)

[http://brandvertisor.com/images/success.png](http://brandvertisor.com/images/success.png)

[http://www.slideshare.net/marketingseo1/brandvertisor- demo-d...](http://www.slideshare.net/marketingseo1/brandvertisor-demo-day- founder-institute)

Thanks @brudgers

</comment><comment><USER2> The links are not clickable. Hacker News requires "[http://"](http://") at the front of any links in a comment [see how the link is clickable?]</comment>


Discord to discontinue Nitro Games store - <AUTHOR> https://blog.discordapp.com/whats-coming-for-nitro-a732ddc4b5b1 <comment><USER2> Good. I'm sick of seeing that crap when I want to check in with my FFXIV clan. Of course this means they'll keep using Discord. Dammit.</comment>


Damage from Atlanta's huge cyberattack is worse than the city first thought - <AUTHOR> https://techcrunch.com/2018/06/06/atlanta-cyberattack-atlanta-information-management/ <comment><USER2> If you don't back it up, you dopn't want it.</comment>


Controllable Video Sprites That Behave and Appear Like Tennis Players - <AUTHOR> https://twitter.com/ak92501/status/1293350699024240641 <comment><USER2> There is a kind of retro-future feel to this, like a 90's Sega game with incredible sprite interpolation.

<comment><USER3> MORTAL KOMBAT</comment></comment>


Camel milk - <AUTHOR> https://en.wikipedia.org/wiki/Camel_milk <comment><USER2> Forget it. Camels are obstinate, violent and disagreeable. No way anybody wants to farm them for milk if they don't absolutely have to.

<comment><USER3> We could always make some camel/cow hybrid using mad science. Or regular science if you don't want to be dramatic about it.</comment></comment>