The knowledge argument - <AUTHOR> http://en.wikipedia.org/wiki/Knowledge_argument <comment><USER2> To everyone insisting that the argument is silly: while in this particular case I do disagree with the conclusion, I'd encourage you to pause for a moment before dismissing it. I often find that when I approach philosophical theories with too critical a mindset, I dismiss it too quickly, and, if I spend the time afterwrd, find the issue more complicated than it appeared at first. It's something like being posed a coding problem, going "Oh, that's simple!", and then discovering later that the problem, is, in fact, quite complex.

On the topic of philosophy, in general, though, Bertrand Russell says it better than I can: "Two things are to be remembered: that a man whose opinions and theories are worth studying may be presumed to have had some intelligence, but that no man is likely to have arrived at complete and final truth on any subject whatever. When an intelligent man expresses a view which seems to us obviously absurd, we should not attempt to prove that it is somehow true, but we should try to understand how it ever came to seem true. This exercise of historical and psychological imagination at once enlarges the scope of our thinking, and helps us to realize how foolish many of our own cherished prejudices will seem to an age which has a different temper of mind."

<comment><USER3> The use of outlandish thought experiments is fraught with problems, not the least of which is philosophers' predilection to accept intuition and common sense in supposing what the outcome would be. This is particularly clearly demonstrated in Searle's Chinese Room argument, which is really just an attempt to disguise a personal opinion as a rational conclusion.

The fundamental problem here is that, unlike in science, philosophical thought experiments are not constrained by reality, so they tend to ultimately become self-referential arguments over which axioms to accept, but with no objective basis for deciding between them.

</comment></comment><comment><USER4> The argument seems to assume that "knowledge" is some sort of indivisible base class. "Knowledge" is shorthand for memories, compressed sensory input videos (plus smell, touch, and taste) of finite length in the brain. You can remember facts (beliefs, really) about wavelengths, and also the experience (believed experience, really) of sight. Not sure what there is to write a book about.

These philosophers seem to think that humans matter a lot more than those who "subscribe" to physicalism (if you can call believing in the least extraordinary option "subscribing") do. I don't care about all of those "the book is red" koans; "red" is just a word, and words are invented, primarily for convenience.

The only thing I find a bit hard to get from physicalism is why one's locus of consciousness happens to be in the brain that it is in. If the time I come into the world as a baby is "random", what "makes" it random?

</comment><comment><USER5> I think the problem overloads the term knowledge.

First, there's knowledge about the external world, the kind which enables you to predict the conseqeuences of your actions and to manipulate the world to achieve desired results. Concretely, Mary will be able to use a, say, hex editor on a BW terminal to "paint" a picutre which a "normal" will recognize as a, say, red poppy flower. She manipulated another person into having the experience of seeing a RED poppy flower.

Second, there's knowledge about your internal world, how you experience things. If Mary is shown the poppy flower picture on a color monitor, she will gain new, experiential, knowledge about how her own body reacts to that particular stimulus. It's a knowledge, but it's not a knowledge that gives her abilities to manipulate the external world in new ways.

The premise of the experiment doesn't account for the fact that each individual is a sum of their past experiences, _encoded physically_ in their brains in some way. One person upon hearing "red" will think about tomatoes, another about blood, yet another about poppy flowers. (I grew up at a place where they were common and we as kids even ate the seeds :))

Thus the premise is false, the fallcy is in the formulation "what goes on when _we_ see ripe tomatoes"; emphasis on we. There is no collective "we" in this case; she doesn't know _all physical information_ shee needs to know in order to manipulate the external world (e.g., knowing whether to draw a poppy flower or a tomato in order to evoke a particular emotional response from a particular individual).

</comment><comment><USER6> One friend of mine told me once that no matter how much you read about sex, you have to practice it in order to understand it. We, as men, will never actually understand female orgasms and women will never know how ours are felt, no matter how accurate one tries to describe it.

I don't know what the above means in the context of "the knowledge argument" but these are easier to understand examples than "not experimenting the red color" in the article

<comment><USER7> :( don't talk as if your whole audience is men.

<comment><USER8> I am not exactly sure in what way his discourse seems as though it were addressed to an audience of men only. My political correctness meter is tingling.

<comment><USER9> > We, as men, will never actually understand female orgasms and women will > never know how ours are felt, no matter how accurate one tries to describe > it.

<comment><USER8> My position is almost the same as btilly's. When he says "We, as men, will never actually understand female orgasms and women will never know how ours are felt... " anaolykarpov is merely including himself in the more general set of men, and thus communicating an opinion as an element representative of that set, regardless of the audience. The disjunction with the set of women is necessary to underline the fact that there might be a fundamental qualitative/quantitative difference in the way orgasm is felt by the two.

In fact, the statement wouldn't have been any less correct had the audience been only women.

The same applies if a woman were to say "We, as women, will never ..."

</comment></comment></comment></comment></comment><comment><USER10> This kind of silliness is why I ignore philosophers whenever I can.

It is clear that the subject of how we personally experience X is not, strictly speaking, part of the body of knowledge about X. But the reverse is also true. Learning more about how we personally experience X does not increase our understanding of X. It is a different topic.

There is an important asterisk on this. And that is that we actually learn about things through our subjective experience. And therefore understanding our subjective experience can be necessary to get clear understanding of that thing.

This is true in a very literal way. "How long did that take?" If you give three people a stopwatch and have them record a common event, you will get 3 answers. And the answers will be consistently different in similar ways. In astronomy this phenomena is well-known as your personal equation. See [http://en.wikipedia.org/wiki/Personal_equation](http://en.wikipedia.org/wiki/Personal_equation) for verfication.

But now I return you to philosophers arguing that something obvious is something deep that has consequences that it really does not...

<comment><USER11> > _This kind of silliness is why I ignore philosophers whenever I can._

And avoiding this type of hasty comments are why it pays to study philogophical problems.

> _It is clear that the subject of how we personally experience X is not, > strictly speaking, part of the body of knowledge about X. But the reverse is > also true. Learning more about how we personally experience X does not > increase our understanding of X. It is a different topic._

That "it's a different topic" is a definitive statement that is not derrived from anywhere.

If anything, it is itself of philosophical nature, albeit a dogmatic one.

Who said that the actual experience of X doesn't increase "our understanding of X"? Even if it might be so, it remains to be argued.

Whereas the opposite, that experience, as an extra informational element regarding X, and as the main component of X as it concerns us, adds to our understand of X, is the obvious (correct or not) conclusion.

>* This is true in a very literal way. "How long did that take?" If you give three people a stopwatch and have them record a common event, you will get 3 answers. And the answers will be consistently different in similar ways.*

No, you wont, except within the margin of acceptable error (e.g. time to press the stopwatch button for each, etc).

<comment><USER10> First on the personal equation, the actual measurement difference from person to person could range up to 0.7 seconds. See [http://www.jstor.org/stable/1627157?seq=1#page_scan_tab_cont...](http://www.jstor.org/stable/1627157?seq=1#page_scan_tab_contents) for verification. This was far above acceptable error for measuring the positions of the stars, and is far longer than most could believe possible.

As for "it's a different topic", well, it is. The one topic is the objective reality of how something works. The other topic is the subjective reality of how we experience that same thing.

Take the example that was given. Suppose that I tell you about electromagnetism. I tell you about the absorption spectrum of various colors. I tell you about the fact that when we process color we subtract red from green and yellow from blue so that we can never perceive a mix of those. I tell you about various forms of color-blindness, and the rare forms of tetrachromacy. I can tell you everything there is to know about how the process works, and what colors will be perceived, when. And how that differs for different people. You still know nothing about what it is like to experience it for yourself.

And conversely, learning to experience it for yourself tells you very little about everything that I just told you. For example you've been seeing in color for your whole life and likely are not color-blind. If so, were you aware that it is impossible for you to see a mix of red and green as a mix of red and green? Probably not!

Which returns me to my point. Subjective experience is a necessary filter through which we perceive the objective world around us. That experience is neither necessary nor sufficient to gain objective knowledge. And conversely objective knowledge is neither necessary nor sufficient to gain subjective knowledge. They are different kinds of things.

</comment></comment></comment><comment><USER12> While this link is pretty good (as far as wikipedia philosophy entries are concerned), as always you should consult the SEP for a more in-depth discussion.

[http://plato.stanford.edu/entries/qualia- knowledge/](http://plato.stanford.edu/entries/qualia-knowledge/)

And if you prefer your philosophical thought experiments to be accompanied by a pop-rock sound track, you're in luck:

[https://www.youtube.com/watch?v=8Y37cAqdq0g](https://www.youtube.com/watch?v=8Y37cAqdq0g)

</comment><comment><USER13> Obviously in any system that does perception there will have to be different classes of knowledge. Talking about the different mechanics of acquiring such knowledge seems like an odd way to attempt to disprove something called "physicality".

The question seems to be a mere quibble about the meaning of the word "knowledge". It presumes that there is something special about one of the ways people learn things. Does a recording video camera gain "knowledge" about the colour red when it records a scene with a red object in it? What, if anything, does the camera learn about the shape of a cube it sees? It can learn colour but it can't learn shapes. Should we conclude from this that shape is some sort of special knowledge outside of mere physicality?

</comment><comment><USER14> "Knowing everything" implies far more than our intuitions may initially tell us, and can lead to "a set of all sets" type of paradoxical problems (i.e. the premise of the argument is absurd). This and other philosophical thought experiments like the Chinese room abuse our intuitions about being human, learning things, performing tasks, etc.

In this particular experiment, if Mary's omniscience allows her to invoke the specific pattern of neural activation that is triggered by observing a blue sky, then she won't learn anything new, otherwise she will. It all depends how far we take the absurd claim of her omniscience.

</comment><comment><USER15> I'm guessing someone smarter than me has already thought of this, but imagine another alien scientist observing Mary through this entire experiment, with the ability to inspect at the neuronal level the state of her brain at any instant.

When Mary steps out of the room, we (humans considering this problem) would intuitively expect her to say "Wow, this sensation is like nothing I could ever have predicted based on my previous knowledge. I understand this in a way I couldn't have before!" How would the alien interpreter analyze the situation?

The alien may say that these sensations activate a different part of Mary's brain and alter the structure to create memories. If she were put back into the room, she could recall what it was like to perceive color. These memories could be defined as knowledge, but the alien might not consider that knowledge important. It might just say that is an artifact of the operation of her primitive brain that these sorts of neuronal patterns can only be created by perception with her eyes. From it's perspective, the entire interaction is still entirely physical. The alien could have predicted her reaction just prior to her stepping out of the room by looking at the structure and state of her brain.

The alien may add prior to her stepping out "By the way, she's going to say that experiencing color is different than knowing of it (qualia). This is a curious artifact the way her brain works." I think it would be impossible for me (a human) to prove the alien wrong. From the aliens perspective, this wouldn't be fundamentally different than me writing a program 'printf("I feel hungry");'. It would be difficult to convince me that the computer is actually hungry. It is programmed to say that.

The reason I added the alien is because we tend to empathize with Mary when we imagine the experiment. But, if consciousness is an illusion that our brain is programmed to tell, it's difficult for us to consider this problem objectively.

</comment><comment><USER3> If a mind is what brains do, then Mary cannot know every physical fact about even her own neural system - that is too much information for her neural system to hold. This argument, therefore, implicitly presupposes that there is something more to a mind, and so is begging the question.

</comment><comment><USER16> Certain types of knowledge cannot be encoded effectively.

What I mean by an encoding that's effective is one that translates my subjective experience of the idea or the thing so that you can "imagine" or "visualize" the thing by the mere act of decoding my encoding.

Experiencing the thing directly does not count as an encoding in this case.

Defining the precise meaning of "encoding" is left as an exercise to the reader.

So if you've never experienced seeing red, you can't "imagine it" by just reading or hearing about it.

If you've never experienced reading a Chinese sentence and "understanding it" effortlessly, you won't really know what it feels like exactly; you can only approximate the feeling by comparing with your own native language.

<comment><USER17> I often summarize it in programming: a mock class, or a very deeply copied instance, can not have the original `this` pointer and never will.

<comment><USER16> I don't think that's a good analogy. In your example, we still end up with a perfect "copy" of all the data and behavior.

When it comes to subjective perception, there's simply no way of even "copying" the information by simply writing it down. * (caveat follows below)

So, in the Mary example, no matter how much she "reads" about the color red, she really would not "know all there is to know" about it.

* Now it might be possible to encode a neural state on paper, and if you have a machine that can "apply" that state to your brain, then you can read that paper, enter codes in the machine, and let the machine "fix" some neural state in your brain so you can experience the same "thing".

At least it seems like this should be possible in principle. Although it might not be practical .. depending on how perception is "implemented" in the brain.

</comment></comment></comment><comment><USER18>
        Nagel takes a slightly different approach.
        In an effort to make his argument more adaptable and relatable, he takes the stand of humans attempting to understand the sonar capabilities of bats.
        Even with the entire physical database at one's fingertips, humans would not be able to fully perceive or understand a bat's sonar system, namely what it is like to perceive something with a bat's sonar.

My car emits a sound while parking in reverse. As the car behind gets closer, the sound is emitted more frequently, and becomes constant under a certain distance. When I'm parking a different car, I'm unable to 'feel' the distance from the next car. It's like being blind.

<comment><USER3> See also human echolocation (e.g. [https://en.wikipedia.org/wiki/Human_echolocation](https://en.wikipedia.org/wiki/Human_echolocation)). The experience, however, will not be like a bat's, not only because of the latter's greater acuity but also because humans are conscious, self-aware and have language to reason about their experiences.

</comment></comment><comment><USER19> I don't understand why this is a valid argument against physicalism. Maybe I can't get it because the definition of "physicalism" seems muddy and unintuitive to me.

Or maybe because there's an actual difference between knowing how something will work (light -> retina -> neurons etc.) and experiencing it while it works. But all of this is physical: both the knowledge, as well as the memory of experience.

That's the problem with many philosophers: they create some concepts, define them in arbitral (not necessarily adequate, often misleading) way and then other philosophers discuss with these concepts. IMHO most of the time it doesn't bring useful conclusions and doesn't advance human knowledge.

</comment><comment><USER20> To assign complete knowledge to someone in a thought experiment like this is to open a can of worms that leads to counter-intuitive conclusions. The subjective experience of color vision is based on physical truths that extend beyond theory. If Mary truely possessed the knowledge of the receptor layout in her eyes, her exact neural layout, the composition of her specific signal substance soup, how a given input by extension would affect her emotional state etc. etc., she would be able to accurately foresee the impact of stepping out of that room. So, as the problem is phrased, she would not learn anything new.

She would also be a god.

</comment><comment><USER21> On one hand, reductionists say that qualia (qualitative propeties of experience) is reducible to physical states. On the other hand, some (anti- reductionists) say, qualia is irreducible. How to settle this dispute?

Only theories from the object level domain (say, neurophysiology, vision, human experience) can settle this. When theories from the object level domain do not exist or when we have not understood enough about the phenomena, people engage is all philosophical disputes. Which philsophical theory one should choose? Pick your thought experiment:)

The same thing you see in moral philosophy: tons of thought experiments.

</comment><comment><USER22> This is slightly off topic but it reminds me of a question I've pondered for years. Does every person see red as the same color in their mind? Obviously it applies to all colors. Furthermore - do I see color as the same "concept" as everyone else. I.e. to some color is more of a feeling, while to others it's no more than a property of an object (like the surface being smooth or rough).

I've also often wondered if this is why some people like some colors better than others - and why some people are said to have good taste when putting some colors together.

</comment><comment><USER23> I don't understand how the thought experiment isn't simply begging the question. It states in its premises that (A) Mary already has all physical knowledge and (B) she later gains new knowledge. If the conclusion (that not all knowledge is physical) wasn't true, the premises could not be consistent.

Am I missing something obvious? Why should we accept that the conclusion is true, rather than discarding one of the premises?

<comment><USER24> Philosophers typically assume certain "fixed points" in arguments that they then refuse to budge from under any circumstances. It is a mental dysfunction, a kind of inbuilt rigidity of mind, that is peculiar to the breed.

For example, there is an actual argument in the philosophy of science that is based on the supposition that there is a substance that is "identical to water in every respect" but "is not H2O but rather XYZ".

Philosophers take this "argument" quite seriously, and get rather testy when you point out that the premise is a contradiction: if something has "all the properties of water", then that must include properties under electrolysis, and under electrolysis water decomposes to 2H and O, not X, Y and Z (whatever those might be). If you say this to a philosopher they will reply, "Yes, but what if it doesn't?" as if that was a coherent statement.

So the answer to your question is, "Because if we allowed ourselves to discard one of the premises we'd have a much harder time motivating this whole ridiculous discussion, and since our livelihood depends on such ridiculous discussions, we're not about to let that happen!"

<comment><USER25> Without disputing your main point about how philosophers typically behave, I want to clarify the is-water-H2O argument. As I understand it, it's making a point about how we use language: people have been using the word "water" to refer to various puddles, lakes, oceans, beverages, etc for a long time before electrolysis was discovered. We know now that all those instances have being-H2O in common, but it's not a necessary property for the word "water" to apply: if some other chemical fulfilled the everyday requirements for water (being clear, wet, thirst-quenching, etc) without being H2O, it would be "water," and if a particular variation of H2O doesn't fulfill those requirements (^2H2O, heavy water, is poisonous) then it's not water. See "Water is Not H2O" (Michael Weisberg, 2003). [http://www.phil.upenn.edu/~weisberg/papers/waterfinal.pdf](http://www.phil.upenn.edu/~weisberg/papers/waterfinal.pdf)

<comment><USER3> I have a suspicion that many philosophical arguments, probably including the knowledge argument, are ultimately about language use - in this case, words and phrases like 'knowledge', 'physical' and 'physical knowledge'. Is this what Wittgenstein was going on about?

</comment></comment></comment></comment><comment><USER26> Can someone explain why the whole thing isn't simply the abuse of the universal quantifier? It _SOUNDS_ like there are two "alls" here - ALL[0] is a proper subset of ALL[1].

If set theory is an obscene tool for this subject, I promise to rend my garment and heap ashes on my head. But only in an aphysical manner...

</comment><comment><USER27> I think Daniel Dennett nailed it.

</comment><comment><USER15> [https://www.youtube.com/watch?v=X8aWBcPVPMo](https://www.youtube.com/watch?v=X8aWBcPVPMo)

<comment><USER11> That's a joke. Not exactly a dismisal of the argumentation any more that a creationism making a joke is a dismissal of evolution.

</comment></comment><comment><USER28> Was OP by any chance at the recent San Francisco premiere of Ex Machina, a film which briefly mentions this thought experiment?

</comment><comment><USER29> Odd -- contrary to other users' comments, I don't find this topic silly at all. As I see it, "science" is the ability to predict the future†. That's all. And thus a better prediction corresponds to better science. For instance, quantum electrodynamics has been used to calculate the gyromagnetic ratio of an isolated electron to 10 digits of experimental accuracy. That's incredible. In terms of predictive capability, the order goes: physics > chemistry > biology > psychology. That's not to say that any field is less valuable than any other; it's just that the higher level fields are more complex, and thus it is harder to formulate predictive models for them.

So if the value of science is its predictive capacity, then how does one verify that capacity? Through reproducibility. This property is essential to modern research; all scientific results must be able to be reproduced by anyone (assuming they have the appropriate equipment and the ability to adhere strictly to a specific procedure). For if reproducibility were not a requirement, then science would be of little value.

For some reason, a lot of scientists (or maybe just people on the internet who like the idea of science) pigeonhole themselves into the philosophies of positivism, physicalism, and materialism. I don't know why. I do research in quantum chemistry, and even as I learn more about the subject (and quantum field theory), no increase in knowledge has ever changed my philosophical stance. The only thoughts that run through my mind as I learn more are "Cool, now I can make better predictions" or "Hey, that's kind of elegant that nature works that way".

I find it odd, then, that so many people derive their entire life philosophy from sensory input corresponding to _output_ from other _humans_. It's weird to me. If one were to plant a microchip that affected optical nerves into the brain of one of these people, and the microchip caused them to see an object that wasn't there, I would hardly be surprised if they denied seeing the object at all once they realized the object's visibility wasn't "reproducible".

Is it really the case that so many believe that what is real is not only what is personally experienced, but what is also _supposedly_ personally experienced (and thus communicated) by others?

Playing devil's advocate, assume the simulation hypothesis (I don't actually believe it, but it's useful to illustrate my point). Furthermore, suppose that each individual human has been fed sensory input that only _they_ are capable of experiencing, but the input is both personally predictable and reproducible. And lastly, the program running the universe does not allow any chain of interactions to exist that would permit the information describing these individual experiences to be transmitted to other humans.

What's wrong with this? Nothing. It's perfectly reasonable that every person in the simulation observes aspects of the universe that are unique to them, and them alone. It meets the "predictive" requirement for science at an individual level, and while it's personally reproducible, it's not consensually reproducible. Does that really make it any less real?

At least for me, I'm confident that physicalism is false. Why? Because if I were to rank everything I am certain about on a scale of most certain to least certain, at the top of the list would be "I am certain that I am experiencing my own existence". I cannot think of anything I am more sure about. Take away my senses (or manipulate them somehow), but as long as my brain is still functioning and I'm conscious, I'm still _experiencing_. The universe didn't have to be this way. It could have existed almost like it does now, except that all the people in it would have been philosophical zombies. (And perhaps all of you are, which would make me a solipsist, but at least I'm a solipsist that knows I'm not a p-zombie then.)

† My claim that "science is the ability to predict the future" and "better science corresponds to better predictions" is a semantic issue, and a whole debate could center around developing a consensus on good definitions. Wikipedia lists other attributes of the word "science" in addition to predictability. If you don't like my definition, make up a new word and substitute it for "science"; the argument holds regardless.

</comment><comment><USER30> Just to summarize the article:

People doing a "non physical" experiment, while using physical proof methods.

This is scientific comedy at its finest, people.

<comment><USER11> Yeah, because professors of philosophy and epistemologists toil for years about the subject, but some 2-minute comment shows it for what it is...

You even got the facts wrong. They are not doing a "non physical experiment". They are proposing a thought experiment -- you know, the kind lots of scientists did, Einstein and Shroedigger among them.

The "non physical" part is just that it tries to establish that there is "non physical" knowledge (qualia). That is, nothing about the experiment as a process (as opposed to the output) is necessary to be "non physical"...

<comment><USER24> > They are proposing a thought experiment -- you know, the kind lots of > scientists did, Einstein and Shroedigger among them.

Neither Einstein nor Schrodinger "did" thought experiments. They _used_ thought experiments (which is a really terrible name for imaginary scenarios) to motivate arguments and guide thinking, not to demonstrate anything.

No one who has been paying attention to the history of knowledge uses thought experiments for anything other than illustrative, explanatory or motivational purposes. In particular, the conceit that imaginary scenarios can teach us anything about the way reality actually is long outdated, as no such imaginary scenario has ever done any such thing.

Relativity was _motivated_ by thought experiments, but so too have been numerous false ideas. Therefore thought experiments can do nothing to distinguish false ideas from true ones, so anyone who uses them for that purpose is doing them wrong.

</comment></comment></comment><comment><USER31> _Mary 's Room is a thought experiment that attempts to establish that there are non-physical properties and attainable knowledge that can be discovered only through conscious experience._

From the beginning the argument pre-supposes there is _objective knowledge_ that can learnt. As we know from relativity and quantum theory, there is no objective truth. The location of every atom, cell or neuron is unique to every observer.

Reading the RGB encoding of a photo, one number at a time, compared to seeing the photo with your own eyes, are different experiences. Imagine if each of our senses are different dimensions of perception, different ways of learning knowledge (reading about color through a book vs experiencing color with eyes) are orthogonal to each other. You can only connect those experiences and imagine colours _after_ you've experienced it with your own eyes - your brain can "fake" perceptions, but only after having experienced the same kind of perception previously.

This blind man regained vision at 68:

 _When he went to the corner store with his sister, he handed the cashier a $10 bill when he really should have handed a $5 bill...The idea of remembering things visually is hard as well, and he still resorts to touching and feeling the world around him to store those memories._ Of course while blind he'd been able to differentiate between $5 and a $10, but once he's regained his vision the touch-knowledge isn't connected to his vision-knowledge immediately. [http://www.dailymail.co.uk/news/article-2382619/Canadian- man...](http://www.dailymail.co.uk/news/article-2382619/Canadian-man-born- blind-sees-time-age-68.html)

Knowing how neurone in our brains work is different to having those neurons interacting with each other.

I argue "knowledge", if exists, can be interpreted only through the filter of _qualia_. No human knows anything without experience. Even reading a page of C code can only be done through our eyes and our mind and compared through previous experience in reading the same. Our minds are qualia, period.

As this was a philosophical argument I'll post a poem from a philosopher.

        Thus Something and Nothing produce each other;
        The difficult and the easy complement each other;
        The long and the short off-set each other;
        The high and the low incline towards each other;
        Note and sound harmonize with each other;
        Before and after follow each other.

[http://wengu.tartarie.com/wg/wengu.php?m=NOzh&l=Daodejing&no...](http://wengu.tartarie.com/wg/wengu.php?m=NOzh&l=Daodejing&no=2)

 _With your babel fish you listen to an alien recording "A tall being and a short being once stood here". You wonder, having never met or seen any sign of aliens besides this audio recording, how tall and how short were those beings?_

</comment><comment><USER24> What grounds are there for excluding "how the knowing subject that is an emergent property of the matter of the brain experiences colour" from "all knowledge about colour"?

fenomas correctly points out the argument is begging the question based on the I've raised here, but the argument is even more deeply flawed than that because it assumes that "knowledge" is a thing rather than an activity of a knowing subject.

If you take the epistemology of a knowing subject seriously then knowing is an activity of the subject, with the ontology of an action rather than a thing. Activities are not conserved in the way things are. It is easy to slip past what "know everything there is to know" means when we assume (incorrectly) that knowledge is thing-like: we can image books full of sentences that exhaustively list laws and properties. One might say that if Mary knows Maxwell's equations and a long list of information about matter she might "know everything", but considered as an _action_ , to "know everything" means "to be able to have any thought that anyone might be able to have about the thing", or something similar.

From this, we can immediately draw an important inference: Mary is not a human being, so this is not an argument about human beings. Not even in the wildest philosopher's imagination could any human being be able to have every thought about light that could be had. There are no-doubt "single thoughts" of such enormous length and complexity that they could not be fit into a human lifetime. And because the actions of the mind are serial (mostly) rather than parallel, the absurdity of the proposition that we can "know everything there is to know" is revealed. Human life is simply too finite for it.

Any expert will attest to this: no matter how much we learn, with ongoing experience there is always more.

So like all imaginary arguments, the primary purpose of this one is to mislead us about the subject. It isn't about human beings or human knowledge. It is about some other kind of being, unrelated to humanity. Which I guess might be interesting if you're in to that kind of thing, but personally I'd rather spend my time focused on the world that exists, not the world of some philosopher's imagination.

If the argument were honestly stated it becomes a tautology:

"Imagine a knowing subject that is capable of thinking every thought about a given subject, which necessarily includes all the thoughts a knowing subject might have when it physically interacts with the material reality the subject describes (otherwise it wouldn't be able to think every thought about the subject). Is such a knowing subject capable of knowing the thoughts a knowing subject might have when it physically interacts with the material reality the subject describes?"</comment>


Patients pile lawsuits on Theranos as Walgreen's laments not vetting tests - <AUTHOR> http://arstechnica.com/science/2016/05/walgreens-failed-to-vet-theranos-tests-that-patients-are-now-suing-over/ <comment><USER2> They're filing for class action, and the class of patients who got bogus tests is pretty big....</comment>


Subversion Submitted to Become a Project at The Apache Software Foundation - <AUTHOR> http://www.apache.org/foundation/press/pr_2009_11_04.html

<comment><USER2> Oh good, I was just thinking earlier today that subversion didn't have enough XML Configuration.

</comment><comment><USER3> blah, GIT is the way to go

<comment><USER4> Perhaps, but this is not about the best SCM tool. I'm not sure SVN needs the warm wing of Apache, but I don't think it hurts, either.</comment></comment>


Tell HN: My job struggle - <AUTHOR>

I can code.  In a world of pre-maddona engineers I still count on my fingers.  If I cube the largest number that's on the high side of your monthly page views, but I still want to work for you.  Sometimes during the interview it's hard to explain why, to put yourself fully out there.
In some words, I feel like an interview refugee.  The recruiters who are your friends until you are cut.  After that even a friendly e-mail won't receive a reply.  I have had interviews only to be told at the end that a paid internship is no longer being offered.  I'm not sure if that's a lie, half truth, or just poor planning.  I have had interviews that were interrupted by phone calls to the founders "other" business no less than five times.  I have spent time on an assigned functional product to get garbage feedback and an interviewer who when I followed up hadn't even read my documentation.   I had two interviews, sent in code samples, and completed a code test and asked if I was open to a trial period or apprenticeship of sorts.  A week later that opportunity was nixed because they thought about it and said I don't have enough experience.  False hope.
I had some great feedback from some companies.  One setup a chat on the phone and said I would need to live in California and then perhaps something could happen in the near future.  I had another company who wasn't looking for junior engineers but liked my style and the e-mail I wrote.  There are nice people out there.  Those people usually know what they want.
But I can code...
Not only can I code, but I'm a genuinely good person.  I spent a year overseas teaching English to children in Korea.  On a trip to the DMZ I met a young Argentinean who lives in Germany and works for company in Palo Alto.  He said if you can code, you can get a job. I have an IT internship on my resume now so I thought that I could at least get another django internship.
I can code.
I'm not cynical, just feeling a bit worn from this experience.  Part of it is my fault, that much I would admit.  I decided to take a different path in college and graduated with an Anthropology degree.  I couldn't handle the math portion of a computer science degree and didn't want to go to a technical school.  So now I'm thinking about applying to a university for computer science.  Of course this brings a whole new set of challenges and being a student changes a lot of things.
Just some soul searching, hope you don't mind.  Throwaway account. <comment><USER2> EDIT: Although I studied Mechatronic Engineering for 3 years and so have some formal programming education I dropped out of Uni and have no formal qualifications.

You'd be surprised how many shitty little jobs you can get by just meeting people and doing websites and occasional IT odd jobs around the place.

Put up a site, get some business cards, start telling everyone that's what you do. Eventually, you start to get your act together and figure out how to be a real business but at the start you can make enough money to live on simply because most people at the very low end of the market have no idea how, or cannot be bothered, to go in search of good "IT people" or "someone to fix up the website". If you happen to be there, sometimes that's good enough.

Also don't underestimate the power of knocking on doors.

A couple of years back I was really hard up. I had run out of work and money and my credit card was dangerously close to it's $10,000 limit.

I was finding it very hard to get a job because I'd broken my heel into 12 pieces trying to do parkour (massive, massive fail - note to self: lose weight next time you try to jump off things) and was really not very mobile and having to turn up to interviews with a cast on crutches all sweaty and pale was not particularly attractive. On top of that I've been self-employed since 2003 and it does NOT look good on a resume, believe me. I was starting to think I was unemployable.

Anyway it was a difficult time. I moved into a new house when I left hospital and didn't have an internet connection (pretty crippling when you work from home, and are actually phsyically crippled as well).

I didn't have a car and couldn't get far on my crutches so I was catching taxis to internet cafe's everyday to do work. I was finishing up a few projects (the money from which was already spent), supporting others (for free) and trying to get some more work out of existing clients.

One day I struck up a conversation with a cab driver about his mobile EFTPOS system and he said that he gets 4% of the revenue when he uses that rather than the normal one and that it was owned by a local broker company. He said "Man that guy is rich" (referring to the taxi broker that owns the EFTPOS system).

I run an SMS gateway so I thought hell, if he's rich, maybe I could sell him something so I had the driver take me over to the broker and walked in there without ever having met the guy and asked if he needed any software.

It turns out he was sick of his driver database software which was this old monster written in Access and paid me a few thousand dollars to redo it for him in PHP/MySQL as a web app running on a server I setup on his LAN.

That few grand kept me going until I got my next big project at the end of the year.

Sometimes you just gotta hustle mang, you gotta hustle.

Of course, there was every chance nothing would have come of that meeting, but if you put yourself out there like that 10 times a week, something will happen.

Always think "how am I promoting myself today?", always think what opportunities there are in every social interaction you have.

I hand my business card for SMS gateway services to almost everyone I meet. Cafes, real estate services, people I meet in bars, gig promoters, bands. When I buy coffee from places and notice they have a signup sheet for their email news letter, I ask if they also do SMS.

If I ever overhear someone in a cafe discussing anything relevant to my business, I introduce myself (if it's possible to do so without being rude).

I've only ever gotten a handful of customers this way but this type of self promotion doesn't cost anything, it's just a way of life (WARNING: there is a thin line between hustling and being an annoying prick!! Tread carefully).

There is great value in talking face to face with people and always being aware of what opportunities that presents you with. Find out about people's businesses and their problems and help to improve their situation somehow.

If you really listen there are opportunities all over the place.

Also RememberTheMilk.com mentioned last night that they're hiring and will hire people remotely :)

</comment><comment><USER3> I believe it's prima donna. <http://en.wikipedia.org/wiki/Prima_donna>

Full disclosure: I'm not employed as a programmer, but I do work a technical job in information security. I've gone through the technical interview, so I feel like I am somewhat qualified to comment.

I see that you keep commenting "I can code." Do you have an impressive portfolio of work on your GitHub? Have you contributed to open source projects?

You say you have an Anthropology degree. You don't have a formal education in computer science, and you don't have professional programming experience. If you haven't contributed to open source projects, how can a potential employer distinguish you from someone who just picked up _HTML for Dummies_ and wants to write Ruby on Rails apps?

It's a tough economy, but there are many jobs--even junior positions--out there. Craigslist or elance jobs are a great way to build your portfolio.

Drive means a lot. Writing a personalized cover letter to each potential employer with your resume AND PORTFOLIO is a great way to move further in each opportunity. Express interest.

I usually dislike interviewing people because I love the way my team works already. If you're working on a team that really gets along, bringing in a new, inexperienced hand is a cut out of their potential salary and a hit to their working order.

So you need to show that you are driven, bright and friendly, just like any employer worth working for will already be.

I know my thoughts might have been a little bit scattered, but seriously: write code, write personalized and interested cover letter with your resume hilighting your technical strengths and good luck. The jobs are out there!

edit: One last thing. Networking with people you already know is great. I know you said this is a throwaway account, but keep an ear out for HN jobs near you. I'm sure that if you're coding, you probably hang out _somewhere_ on the Internet--whether it's forums or IRC, if you know people working in the industry well you might ask them if they know of open positions in your area. A letter of recommendation from someone in the industry who knows your work well can be very helpful in securing an interview.

</comment><comment><USER4> You are focusing on the wrong items. You keep on going back to your weakness in math which in reality only disqualifies you from a select handful of jobs in development. I don't know the specific segment that your are targeting but from your mentioning django I am going to assume web. While math skills are never a detriment that are really not that valuable in web. Understanding business logic and creativity trump math and raw CS a thousand fold. You need to accentuate the fact that you are creative (if you are) and that you can contribute real solutions to real problems or envision new markets that can be pursued via technology. These are the things that you need to highlight in an interview not that you can code or that you are poor in math. Coding is a small portion of a good developers toolkit.

</comment><comment><USER5> You keep saying 'I can code'. So code. Don't wait for someone else to give you permission to do it at a desk they provide.

Build something. Get your name out there, and then you don't have to hide behind an anonymous throwaway account. The world isn't waiting to discover your greatness. It's waiting for you to show it.

Your at a defining moment of your life, were you'll find out if you have what it takes to be a real developer that creates, or just someone else's tool.

</comment><comment><USER6> Try craigslist, got my first coding job via CL and my current one from their as well... As far as "you can code", seeing is believing. I got my first programming job easily because I was good at the interview and had a number projects on codeproject.com that I could point to...You need to build some sample projects to demo at interviews, it is the easiest way to land your first programming job.

</comment><comment><USER7> Wherein I help you get a good job [http://www.aaronboodman.com/2010/10/wherein-i-help-you- get-g...](http://www.aaronboodman.com/2010/10/wherein-i-help-you-get-good- job.html)</comment>


Algorithm trading: Ghosts in the machine - <AUTHOR> http://www.ft.com/cms/s/0/c4baf670-1bfe-11df-a5e1-00144feab49a.html?nclick_check=1

<comment><USER2> Would it be a reasonable HN policy not to link to paywalled articles?

<comment><USER3> Reasons that come to my mind for a ban: So that HN readers will not be inconvenienced or frustrated by a link they cannot follow. To prevent people making posts for the purpose of driving traffic to their own pay wall website.

A reason for allowing them might be that sometimes good stuff is behind a pay wall.

</comment></comment><comment><USER3> To summarize: the article is a summary of recent stories about high frequency trading. I found it interesting.

</comment><comment><USER4> Copy/Paste please with a cited quotation.</comment>


Spotify Surpasses 2 Million Paying Subscribers - <AUTHOR> http://mashable.com/2011/09/21/spotify-2-million-subscribers/

<comment><USER2> Has anyone tried Rdio? I've tried both services (as a paid member) - and I really think I prefer Rdio - even though Spotify tends to get more media coverage. Rdio has a web based player (huge for people that can't install stuff on their work computer). They also have an iPad app, and I find both of their iPhone clients about the same. I haven't tried either of their services on Android... but I'll assume they have the same feature set as their respective iPhone clients.

Rdio also has much better music discovery services.

All in all - I really want to know what the Spotify hype is? (I want to use the _best_ service, so if I'm missing something - please let me know).

<comment><USER3> While Rdio is definitely better for discovery, I prefer Spotify because of its integration with iTunes. With Rdio, I had to keep opening iTunes if I wanted to play a song that Rdio didn't have. With Spotify, it lists all of my local songs inline with their library, and I can play everything from one app. If Rdio added this, I'd probably switch back, but for now, I'm sticking with Spotify.

In addition, I can sync both Spotify and local tracks to my iPhone, so I only need to use one app on there as well, rather than jumping back and forth between Spotify and iPod.

<comment><USER4> This is the main reason I use Spotify as well. MOG, Rhapsody, Rdio, and others all have this problem.

It's not so much integration with iTunes as it is the ability to import and manage non-Spotify music.

</comment></comment></comment><comment><USER5> I love/hate Spotify. I love the product and use it all the time. I signed up for premium after using the free version for one day, so they definitely won me over. What I absolutely hate is they have a huge number of show stopper bugs in the application. Songs don't play, songs go missing, can't get online, etc. Some have been reported over a year ago and still haven't been fixed.

Sometimes you'll get the message "Offline access for this computer/device has been withdrawn", which essentially deletes all your locally saved songs. Spotify limits the number of devices you can have offline access enabled on, but their algorithm is so awful it ends up nuking all your devices. So beware if you're planning on taking a long plane ride and suddenly your entire library disappears.

<comment><USER6> On the mac, spotify often fails to play songs for me as well. The problem is an intersection of weird bugs and their lack of support for low volumes.

When Spotify plays an ad and you turn the volume down too low, they pause the ad and show a pie chart of time remaining in the gutter of the app near the repeat controls. They wait until you turn the volume up, where volume is the product of whole computer volume and their in-app volume control, to continue playing the ad.

Now, if you are keeping the volume low, perhaps because you have in-ear earbuds and don't care to be deaf, there is a very confusing bug where an ad won't play at all, and in fact, won't even start playing so you don't see the time remaining pie chart. Instead, you get a yellow flash message that says, "Can't play track" or song or some such at the top. If you double click a track to play it, it just flashes the same message.

The fix is to temporarily increase the volume above their minimum ad volume threshold and then hit the play button in the lower left corner of the app. This reliably fixes things for me.

Snow leopard, macbook pro, spotify 0.6.1.287.g64b130c8

</comment></comment><comment><USER7> I can only wish them luck, it will be interesting to see if this model will be a successful one, since so many similar companies have trouble trudging on. They paid €45 million of licences in 2010 [1], and 2 million subscribers is probably close to €10 million revenue. They also have aggressive advertising.

[1] <http://www.ballade.no/nmi.nsf/doc/art2011011911391428493018>

<comment><USER8> Especially since I pay $25 a YEAR for 256bit AAC streaming audio to all of my computers and mobile devices. Spotify is simply too expensive.

<comment><USER9> So, you pay the equivalent of two traditional CDs worth of music for a year of audio. That sounds like a pretty good deal, actually, even if it is streaming.

<comment><USER8> iTunes Match, so it's streaming and download.

</comment></comment></comment></comment><comment><USER10> The irony of this is that I have just cancelled my Spotify account because tracks I have on my playlists have disappeared due to I assume various problems with record labels.

It's utterly annoying when you sit down in the office and the first track you go to is gone.</comment>


Distributed grep client in Go - <AUTHOR> https://github.com/irtefa/sherlog

<comment><USER2> I don't know if this is meant to be actually used, but clearly ssh with shared keys and a trivial bash script would be better than just shelling out to grep from go itself. Fairly pointless really.

<comment><USER3> Without the context of why this was developed, I have to agree with easytiger's point of pointlessness. Perhaps it was just an exercise in curiosity and exploration of the language. If not, I would use pdsh instead [http://sourceforge.net/projects/pdsh/](http://sourceforge.net/projects/pdsh/) $ pdsh -b -w '10.0.0.1,...,10.0.0.n' 'cat /var/log/your_log | grep "your_pattern"'

<comment><USER2> Yea i dont mind things like this being posted, but some context would be good. It seems to present itself like a serious tool which might dupe some inexperienced people.

<comment><AUTHOR> I was not intending to confuse people. This is the first time I posted something on hn. I will give more context when I post something next time. Thanks!

<comment><USER2> no worries. HN does have quite a big love affair with go.

How long have you been writing in it? I have an idea for autility id like to implement in it for a bit of fun.

</comment></comment></comment></comment></comment><comment><USER4> This doesn't really particularly safe to me (assuming that _exec.Command_ allows spaces in arguments):

      cmd := exec.Command("grep", s, logName)

Since you are searching for the expression in just one log file, why not use Go's excellent _regexp_ package?

<comment><AUTHOR> It started off as a class assignment where it was required to execute "grep" on whatever shell we were running the program on. That's why, instead of using the regexp package, we went for the above (somewhat shitty) approach. But, that's something I am definitely looking into changing!

<comment><USER5> You might have to work pretty hard to write a grep that's as good as grep. It pulls a lot of swift moves in the name of speed.

</comment></comment></comment><comment><USER6> I've just got a little python script that sshs around my boxes running grep on each, writing it to the a log file with the box name prefixed, and sorting them all by date (as my log lines have date prefixes and this makes sense for me).

Using ssh instead of running a service on each server seems more straightforward to my thinking.

</comment><comment><USER7> Golang dependency on each machine can be removed by building the executable. The command to execute the server cannot be run remotely. Since the grep is confined to a single log file, it is not very useful. It shows how easy to use go routines to make concurrent requests.

</comment><comment><USER8> This isn't really 'distributed grep' as far as I can tell. It is simply running grep individually on each machine.</comment>


Is Synesthesia a Brain Disorder? - <AUTHOR> http://blogs.discovermagazine.com/neuroskeptic/2015/04/21/is-synesthesia-a-brain-disorder/

<comment><USER2> The summary says the main question addressed is whether synesthesia is a brain disorder. But that's a more loaded question than what the paper actually looks at. The paper only asks whether it's a neurological condition. Without too much nitpicking I'll say if you ask whether it's a disorder, you're accidentally pulling in a question of whether synesthesia causes suffering, which is irrelevant. All the cited paper investigates is whether synesthesia is detectable at all by physically measuring the brain as opposed to relying on subjective experience.

Aside I have to admit I am confused by the word "neurological". If a condition is neurological does that mean it is rooted in the nervous system (which includes the brain)? Is a condition that is rooted in the nervous system, but we do not yet know how to observe or study it, still "neurological"? That seems like the case for synesthesia.</comment>


CoffeeMe introduces you to people you want to meet professionally - <AUTHOR> http://www.coffeeme.in/

<comment><USER2> Why would you have a .in domain and not make the service available in India (to which the domain belongs to)?</comment>


R for the JVM: 60% complete, help wanted! - <AUTHOR> http://code.google.com/p/renjin/wiki/PlanOfAttack

<comment><USER2> The primary reason to use R is the large number of stats packages, which are written in a mixture of C, Fortran, and R. I don't see mention of JNI anywhere, but hooking into Fortran and C seem like the most difficult but most essential piece of making this useful.

<comment><USER3> I agree. The reason I'll drop into R instead of python is often that I need to do some complicated analysis like adaptive multivariate integration over hypercubes (<http://cran.r-project.org/web/packages/cubature/index.html>) or general maximum pseudolikelihood estimation for multistage stratified, cluster-sampled, unequally weighted survey samples (<http://cran.r-project.org/web/packages/survey/index.html>).

There are currently > 3500 packages in CRAN, many of which can be found nowhere else. Being able to access java libraries is great, but I an access java libraries from all sorts of different languages. Until it is seamless to install and use these CRAN packages, I'm sticking with the standard interpreter.

<comment><AUTHOR> Yeah, there are some killer packages that won't be able to run on Renjin without porting their C sources to java/R. That's a bummer.

But others -- like the survey package -- are pure R and run well on renjin. (Just do library(survey, lib.loc='/path/to/R/library') )

The central goal at this point is to support embedding packages like 'survey' in web apps or larger java apps. If you're looking for a seamless user experience for ad-hoc analysis, we're still quite a ways off!

<comment><USER4> Looking at that project page is there a reason you went for an interpreter rather than compiling to JVM byte code directly? Obviously it's a little harder if you're targeting JVMs <v7 as you don't have invokeDynamic to play with, but most of that work will be common to an interpreter or compiler. On the project I'm working on we haven't even implemented an interpreter, the REPL simply compiles to class files that are then loaded to evaluate them.

<comment><AUTHOR> Mostly inexperience :-)

There are a few features of the R-language that make direction translation into byte code daunting for a muggle like myself:

1\. Computing-on-the-language: R code expects to be able to access and modify the AST and frame of itself, its caller, and other closures. 2\. Impure call- by-need argument-passing semantics.

The compiler that's in the trunk is experimental but evolving fast, I think the next steps will probably to start compiling simple but performance- critical basic blocks to byte code at runtime, and then slowly expand the scope of language that can handled from there... (Expert advice welcome!!)

<comment><USER4> Ah right, those are going to make things fun. :-) I think in your position I'd write a compiler, but keep the AST associated with the byte code and back off to an interpreter if the AST is modified, maybe recompile after enough calls without further change. The call-by-need arguments don't sound too bad, but could take some thought on the memoisation strategy, I think I'd do it at the caller and pass those structures through, but I'd want to think about it.

I'd hardly count myself as an expert, but I think the best win we've had is in thinking carefully about callsite caching strategies and having a eureka moment about just how insanely powerful MethodHandles.exactInvoker can be.

</comment></comment></comment></comment></comment></comment><comment><USER5> I'm not looking to move things to the jvm anymore, I can't trust oracle with the future of stuff I may need to update and maintain.

</comment><comment><USER6> What about Incanter? It seems like a perfect opportunity to gather two languages trying to do the same thing into a single JVM-focused project.

<comment><USER7> Incanter is quite nice and I really like Clojure (disclaimer: I am still a beginner), but it has far less libraries than R. I also think the creators of R did a really good job in making seamless the installation of a package (install.packages(...)) and having lots of functions pretty well documented, so a statistician who is not a programmer can easily do his work and quickly come up with results. AFAIK this is still unmatched anywhere else.

<comment><USER8> Perhaps as importantly, R has significant buy-in in the statistics community, so a paper on a new technique will often be accompanied by an R package implementing it; in fact several journals explicitly prefer R packages for accompanying code, because the reviewers are likely to be familiar with how to use it. That's partly due to its semi-continuity with Bell Labs S (<http://en.wikipedia.org/wiki/S_(programming_language)>), I believe, which was a language designed by-statisticians-for-statisticians. It's fairly hard to replicate that; would require considerable effort to migrate the whole community to a new consensus environment.

</comment></comment></comment><comment><USER9> Looks like a very interesting project.

Does the JVM environment have any tools that would facilitate building a better R debugger? That's one area of the R ecosystem that could use a serious upgrade IMO.

<comment><AUTHOR> Eclipse is a pretty good framework for building IDEs; there's already a set of plugins for R (StatET) that support debugging with the original interpreter.

One of the projects for 2012 is to integrate Renjin into StatET, including a line-by-line debugger. Any takers?

</comment></comment><comment><USER10> bedatadriven: R native code is usually slow and always memory hungry. Nonetheless, running R on Google AppEngine is very tempting. Could you give us some idea how the memory usage looks like using Renjin when compared to any other R distribution? Here is example how to measure memory:

[http://heuristically.wordpress.com/2010/01/04/r-memory- usage...](http://heuristically.wordpress.com/2010/01/04/r-memory-usage- statistics-variable/)

<comment><AUTHOR> Re: performance of R language code, Renjin is a bit faster there than R2.X, and should get faster the more we get into byte code. (Though renjin is currently slower in other areas like giant matrix manipulation)

As for memory usage, I believe object.size() will double-count your input data when it is referenced by the resulting model objects. Better to check memory.profile()

At present, Renjin benefits from the JVM's state-of-the art garbage collection, so you may see some improvements even at present, but I expect the big difference will be once we roll out non-memory-backed stores for R Vectors. Then your input data could be stored in a database and only partially loaded into memory as needed.</comment></comment>


Pyringe : a python debugger that can attach to and inject code into processes - <AUTHOR> https://github.com/google/pyringe/commits/master

<comment><USER2> Duplicate of [https://news.ycombinator.com/item?id=7496261](https://news.ycombinator.com/item?id=7496261)

<comment><AUTHOR> Useful cross-reference - thanks.

</comment></comment><comment><USER3> Why did you link to commits page?

<comment><AUTHOR> I was on a crappy mobile, and that's the link I found. I thought it would be easy enough to furtle about and find more information for those on better phones or desktops.</comment></comment>


Microsoft says 40 percent of all VMs in Azure now are running Linux - <AUTHOR> http://www.zdnet.com/article/microsoft-says-40-percent-of-all-vms-in-azure-now-are-running-linux/ <comment><USER2> Lots of emotional comments with the usual I-hate-MS bent, without a single reference to data showing Azure [Linux VM] users or non-users. Always shocking to see individuals who claim to be rational and open-minded in one domain become irrational, closed and judgemental in another.

<comment><USER3> Is it really irrational to distrust Microsoft? I mean, they seem to be much more palatable lately, but does that mean we should completely forget their history? I'm all for using the best technology for the job, but when you're in a close call situation I think it's okay to rely on an organizations history to make a decision.

<comment><USER4> Yes, when you don't apply the same logic to the other large tech companies.

<comment><USER5> Is there another large tech company with the history of wrongdoing that Microsoft has? They're a convicted monopolist that personally affected a large subset of the developer community with repercussions that took decades to solve (if they're solved at all).

</comment></comment></comment></comment><comment><USER6> We're running our Debian farm on Azure thanks to startup perks. It's been up 100% for us the last 2.5 years. Azure service is no less or better than AWS.

</comment><comment><USER7> This doesn't surprise me overmuch. The foot in the door is Office 365 Enterprise, which comes with AD in Azure for free. From there, it's natural to setup a VPN to your Azure environment. With that in place, competitive pricing, and better compliance tools (such as host-external session-based flow monitoring) it becomes an attractive solution.

Tie that to experience with Hyper-V. Companies like mine who have unused Hyper-V capacity due to Microsoft's ridiculous VM licensing scheme for Windows, tend to run Linux instances on that extra capacity. The high performance of Linux on Hyper-V was an eye-opener for us. I could see us using Azure for Linux.

That said, we are 99% AWS, and I don't see our online platform ever moving from them.

<comment><USER8> > Microsoft's ridiculous VM licensing scheme for Windows

Microsoft offers at least three different ways to license Windows to run on a VM in-house. Core count, instance count, or site. Are all three "ridiculous?"

None of Microsoft's license types require a certain Hyper-V capacity. In fact the whole "we were required to over-allocate Hyper-V so run Linux on the spare capacity" claim makes no sense.

<comment><USER9> Yes, they're all ridiculous. Also their licensing model is so hideously complex even different license advisors from Microsoft will give you different answers as to what you need. The only way you feel comfortable being fully in compliance with licensing is by massively overbuying. Its a ridiculous burden to place on a business.

</comment></comment></comment><comment><USER10> Seems very low for public cloud provider.

<comment><USER11> Who chooses to use Azure? Mostly MS shops. I see no compelling features for a FOSS shop.

<comment><USER12> As someone who works at MSFT in the Azure space I can tell you that the statement of "Who chooses to use Azure? Mostly MS shops" is inaccurate in my experience. Of all of the customers I've worked with, most of their architecture is at least 50% linux/OSS, typically more like 75%. I've honestly yet to see a customer moving to Azure who has more than 50% Windows based systems. Almost everyone I've worked with only uses Windows Server for their SQL Server services, outside of that it's RHEL, CentOS or Ubuntu.

With that being said, the typical appeal of Azure (and likely other cloud providers) are the PaaS services. Those typically do have Windows VMs sitting behind them, although we are starting to make Linux an option on most of those.

<comment><USER13> It seems likely that most people who use SQL Server were at least Microsoft shops at some time in the past, though; otherwise why are they using SQL Server?

Very few people start a project using SQL Server if they're not otherwise using MS stuff.

<comment><USER14> We'll see this change as SQL Server on Linux matures.

<comment><USER11> Why?

Postgres is free and usually good enough. If you are going to pay, Oracle is generally better. The ground that mssql wins for a non-microsoft shop is verrrrry small.

<comment><USER14> Most people who have paid for Oracle would be perfectly well catered for by Postgres, it's true. Postgres gets you say the most-used 50% of Oracle for 0% of the cost. SQL Server gets you the most-used 90% of Oracle for 25% of the cost. The companies that need 100% of Oracle a very few and far between. Oracle's entire business model is based on people not realizing this...

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> I'd be interested to see how this breaks down as a function of cost instead of raw numbers.

This would for example control for development environments and pet projects as compared to production projects running on the platform.

<comment><USER16> Yes, and account for Microsoft giving serious usage giant credits too.

<comment><USER17> ehhh...maybe our definitions of serious usage are different, but even then their EA based discount model is dumb. At our peak on azure we we're doing about $120k/month, but didn't bother committing to more than $200k/yr because the discounts just weren't awesome. last time I looked the discounts on more modern VM types were WAY worse than what we used to get on older generations. Also, once you are on EA billing all the decent billing/usage tools in the azure portal stop working (they aren't that great anyway) and you basically have to buy or roll your own.

</comment></comment></comment><comment><USER18> Remove Windows servers not being used as web servers (active directory, sharepoint, domain controllers, exchange, etc.) and the Linux number is probably near or above 50%. This share will only grow with Microsoft embracing Linux in .NET Core, and many of the next wave of cloud consumers being small to mid-sized orgs looking to move to managed cloud applications vs. simply putting their machines in the cloud.

</comment><comment><USER19> It's great to have alternatives to AWS.

<comment><USER20> It WOULD BE great to have alternatives to AWS.

Here, fixed that for you.

<comment><USER21> what do gcp and azure need to be considered alternatives?

<comment><USER20> Nothing against GCP. It's considering Azure as an alternative that I object to.

Here's a couple of ideas:

1\. Linux support. If you look in Azure documentation they never say they support any Linux distro - they "endorse" a couple. Amazon provides their own for of Centos with all the conveniences like having the AWS CLI pre-installed. Incidentally Azure is the only cloud platform where I've had machines kernel panic randomly.

2\. A consistent interface. The Azure portal has been under development for over 2 years now but you still need to use the "classic" interface for some settings.

3\. Database support. Other then MS SQL Server. MySQL is supposed to be in beta. It's been in AWS since 2009. Also Amazon is developing AuroraDB which is, supposedly, optimised to work in AWS.

4\. Availability zones. Again in preview in Azure but have been in AWS since 2008. What's also interesting is, up until now MS marketed "Availabilty sets" as the Azure version of AZ. One is a guarantee that a box will be spun up on a different rack within the same datacenter, the other guarantees the box in a separate DC.

5\. A consistent API. And I don't mean the definitions being immutable - that's actually handled with schema versioning. I mean getting the correct responses. Although unchanging API would be nice as well.

Here's an example: [https://drive.google.com/open?id=0Bz59vPCFY- fham1qN1E1MnZBcl...](https://drive.google.com/open?id=0Bz59vPCFY- fham1qN1E1MnZBclk) (3mb video). What basically happened was, I would deploy my environment, run Ansible against it and get errors/unconfigured nodes. So what happens in the video is: I run 'for i in 1 2 3; do azure vm list; done' and get three different responses: a list of VMs, an error message saying I have insufficient access rights to list the VMs and an empty list. All are incorrect. The first one is the closest to the truth but it's still missing one box. I get eventual consistency is a thing, but this was >30min after the boxes had been provisioned.

So to answer your question as to what is needed for Azure to become a viable alternative to AWS: I would say about 10 years.

</comment></comment></comment></comment><comment><USER22> They can make money off of Linux, so it's good now.

</comment><comment><USER23> Time for MS to rollout MS-Linux

<comment><USER24> I have long yearned for a libmicrosoft.a that runs on top of Linux and provides the MS ABI. Best of both worlds.

</comment></comment><comment><USER25> This is the "Return of the Jedi" Episode where the Young Jedi finally able to bring Darth Vader back to the Light Side of the Force.

George Lucas predicted this in 1983.</comment>


YC applicants:how far along are you in your biz? - <AUTHOR>

I'm just taking a quick poll. Myself, I'm launching a private beta this week. www.paperhater.com. <comment><USER2> Getting basic functionality done now. I literally thought of the idea just a couple weeks before I filled out the app so I will have a demo done before interview time, but a public beta will not release probably for at least another month or two.

I have multiple ideas in multiple stages of development, like most devs do i'm sure, however I applied with what I thought was the most promising idea that will monetize easier than others.

<comment><USER3> I think one should work on ideas which they are more passionate about than worrying about monetization. Hard work will pay itself.

<comment><USER2> I am certainly passionate about my idea ... since it came to me I have done nothing but eat sleep and breathe this idea. I own a tech consulting firm by trade and have literally sent my employees out to do jobs I would usually do myself just so I could spend more time working on this project.

That is part of the reason I chose it to apply to YC. I was not "looking" for an idea to pitch to YC, but I felt I could benefit greatly from YC. In most cases when I think of a new idea I bootstrap it and work for an exit without outside investors (I've already had a decent exit in the software industry) however I felt that YC experience could

A. Help me build a network in SV where I plan on moving in the near future anyway B. Get insight some of the greatest minds in our industry C. Have an experience which I felt could not be matched in any bootstrapped company, because of the opportunity to meet other likeminded individuals who share my interests and passion for technology.

</comment></comment></comment><comment><USER4> Im about to launch a 200+ user private beta for <http://www.yiipu.com> this week too.

</comment><comment><USER5> Launched V.1.0 in August

Launching v.1.1 next week

<http://www.supertrainerhq.com>

<comment><AUTHOR> Pretty site. How many signups do you have?

<comment><USER5> Over 100 so far. Haven't implemented the social media aspect that will really kick it off.

Still looking for a little bit of money to get that done!

Hopefully that could happen at the YC.

<comment><USER4> I love your idea and your homepage design! I tried and it seems a little hard to figure out what to do in each page. Maybe add more info, tips, tutorials, etc.</comment></comment></comment></comment>


Has the NSA legally forced the weakened security of US goods? (2014) - <AUTHOR> https://www.schneier.com/blog/archives/2014/03/friday_squid_bl_420.html#c5226750 <comment><AUTHOR> A response to those that said there was no evidence of NSA disrupting security past contents of Snowden leaks. I had actually been critiquing their activities for a long time before that since they provably weakened security. I cited NSA's own security recommendations and practices to prove that. Dropping it here for anyone that hears the same crap and wants to counter it without just referencing Snowden leaks.

Also, a few claims come from this testimony from one of the pioneers in INFOSEC and high-assurance security:

[http://lukemuehlhauser.com/wp-content/uploads/Bell- Looking-B...](http://lukemuehlhauser.com/wp-content/uploads/Bell-Looking-Back- Addendum.pdf)</comment>


Hokusai's Ghost Stories (ca. 1830) - <AUTHOR> https://publicdomainreview.org/collections/hokusais-ghost-stories-ca-1830/ <comment><USER2> _The series is fruit of the tradition Hyakumonogatari Kaidankai [A Gathering of One Hundred Supernatural Tales], where Japanese friends would meet to share fantastically frightening tales from folklore and their own experience._

If this is of interest to you, consider checking out Anthony Bourdain's Hungry Ghosts comic book series, which is also based on the tradition of _Hyakumonogatari Kaidankai_.</comment>


Google's Roboto is a Helvetica rip-off - <AUTHOR> http://theunderstatement.com/post/11645166791/roboto-vs-helvetica

<comment><USER2> I know close to nothing about typography, but is it really so odd for letters to look similar in different fonts? They're the same letters... it seems like they can only differ by so much.

Personally I think the differences, even if they're subtle, make Roboto feel different (I seem to like it more than Helvetica, just from my reactions to it from staring at that picture)</comment>


Ask YC: Who wants one month of free advertising space on Simplebucket.com - <AUTHOR>

The YC community has helped me in many ways getting things done with excellent advice and suggestions. So I thought what better way to give back to the community other than offering one month's of free ad space.
You can see the ad space at http://www.simplebucket.com/explore
Add a comment here with your startup url and a brief description of what your startup do and the comment with the most points get the spot. How this?
*oh, I forget to add, I will reserve the right to select the next highest comment if the winner is a competing startup (ie. photo hosting ), I hope you understand. <comment><USER2> I'm surprised nobody else has responded here. Even if the traffic is miniscule and sucks, appearing as though your ad space is filled or partially filled can be a benefit, so its a good idea what you're doing.

My company is still in Alpha and doesn't fully work yet, but oh wells, I don't care. Didn't PG say to release a bare working version asap and "starting with a very crude version 1, then (f) iterating rapidly." I have a very early version of the app up on myspace.com/socialholdem -> check the app details for what I'm adding soon to make it competitive to the others. Right now its me and a friend is doing graphics. Or link to my blog if you want, because my app doesn't save the chips permanently to the database: outrunpoker.com/blog. Apps don't make crap for money, but its a way for me to get something going to be able to offer the service that I want, which is paid subscription based internet gambling, which is legal. From that approach, I can improve and grow from there. I know there is alot of room in the internet gambling field, especially with all the new changes in the web 2.0 world and cheaper bandwidth, etc. Someone can create a company that can compete with the big guys by changing the way it is advertised. Every new person I meet in the future, I will have a better story to tell than the one I am telling here. And so on...

Good luck to you.</comment>


A Complete Guide to Rails Caching - <AUTHOR> http://www.nateberkopec.com/2015/07/15/the-complete-guide-to-rails-caching.html <comment><USER2> > Developers, by our nature, are very different from end-users. We're used to > the idea that when you interact with a computer, it takes a little while for > the computer to come back with an answer.

I don't agree. End users are used to shitty systems which take some time to load, but we developers should know better. We should be able to recognise performance bottlenecks during the architecture design and development, also we should be able to measure the layers where optimisation is necessary and useful. And when developing web app, caching should always be in mind as one tool to improve system performance in one way or another.

Otherwise fantastic piece of information.

<comment><USER3> Taking this further, as a developer, I find I have even less patience for slow loading times than a 'regular end-user'.

I don't know exactly, but I assume this is because I know what goes on behind the scenes, and 99% of the time, the website is doing way more work than it really needs to in order to deliver the experience that I'm asking for.

</comment></comment><comment><USER4> Fantastic resource.

No mention of HTTP caching though, which for a whole class of applications is a great way to minimise rendering time.

Rails has great support[1] for etag based content expiry.

[1] [http://api.rubyonrails.org/classes/ActionController/Conditio...](http://api.rubyonrails.org/classes/ActionController/ConditionalGet.html#method- i-stale-3F)

</comment><comment><USER5> Does anyone here use compression on all of their cached content? Our Redis cache store has ballooned up to about 8G (we store a lot of html/json fragments) and is unwieldy to ship around when we want to debug bad data bugs on our dev machines. We are experimenting with lz4 compression now and the speed-compression ratio tradeoff looks pretty good with it.

What has been your experience with Rails caching + compression?

<comment><USER6> If you're using Readthis[0] for Redis caching you can use an alternate marshaller to avoid the size and performance overhead of marshalling all objects through Ruby. If you aren't using Readthis you really should, it's faster than RedisStore, more customizable, and actually maintained!

Mandatory disclaimer, I wrote the gem.

0: [https://github.com/sorentwo/readthis](https://github.com/sorentwo/readthis)

<comment><USER5> Does marshaling pose a problem (leading to cache flushes) when you upgrade to a new Ruby version?

<comment><USER6> No, that hasn't posed a problem in my experience. Note that all of the stores rely on Ruby marshalling underneath. To my knowledge Readthis is the only cache that lets you choose something else like pass through, JSON, Oj, etc.

You will definitely have to flush before switching from no compression to compression or changing marshallers though.

<comment><USER7> I wrote a small snippet to share cache (particularly session) between a php webapp and rails using Dalli long back. It might be completely broken by now, but worked brilliantly back then.

it was based roughly on this [https://gist.github.com/watsonbox/3170415](https://gist.github.com/watsonbox/3170415)

<comment><USER6> That sounds like a job for phuby! [https://github.com/tenderlove/phuby](https://github.com/tenderlove/phuby)

No, not really.

</comment></comment></comment></comment></comment></comment><comment><USER8> I found the animated GIF next to the article to be incredibly distracting while reading. I had to remove it using the inspector to be able to get through the article.

</comment><comment><USER9> This is a great guide but it's not complete. One of the biggest problems with all of these guides is that they focus solely on view caching.

As far as I can tell the Rails ecosystem completely lacks a good model / data caching system. There are a few gems that do model caching but they all have major flaws. I'd _love_ to see a good guide on Rails data caching and gems that eliminate the mess of calls to Rails.cache.fetch.

<comment><USER10> This is because caching should be done as coarsely as possible. Caching views and entire pages is the common case.

<comment><USER11> So what's the best approach for caching API responses?

<comment><USER12> An api response isn't any different from a web page insofar as infrastructure is concerned. HTTP caching is usually my first choice when I have the wherewithal to do that.

[Edit: conditional responses are probably the best way to go – save the bandwidth.]

</comment></comment></comment></comment><comment><USER13> Great article. You should additionally measure page speed as experienced by your users, because other pesky things like network congestion, the user's browser & hardware and the speed of light all affect website performance. If you measure from _every_ user's browser, you'll get very detailed performance info. A chart from a recent blog post of mine: [https://s3.amazonaws.com/static.rasterize.com/cljs-module- bl...](https://s3.amazonaws.com/static.rasterize.com/cljs-module-blog- map.jpeg)

Just because the page loads quickly on your laptop doesn't mean it loads quickly for everyone. I'm working on a tool to measure this stuff: [https://rasterize.io/blog/speed- objections.html](https://rasterize.io/blog/speed-objections.html), contact me if you're interested in early access.

Contact me if you're interested in an early preview.

</comment><comment><USER14> this is a great article

> The most often-used method of all Rails cache stores is fetch

It's true, but I think you should add performance tests while the app write/read because the big problem of db/cache is the write that influence also the read(fetch). Another big problem is the expiration vs garbage collection after the memory is full.

<comment><USER6> A request with dozens or hundreds of `fetch` calls will always be slower than a few `fetch_multi` or `read_multi` calls. All of the current ActiveSupport compliant libraries support both calls.

<comment><USER15> We've found [https://github.com/n8/multi_fetch_fragments](https://github.com/n8/multi_fetch_fragments) to be quite handy for this.

</comment></comment></comment><comment><USER16> > First, figure about 50 milliseconds for network latency (this is on desktop, > latency on mobile is a whole other discussion).

And outside the USA, add on another 200ms more. I, an Australian, visited the USA last year and was surprised, although I had expected it, at how much faster the Internet was.

I get the general feeling that people in the USA end up much more picky about performance than their Australian counterparts, because they're used to a result which is quite a bit faster anyway.

It's rather a pity that we as an industry don't care more about performance, because on average we're utterly abysmally appallingly atrocious at it. There's simply no good reason for things to be as slow as they are.

</comment><comment> why-el > but usually virtualization is a mostly unnecessary step in achieving > production-like behavior. Mostly, we just need to make sure we're running > the Rails server in production mode.

Isn't this assuming your development mode has the same memory/cpu as your production? I can't tell you how many times I get questions from clients who ask why their 16GB dev box is running fine while their 512MB dyno is slow. The point of a docker image is to limit these resources, which `rails s production` does not do.

<comment><AUTHOR> Sorry, I should have qualified that sentence: "a mostly unnecessary step in achieving production-like behavior *when trying to determine a page's average response time". That's just been my experience with this. I haven't noticed significant differences in my Macbook vs Heroku when measuring response times.

It's a fast-and-loose measurement, to be sure. Virtualization/dockerization is the only way to get a super-accurate measurement.

<comment> why-el Yeah I have been thinking about this as well. I guess it depends on how wide the difference is (when I said 512MB, I really meant it. People are still comparing that to their dev machines).

Somewhat related: How has your experience been setting up docker with Rails? I have an idea for a project that seamlessly integrate docker into one's Rails dev workflow, but so far I have found its setup (let alone working with it) to be cumbersome to say the least.

</comment></comment></comment><comment><USER17> Why is `caches_action` not considered a best practice? Using that for popular landing pages, I'm able to serve over half of my requests in < 10ms.

<comment><AUTHOR> Oh, I hope I didn't give that impression that it's no longer a "best practice". But you can, of course, accomplish exactly the same thing as an action cache with fragment caching. The cases where you can use action caching are so limited (like you said - mostly landing pages) that I feel it's hardly even worth bothering with when you can just wrap the entire view in a cache method. That's all I was trying to get across.

<comment><USER18> Or `caches_page` and then it won't even hit rack / rails and can be served directly by nginx. But I agree that the usage scope is quite limited. We still use it for pages served to not-logged-in users where it makes sense, and both the performance boost and the reduction of load on the system is noticeable.

</comment></comment></comment><comment><USER19> Don't forget to divide the result from `ab` by `x` where `x` is the concurrency amount (`-c x`).

The 'time per request' that has 'mean, across all concurrent requests' behind it is the mean of every single request. All other ms values show you the response time per single request * concurrency. So the percentile table is only interesting when you take this into account.

</comment><comment><USER20> In the example where you cache the todo list and use an array of the todo item ids plus the max updated time, why is that approach better than just updating the list updated_at time whenever a child record is changed? With your approach, each todo item needs to be pulled from the db which should be slower than just checking the parent's updated at time for a cache hit.

</comment><comment><USER21> > _Why don 't we cache as much as we should?_

An alternative question:

 _Why do we have to cache so damn much in Ruby and complicate the hell out of our infrastructure and code?_

Because Ruby is slow.

<comment><AUTHOR> What about caching in Ruby is complicated to you? It seems pretty simple to me.

What production website _doesn 't_ cache? You make it sound like it's a Ruby- only issue.

<comment><USER22> Caching involves adding generally untested code to your production environment. Caching can bring your production environment out of sync with your development environment. Caching introduces state between generally state-less requests - increasing the mental overhead of understanding why you are seeing certain behavior. Subtle bugs can result in disproportionately bad behavior (wrong cache key could accidentally show one user's private data to another user).

I don't think you should never do caching - just that is is non-trivial, especially once you move past a 15min-blog use case.

<comment><USER23> Caching makes things more complex, but unfortunately, that's the nature of the game and there's no escaping it. If you plan things out and break your caching strategy down into more manageable pieces, you'll be able to work out a way to make it work as a cohesive whole. It's really easy to just ignore caching until you're almost done with a project, only to be stuck in the painful position of trying to make it work with a shoehorn. Just thinking about the basics in the beginning will help make it a lot easier for you later on.</comment></comment></comment></comment>


Superperm: Distributed search for superpermutation combinations - <AUTHOR> https://github.com/superpermutators/superperm/tree/master/DistributedChaffinMethod <comment><AUTHOR> More details in these series of tweet by Greg Egan [1]

[1] [https://twitter.com/gregeganSF/status/1126639564192243712](https://twitter.com/gregeganSF/status/1126639564192243712)

<comment><USER2> And [https://news.ycombinator.com/item?id=18271265](https://news.ycombinator.com/item?id=18271265)</comment></comment>