Researchers Find Further Evidence That Schizophrenia Is Connected to Our Guts - <AUTHOR> http://blogs.discovermagazine.com/d-brief/2019/02/07/gut-bugs-may-shape-schizophrenia/#.XGtu1KSIaaO <comment><USER2> There is good reason to be skeptical of the claims in the article. This twitter thread [1] is a good, articulate criticism of the issues around the paper.

To quote a segment from the series of tweets by the author, Kevin Mitchell (a neurogeneticist from Trinity College, Dublin)[2] :

"1\. A supposed mechanism in search of a phenomenon... (What is the microbiome supposed to explain here?)

2\. No actual mechanism.

3\. No actual findings. Just lots of exploratory blips, unconstrained by prior hypotheses, uncorrected for multiple tests, and unreplicated.

4\. Massive hype.

Just because the genetics of complex disorders is complex and just because the neuroscience of the highest functions of the human mind is complex, doesn't mean we need to go looking for new kinds of biology to explain them"

[1] [https://threadreaderapp.com/thread/1095012297200844800.html](https://threadreaderapp.com/thread/1095012297200844800.html)

[2] [https://www.kjmitchell.com/](https://www.kjmitchell.com/)

[edit: formatting]

<comment><USER3> I think the most obvious question is "does schizophrenia cause an abnormal gut microbiome or does an abnormal gut microbiome causes schizophrenia?"

My bet is it's the former, not the later.

<comment><USER4> Then you need to explain how the fecal transplants triggered similar symptoms.

<comment><USER5> Maybe schizophrenia is not a sickness, merely a epi-genetic adaption to bad circumstances. Have a little civil war? Turn yourself into a twitching little zombie and walk it off?

So if you transport the message, you get a universal reaction.

</comment></comment></comment></comment><comment><USER6> I did my thesis on one possible cause of this illness 20+ years ago and then never looked at it again.

After just reading up on the possible causes of schizophrenia it seems many more discoveries have been made which has only resulted in more confusion and we're basically nowhere near having a clue.

One of the most important points that rarely come up in these discussions is that schizophrenia is not one illness but a bunch of different ones grouped together that we haven't figured out how to differentiate. You can find several patients that share very few symptoms.

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

<comment><USER7> > One of the most important points that rarely come up in these discussions is > that schizophrenia is not one illness but a bunch of different ones grouped > together that we haven't figured out how to differentiate. You can find > several patients that share very few symptoms.

Exactly.

I remember meeting someone at an alumni networking event who worked with mentally ill people, including schizophrenics. He explained to me that a lot of his patients had extreme sleep apnea, and their CPAPs were turned up much higher than a typical sleep apnea patient.

His theory was that some of his patients were mentally ill due to their sleep disorder.

<comment><USER8> And a high intensity cpap was inducing a sleep disorder?

Couldn't he easily test that by having the patients reduce the intensity?

<comment><USER9> I interpreted GP's comment differently:

Unusually high CPAP intensity indicates unusually severe sleep apnea, suggesting a connection between sleep disorders and mental disorders.

Reflecting on the impact sleep has on my mental health, that makes intuitive sense.

</comment></comment></comment></comment><comment><USER10> To me the most interesting and convincing part is that fecal transplants from schizophrenic patients to mice changed the mice's behavior in ways that are similar to schizophrenia, as well as changes in glutamate levels. This shows some kind of causal link more than just correlation.

I feel like all the comments are ignoring this part of the blog post

<comment><USER2> from a twitter thread [1] critiquing the paper, by a neurogeneticist [2]:

" And we can test them on a whole range of behaviours, without correction for multiple tests, without a hypothesis of which should show an effect, and again without a replication sample In this case, the ones getting a SCZ fecal transplant showed greater activity, but _less_ anxiety and _less_ "depressive" behaviours. Why? Who cares? You can spin these kinds of findings any way you want. We all love a good story."

Please read the cited thread.

/disclaimer: I am not a neurologist / neurobiologist. My training was in genetics & molecular biology, and I've since moved out of active research / life sciences. But bad statistics and gross over-interpretation bothers me immensely; folks read such breathless reports & then start doing all kinds of harmful stuff because it's been proven! But it's not. It may be a hypothesis (and this report may not even qualify as that). And cruel as it is, we still don't understand nearly enough about so many things in biology to be able to address these disorders.

[1] [https://threadreaderapp.com/thread/1095012297200844800.html](https://threadreaderapp.com/thread/1095012297200844800.html)

[2] [https://www.kjmitchell.com/](https://www.kjmitchell.com/)

<comment><USER11> I'll take one well-designed and peer-reviewed study over 100 random Twitter threads.

<comment><USER12> What about twitter threads from well-respected researchers in the field? What about a poorly-designed study (for the reasons pointed out in the thread)?

<comment><USER11> I don't know if the Twitter thread is from a well-respected researcher, or whether their criticisms of the study are valid. That's my point.

<comment><USER12> It sounds like you're not the target audience of either the paper or the twitter thread.

<comment><USER11> Again, you make it sound like these are somehow equivalent. Why even have peer-reviewed journals in the age of Twitter?

<comment><USER13> Because this is how science has always been done, it's just visible on twitter now. Someone submits a paper to be published. A few scientists look it over and check for basic correctness. Then the paper is published and people read it. If the paper is interesting, they start talking about it. They use the breakroom, email, twitter, facebook, science journals, backs of envelopes, and anything else that's convenient. This conversation about a paper is a critical part of the community absorbing a new piece of evidence. From these conversations, subsequent experiments are planned and published and science keeps moving forwards. These conversations are not as formal as a journal publication, but they are much more formal and structured than laypeople usually realize. Comments are worded in particular ways, and only certain kinds of objections make sense. Proving things about nature is an excruciating task that requires an enormous level of care and evidence.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> It really feels like recently someone developed a new method to characterize the microbiome, and now people are correlating that meassure with everything like the probability that people eat green m&ms (no correlation) that they eat blue m&ms (no correlation) yellow m&ms (no correlation) have scitzophrenia (slight correlation!). And publish what ever hits a notisable p-value. But it all leaves me skeptical of everything to do with the microbiome.

<comment><USER15> But isn't this how science works? We discover a new way to measure something, and then we start evaluating its usefulness as a measure. When and where we find interesting relationships, report that out, and then start looking for causes. Perhaps the new ruler is broken, or perhaps we learn something we didn't know before. Regardless, I see reports such as this one as interim findings necessary to either justify or pursue additional funding.

VC and SV entrepreneurship is pretty much the same game. That's why you have the "Uber for X" syndrome. Sometimes it sticks, sometimes it doesn't. We are all human search functions reporting back to the hive mind.

<comment><USER16> It's not exactly how science is supposed to work. New measurement technology should result more from a pull than a push. That is, the scientists studying mental diseases probably want a better/more specific way to measure brain activity, because most of their mechanistic hypotheses revolve around brain function. In this case, they've been told that there's a new way to measure gut microbe populations, and the cool part is the technique produces _so much_ data from a single sample. Somethings gotta correlate!

Now I don't actually think the gut microbiome is just an automatic p-hacker - most studies are measuring pretty standard aggregate measurements of "diversity", not just finding one class of the billions of bacteria that happens to correlate, so I'd agree with the OP that the question is more one of causality. And since a fecal transplant from an ill mouse caused signs of illness in an otherwise healthy mouse, then there's reason to follow up.

<comment><USER15> I think it's a chicken-egg problem, so we are likely to not find agreement.

Sure, sometimes you have a hypothesis and you go searching for a way to measure something.

Other times, you find a new way of looking at things, or you come across some new fascinating data. This helps you generate hypotheses for which you need to design new studies, not least of which is to ensure that the new measuring tool is measuring what you think it is.

I definitely agree with the sentiment that the product of research such as this shouldn't be policy or a change in world view. It should be hypothesis generation and new testing.

</comment></comment></comment></comment><comment><USER17> Most of these types of correlations turn out to be nothing. Don't get your hopes up.

If a study shows A and B are correlated, it could be any of:

1\. A causes B. 2\. B causes A. 3\. They are both caused by a third factor C. 4\. Random chance. 5\. Bad experimental design. Science is hard. 6\. Fraud. 7\. Probably other things I can't think of right now.

As far as I know, the gut microbiome is most directly affected by what you eat. Do schizophrenics have different eating habits than non-schizophrenics?

<comment><USER18> Would you believe that peoples' appetites could be affected by their microbiome?

Anyhow, it's perfectly reasonable that people suffering Schizoaffective disorders might have different interactions with common foods that are considered tolerable by "most people".

</comment></comment><comment><USER19> I have no trouble at all accepting this. Our gut is loaded with neurons. To imagine this, consider that when you are feeling happy, they said its like "butterflies in the stomach". Now consider a situation when someone cannot feel this due to fucked up gut. That on situations when you are supposed to feel happy, you are attacked by anxiety instead, which are also a distinct sensation in the gut. Your life will become a nightmare. I've been there myself, thankfully my gut is good now.

On the flip side, there are people out there with super gut, that feel happy no matter what life throws at them. Just a dose of optimism to lighten up the mood.

<comment><USER20> > I have no trouble at all accepting this

That's not how science works. If something is proven and reproducible via the scientific method, it must work(used to make verifiable predictions) whether you accept it or not.

Let's never forget [https://en.wikipedia.org/wiki/Diederik_Stapel](https://en.wikipedia.org/wiki/Diederik_Stapel) . His M.O. was to fabricate results that would be easy for his peers to accept.

And if we take into account all the dangerous pseudo-scientific hype around the gut(leaky gut, cleansings, etc) we should be twice as careful.

<comment><USER19> Understood and agreed. This is more apt a reminder in a thread about schizophrenia too.

</comment></comment></comment><comment><USER21> I predict that over the next decade or so we're going to find that almost every medical issue has some microbiome component, just like pretty much everything has some level of genetic risk factor. The human body is too interconnected to expect anything else. I just don't want people to throw out the baby with the microbiome-quackery bathwater that's coming as well.

<comment><USER2> absolutely. I would hope people don't now start doing fecal transplants for treating depression, or Alzheimers, or schizophrenia. These results, interesting though they may be, are not a cure; they may not even be diagnostic.

But clearly, diet, the gut microbiome, the immune system, at the very least, are linked, and linked tightly. So it would not be surprising at all, that there's a microbiome component. But we don't know what it is; how it affects the underlying disorder, and how to approach it for treatment as of now.

And as you alluded to with "genetic risk factor"; its well possible that though there is a component of the microbiome involved in the disease; it may not be significant enough to act as a vector for treatment. Or that it is just a comorbidity. We just don't know!

<comment><USER22> >I would hope people don't now start doing fecal transplants for treating depression, or Alzheimers, or schizophrenia.

Why not? That would be a fast way to find out if it works.

<comment><USER23> Because if they keep eating a poor diet that encourages an unhealthy biome, they're going to defeat the point of a fecal transplant.

<comment><USER2> And you don't know what downsides fecal transplants may have. There's clear preliminary evidence that gut microbiomes can drive obesity. Imagine giving someone who is not obese / diabetic a fecal transplant to treat depression.

That doesn't work (the treating depression part), but suddenly, this person becomes more susceptible to obesity / develops diabetes.

These things must not be rushed into!

<comment><USER24> I'm not sure if you're alluding to this, but it's supposedly already happened.

[https://academic.oup.com/ofid/article/2/1/ofv004/1461242](https://academic.oup.com/ofid/article/2/1/ofv004/1461242)

<comment><USER2> Damn. Thanks for the link. I was just speculating..

I don't think the authors are drawing a casual effect here; in effect, this is scientific anecdata: hey, we tried this and this happened. We think you should know.

I think it's great they published the result, even if the n=1.

Assuming this is due to the fecal transplant, it just goes to show, we are messing with a major functional system in the body. And we should tread very very carefully. Scary..

</comment></comment></comment></comment></comment></comment></comment><comment> rv-de The most direct connection between Schizophrenia and the gut is the neurotransmitter Serotonin. Which plays a central role in the mechanics of the disease as well as in the bowels. This is by the way also the reason why consumption of psychedelics (which are mostly binding to the serotonin 2a receptor) will usually cause bowel irritations from flatulences to nausea.

</comment><comment><USER25> We basically have a huge bioreactor in our stomach. Surely it is possible to introduce some gene into the collection of bacteria there that could cause the production of metabolites that are destabilizing to mental health.

</comment><comment><USER26> Would be curious to see if some kind of gut bacteria intervention could ameliorate symptoms.

<comment><USER27> Even if correlation doesn't imply causation maybe there's that link in this case as they have done a controlled experiment. They seem to just have stopped short of claiming that schizophrenia is caused by a bacterial gut infection. I wonder why they didn't claim that?

<comment><USER28> Probably because it's only a comorbidity. We seem to want easy answers to all these question but the reality is that humans are complex organisms. Having one issue (i.e. an infection) without another (i.e. some specific genetic corruption) will not result in the individual developing a disease however the combination of 2 or more factors results in the development of a disease.

</comment></comment></comment><comment><USER29> One nice experiment showed the big difference biota make may be choline absorption. [https://medium.com/@russjj/choline-is-it-the-key-to- modern-i...](https://medium.com/@russjj/choline-is-it-the-key-to-modern- illnesses-5da8f831a04b)

</comment><comment><USER30> Blood Music [https://en.wikipedia.org/wiki/Blood_Music_(novel)](https://en.wikipedia.org/wiki/Blood_Music_\(novel\))

<comment><USER31> I second this. Great book. One of my faves.

</comment></comment><comment><USER5> I know this is dangerous close to the nature /nurture no-man's land but my own pet theory is that schizophrenia is a loop deformation. Every habitat swings, as in the circumstances are unstable going from a plenty of food to no food, zero disease to plague, nil predation to over predation. All this happens in evolutionary short time, meaning it should be invisible to the blind and deaf process that stupidly adapts to whatever is not worst enough for the circumstances. I found that schizophrenia beeing one of these specializations to a swinging habitat, as a theory, had a lot of explanationary power. Unfortunately it has sad implications. If you are adapted to circumstances, it makes only sence to prolong these circumstances. If the habitat swings back, the dormant version will lie in wait looking for epi genetic triggers, that allow this loop adaption to pre-emptive return and attempt to spread displacing other loop adaption. I do not know if a discussion on this can remain civilised.

</comment><comment><USER32> Anyone interested in a theory of schizophrenia that actually explains the logic behind these behavior patterns would do well to learn about Bateson's "double bind" formulation.

Dr. Stanislav Grof's essay "Mind, Nature and Consciousness" provides a very lucid introduction to this theory ([http://www.stanislavgrof.com/wp- content/uploads/pdf/Gregory_...](http://www.stanislavgrof.com/wp- content/uploads/pdf/Gregory_Bateson.pdf)):

"The basic idea of Gregory Bateson's theory of schizophrenia is that this disorder basically represents a breakdown of metacommunication [messages about messages, indicating how the communication should be understood, i.e. a wink to indicate that this is a joke, /s for sarcasm, etc]. Psychogenetically, this problem can than be traced to a specific disturbance in the communication between the mother and the future schizophrenic which involves what he called a "double bind."

The basic characteristics of this situation are the following:

1\. The child is in a relationship of vital dependency, where it is critical to identify correctly the communication from the mother.

2\. He or she is receiving from the mother messages which are contradictory, since the qualifying metacommunication denies the verbal content or is otherwise incompatible with it.

3\. The child does not have the opportunity to ask questions to clarify the communication.

4\. The child cannot leave the field. Under these circumstances, he or she is forced to distort his or her perception of the outer world and of the inner feelings, and is incapable to develop meta-communicational skills.

Gregory's favorite example was a situation in which a mother, annoyed by a child who is active and noisy, tries to get rid of him by saying: "Darling, it is very late and you must be terribly tired; mommy will put you to bed. You know I mean well for you." The message misrepresents the truth about the matter. It says "you are tired and need to sleep" instead of "I really need some space for myself." Messages and situations of this type force the child to deny or disregard his or her inner clues and accept what the mother is saying.

Metacommunication is extremely important in human communication and individuals who do not master it tend to have great interpersonal difficulties. Metacommunicationally inept persons who are incapable to read subtle signals, understand jokes, and decode hidden meanings become easily victims and scapegoats of their peers. There has been much discussion, whether this mechanism is sufficient to explain serious psychopathology encountered in schizophrenic patients. Gregory Bateson himself believed that much of schizophrenic symptomatology can be understood as a total breakdown of metacommunication."

<comment><USER33> This theory is total bunk. It is widely considered to be discredited and a great example of fanciful psychological theory with no scientific backing.

I mean, if this theory was true, you would expect to find schizophrenic families--after all, they all had the same mother. It also doesn't line up with the timing of onset at all.

<comment><USER34> Do you have a citation for wide discreditation? Wikipedia is more circumspect

> Bateson's double bind theory was never followed up by research into whether > family systems imposing systematic double binds might be a cause of > schizophrenia. This complex theory has been only partly tested, and there > are gaps in the current psychological and experimental evidence required to > establish causation [citation?]. The current understanding of schizophrenia > emphasizes the robust scientific evidence for a genetic predisposition to > the disorder, with psychosocial stressors, including dysfunctional family > interaction patterns, as secondary causative factors in some instances.

[https://en.wikipedia.org/wiki/Double_bind#Schizophrenia](https://en.wikipedia.org/wiki/Double_bind#Schizophrenia)

(Which makes me wonder: if the predisposition is genetic, why don't we have schizophrenic families? After all, they have the same genes!)

<comment><USER35> I think it's highly unlikely that there is any meaningful causal link between a particular parenting style and Schizophrenia.

We currently have a very robust physiological understanding of the disorder, and the symptomatology is linked to observable structural changes in the brains of Schizophrenic individuals.

As with many psychological disorders, there appears to be a stress component: i.e. individuals may be more or less predisposed to the disorder, and therefore some individuals will only ever experience symptoms if triggered by a high level of stress, while for others it's unavoidable.

So in some cases, yes it's possible that a problematic family life was the stressor that pushed them over the edge to develop full-blown Schizophrenia, but that person might have equally been effected by being mugged at gunpoint, or going through prolonged sleep deprivation during basic training in the military.

The causal mechanism is almost certainly an interaction with Cortisol or other stress hormones, or some other well understood biological pathway. It's outdated pseudoscience at this point to take seriously the idea that Schizophrenia is the result of mixed messages during childhood.

<comment><USER4> > We currently have a very robust physiological understanding of the disorder, > and the symptomatology is linked to observable structural changes in the > brains of Schizophrenic individuals.

While I agree overall with your point, I think your wording emphasizes a common but mistaken view that psychological experience can't induce physiological changes in the brain. This is obviously false.

<comment><USER35> Yeah I absolutely agree that there is a feedback loop by which neural activity actually shapes physiology. But there's also a degree to which psychological disorders are contributed to by errant thought patters, verses being the result of a functional problem with the brain as an organ. For example, with some forms of depression cognitive behavioral therapy (changing your thought patterns about certain things) can be very effective, while in the case of serious bipolar disorder, medication may be the only way to mitigate manic episodes.

For lack of a better analogy, there's a degree to which different disorders are the result of a software problem or a hardware problem, and all the evidence points to Schitzophrenia as being firmly toward that hardware end of the spectrum.

<comment><USER4> I again agree with everything you've said, but to tie this all back to the article and the microbiome, while the body does have discrete, specialised organs, we have to recognise that they are leaky abstractions.

Microbiota could influence psychology and thus physiology, or it could directly affect physiology and thus psychology. The fact fecal transplants triggered schizophrenic behaviours in mice shows there's some direct connection here that needs explanation.

<comment><USER36> > The fact fecal transplants triggered schizophrenic behaviours in mice

What are schizophrenic behviours in mice?

<comment><USER4> They discuss this in the article and the linked study which did the transplants. You're best off consulting those.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER37> This is fascinating. I've wrestled with anxiety and depression my whole life. It seems quite intuitive to me that there is a gut link. I frequently experience "butterflies' in my stomach. I frequently have gas, too. I wonder if I could participate in a study? I'd be happy to.

</comment><comment><USER38> As someone with both IBS and anxiety, this is slightly scary

<comment><USER39> I have suspected IBS and suspected Borderline (diagnosed MDD and Anxiety) and I swear to god my stomach health is related to my mental health. Correlated, perhaps, but there's definitely some sort of relation based on my experience.

ps; probiotic yogurt makes me very happy

<comment><USER38> Same with the yogurt; I'm actually planning to start taking probiotic supplements to simplify that aspect, as well as a fiber source called phylum husk.

Sorry to hear about the Borderline. Just remember that mental health diagnoses are less rigid than traditional medical diagnoses. You've heard of mind over matter; mind over mind is even more effective.

<comment><USER40> I take a fibre powder I make myself, but there are premixed versions:

Rice bran, oat bran, psyllium husk, ground linseed, and slippery elm powder.

Typically equal proportions, but it varies depending on how much of what I've got left when it goes in to the mixing bowl.

I also regularly buy not continuously take a priobiotic and / or Greek style unsweetened yogurt.

Lots of Vitamin D. I also need to supplement essential fatty acids or my skin tears at the edges of my nails.

Plus running and lifting heavy things. Also dogs. My dogs are well trained, they know our routines, and they make me laugh out load a lot!

</comment></comment></comment></comment><comment><USER41> There is something called gut-brain axis that does not seem to be mentioned here. It is a relatively new discovery. But this finding, gut-schzophrenia, is not something surprising at all. Gut-brain axis is such an important part of our biology that it's probably connected to everything in one sense or another. Schzophrenia, depression, our psychological health, you name it.

</comment><comment><USER42> C4 gene led to a greater risk of developing schizophrenia [https://www.economist.com/science-and- technology/2016/01/30/...](https://www.economist.com/science-and- technology/2016/01/30/brain-gains)

</comment><comment><USER43> I'm genuinely curious what yogurt might do to someone with schizophrenia. I also wonder what their dairy consumption looks like and their diet to see if there's relations.

There's also genetic relations with schizophrenia. I've always wondered if these had to do with nature or nurture. Often studies simply say they check a person's mental health background. Is it really genetic? Perhaps it could also be what gets taught and passed down to us or the home we live in.

Perhaps the mental illnesses that our society experiences is nothing more than poorly regulated drinking water, mold in the walls, a bad diet, Mom's spaghetti, or spices that don't agree with us.

I find this research very interesting. The bacteria change could be a side effect of something but since the bacteria is atypical, it leads to a very interesting question: How did it get there?

What foods carry this bacteria? Does this bacteria kill other healthy bacteria? Does it serve a purpose?

I'm not a biology specialist, but I would love to know if nutrition is related.

<comment><USER44> I'm guessing it's an interaction between your genetics and how you react to food. Just like how some people are more prone to diabetes or don't every really get fat and don't manage their diets consciously.

<comment><USER19> Are you implying that people who dont really get fat, who dont manage their diet consciously, are more prone to diabetes? I never heard of this...

<comment><USER35> I think they were giving the example that given the same diet, one person might develop diabetes while another would maintain a healthy weight due to predisposing genetic factors.

But actually it _does_ seem to be the case that the ability to put on fat is in some ways protective against diabetes. In other words, people that easily store calories as fat don't have the metabolic problems associated with diabetes, since their body is able to effectively store any extra calories they take in. Diabetes develops in individuals who are not effective at converting excess sugar in their blood stream into fat, so instead they suffer metabolic damage. That's not to say that they _don 't_ put on fat, but if you see someone who has an enormous amount of excess fat, they are likely to have a much higher threshold before they develop the disease.

<comment><USER19> good to know, since i can.not put fat no matter how hard i tried (admittedly not very hard).

</comment></comment></comment></comment></comment><comment><USER14> So Schizophrinia should be curable by clearing the gut bacteria? Sounds like something we already would have known if it was the case. Don't strong antibiotics clear the gut? And isn't the microbiome changed within days of traveling to a new country?

<comment><USER45> A gut cleared of bacteria is not a healthy one. The microbes are necessary, and the genetic makeup and relative populations of microbes have some powerful consequences for a person's health. Fecal transplants are an effective treatment for a number of things.

<comment><USER3> ..."if those things are gut related illnesses "

Finished your sentence.

<comment><USER45> You're right, of course it is limited to gut-related things.

</comment></comment></comment></comment><comment><USER46> And mainstream people still think the idea of high fructose corn syrup, gluten, etc. affecting mental capability is just people being OCD...

</comment><comment><USER47> One thing that is fascinating is that the Danes are supposedly the happiest people on earth. I wonder what their microbiomes are?

</comment><comment><USER48> This is only tangentially related but has anyone here read the book 'The Fiber Menace', and if so, what are your thoughts?

</comment><comment><USER49> Is there a link between gut bacteria and diet?

<comment><USER50> _Is there a link between gut bacteria and diet?_

Yes. There are lots of articles (based on studies) on this. For example:

[https://www.bing.com/search?q=diet+gut+microbiome+tribal+stu...](https://www.bing.com/search?q=diet+gut+microbiome+tribal+study&qs=n&form=QBRE&scope=web&pc=EMMX20&sp=-1&pq=diet+gut+microbiome+tribal+study&sc=0-32&sk=&cvid=121BA76B8F444CF89307D3C33612C623)

</comment></comment><comment><USER51> For those who haven't already read this book Alanna Collen's Book is a good start on the significance of microbes for human health [1] [https://www.amazon.com/10-Human-Microbes-Health- Happiness/dp...](https://www.amazon.com/10-Human-Microbes-Health- Happiness/dp/0062345990)

</comment><comment><USER52> The next possible conclusion can be that antibiotics cause schizophrenia.

<comment><USER53> I fear the incoming online information war between everyone and anti- antibioxxers.

<comment><USER18> Anti-antibioxxers? Have you been reading quackwatch on the wayback machine again?

</comment></comment></comment><comment><USER54> Wasn't schizophrenia fairly recently attributed to an off-by-one error in the brain while deleting old brain cells, taking more than necessary, essentially a natural algorithm gone wrong?

<comment><USER55> It's a long-studied and complicated condition, I don't think we're anywhere near having such a concise explanation of its causes yet (etiology). There are many competing theories each with different levels of support. There is also reason to believe that schizophrenia is multiple disorders that are currently lumped into the same category because we're not good at differentiating them (similar to the way different types of cancer are lumped under the label "cancer").

Trust the science, but don't trust the science reporting.

<comment><USER54> I was talking about this (pruning of synapses):

[https://www.sciencedaily.com/releases/2019/02/190204114612.h...](https://www.sciencedaily.com/releases/2019/02/190204114612.htm)

This study pointed out 90+ days of taking minocycline/doxycycline during adolescence "had a significantly reduced risk of a subsequent psychotic disorder diagnosis than did those receiving other antibiotics." \- from their 10-years sample of electronic records.

I had a suspicion that as you say "schizophrenia" might be an umbrella term for many distinct diseases with similar symptoms.

<comment><USER55> But, is that a symptom of schizophrenia? Does it cause other symptoms? Is it caused by other symptoms? Is it common to all forms of schizophrenia?

<comment><USER54> For me as a computer scientist with interest in medicine (using Deep Learning to beat humans in detecting diseases), this was a cool finding pointing to a possible algorithmic reason behind schizophrenia. Now it might be just a small part of the puzzle, intertwined with other mechanisms we don't understand with overly complex interactions, not mentioning it likely misses other, completely different diagnoses sharing the same label.

So yes, your questions are perfectly adequate, though for me personally that finding is exciting, as I can potentially apply supercomputing on that problem.

</comment></comment></comment></comment></comment><comment><USER56> The comments on the website are a good laugh.

</comment><comment><USER57> I don't see how that could be possible, unless it is a transmissable disease that infects the brain.

</comment><comment><USER58> And if it's not the microbiome it's probably something to do with quantum entanglement.

</comment><comment><USER59> I knew it! The CIA really _has been_ fiddling with my guts when I sleep! Just wait until the aliens in my teeth hear about this.</comment>


Update on Go 1.1 crypto performance - <AUTHOR> http://blog.jgc.org/2013/04/update-on-go-11-crypto-performance.html <comment><USER2> Not really relevant for hashes, but Go also has native implementation of selected ciphers (eg. AES). Are those implementations constant-time? If not then they are vulnerable to timing attacks. People have put a lot effort into making OpenSSL ciphers constant-time. This effort was pushed by people working at Google. This guy works at Google and regularly posts about crypto stuff they are working on: <http://www.imperialviolet.org/>.

<comment><AUTHOR> The blog you link to belongs to Adam Langley who works on Go's crypto stuff (he's user agl here). Go has a rather nice crypto/subtle package that contains constant-time implementations of primitives.

<http://golang.org/pkg/crypto/subtle/>

<comment><USER3> Adam doesn't just work on the Go crypto packages. He is almost solely responsible for writing them.

<comment><AUTHOR> I was channelling Rob Pike when he described Ken Thompson as someone who had "done some Unix stuff".

<comment><USER3> I'm sure Adam would appreciate the understatement, but IMO he deserves more kudos than I can possibly give. :-)

</comment></comment></comment></comment></comment><comment><USER4> This post should be called "Go 1.1 _old broken_ crypto performance" ;-) If you're designing a new system, there's no sane reason to use MD5, SHA1, or RC4. These performance improvements, though, are good for the native TLS implementation.

There are some small improvements to SHA-2, though, in Go 1.1.

<comment><USER5> > This post should be called "Go 1.1 old broken crypto performance" ;-) If > you're designing a new system, there's no sane reason to use MD5, SHA1, or > RC4.*

I think your post is being downvoted because it seems to conflate _cryptographic primitives_ with _tools that you can use without modification to safely store a password_.

<comment><USER4> I ported scrypt to Go ([https://code.google.com/p/go/source/browse/scrypt/scrypt.go?...](https://code.google.com/p/go/source/browse/scrypt/scrypt.go?repo=crypto)), so I know how to store passwords ;-)

This has nothing to do with passwords. You can read about brokenness of RC4, MD5, or SHA1 in their respective Wikipedia articles.

<comment><USER5> First, thanks for your contribution. Second, I didn't downvote you. Third, the question was never whether you knew how to store a password. There are many reasons to need to be able to use even 'broken' primitives (esp. for compatibility with legacy apps or conversion), which makes them valuable (or at least necessary) for some apps. This is why I was guessing that your post was focused on passwords.

<comment><USER4> I understand. I also said that there's no reason to use them for _new_ systems.

BTW, suggested reading: <http://cr.yp.to/talks.html#2013.03.12> ("Failures of secret-key cryptography").

<comment><USER5> Gulp. You did; I missed it! My apologies.

And thanks for that link. Slide 313 is terrifying.

</comment></comment></comment></comment></comment></comment><comment><USER6> What did the Go team change to do this? Compiler optimizations or code changes? SIMD instructions?

<comment><AUTHOR> AMD64 and 386 assembly implementations. My blog post links to the actual changes.

<comment><USER7> Oh, I assumed some of it was from the GC/scheduler work, or mostly just the asm impls?

<comment><USER4> While not related to these ASM implementations, the code generator for Go code has also been improved: e.g. it now can generate rotatation instructions, which helps SHA-2 and some other crypto primitives.

<comment><USER8> Yup that's absolutely essential for most block ciphers and similar crypto (i.e. hash functions).

</comment></comment></comment></comment></comment><comment><USER9> My understanding is that all three of these algorithms MD5, SHA1, and RC4 are inherently difficult to parallelize. The result cannot be computed by splitting the input, processing the pieces separately, and then combining the results. So they would not get the benefit of using "goroutines" rather than threads, a benefit which is important to the performance of many Go programs.

<comment><USER3> Goroutines are not primarily about performance, they are for modelling concurrent processes in a natural way. This can have a performance in some cases, but I wouldn't classify goroutines the way you have.

<comment><USER10> Excuse my ignorance, but could you use goroutines with different algorithms and pick the one that finishes first? Perhaps not in the case of MD5/SHA1, but for problems that have some algorithms that are very fast most of the time, but have a pathological worst case?

<comment><USER11> Go has no way to abort a goroutine so if you tried multiple algorithms you would use total CPU time for all algorithms. Unlike actual threads Go gives no assurance that goroutines are preemptively scheduled, so doing so might take worst case time anyway. Even worse, there is no guarantee that new goroutines run next so doing so could introduce a scheduling delay.

So basically it would be a terrible idea to do this in Go. With C/pthreads it might have some use in some really exceptional case.

These are all reasons of course why goroutines are a bad idea. They should have just used threads, but apparently they wanted to support 32-bit architectures or some archaic OSes where threads have a high unit cost.

<comment><USER3> Gccgo did use threads for each goroutine for a while, and it was significantly slower than the gc "green thread" style implementation (used by both compilers today). Goroutines weigh in at about 4k each. OS threads are 64k minimum. That allows more than an order of magnitude more goroutines than threads, from a memory perspective. From an execution standpoint, goroutines managed by the Go runtime allow some nice scheduling optimisations, as the runtime is aware of the communication between goroutines. (some of these optimisations are in Go 1.1)

Finally, there is no reason goroutines can't be preemptively scheduled. It is just an implementation detail, and work has already begun on this front.

<comment><USER12> Gccgo didn't have a garbage collector for a while, around the same time it was using threads. Was it even using a pool? Did it run goroutines for a short time on the current thread before moving to its own thread? Certainly not.

Thread overhead in Linux is 8k, only slightly more than goroutine. It's 24k for windows. You guys don't even know basic facts that should have guided the design.

<comment><USER3> Really? Can a Linux process spawn 1m threads?

I didn't work on the design. If I made a mistake that's my fault. The people that did design Go and implement the runtime know what they're doing. You didn't respond to my other points, either.

<comment><USER12> Yes a Linux process can spawn 1m threads, and testlimit64.exe spawned 250k threads both with 64k user stack and 1 MiB user stack... because that is just reserved address space if it isn't actually used. Only the kernel overhead matters to how many threads.

I'm not sure what point you want addressed... scheduling optimization? It's also a deoptimization in other ways, such as predictable latency and fairness.

I agree the designers knew what they were doing: designing a 'modern' language for 32-bit computers. The question is why?

<comment><USER3> Even given that what you say is true, these are all implementation details and have nothing to do with the design of the language.

<comment><USER12> An implementation is what you have to use, you can't use 'the language design'. When you have to use a special build system to generate Go -and- C stubs to call out, can't use a standard linker or partial compilation or shared libraries, have a massively large exe, can't embed in other programs (Go has to be 'main'), can't use with SELinux, has huge unpredictable latency spikes, etc it'll be cold comfort that those problems are 'just implementation details'.

It's too bad they had NIH or thought 32-bit was the future and didn't stop at just creating a language.

<comment><USER13> I don't understand any of your criticisms. What else would you expect to use to compile Go besides "a special build system"? A not-special build system? It's a compiled language. You can, however, use gccgo to link Go code with C/C++ code.

Both gccgo and cgo already use partial compilation. You can invoke the 6l, 8l, etc. commands directly if you really want to. One of the design goals was build speed. Shared libraries are on the roadmap. See issue <https://code.google.com/p/go/issues/detail?id=256>.

Go does _not_ "have to be main". You can use gccgo to mix Go code into your existing C or C++ binary. See <http://golang.org/doc/install/gccgo>

What the hell does "can't use with SELinux" mean? Are you talking about issue 871 that was fixed in 2010?

You keep repeating over and over that Go is optimized for 32-bit systems. Repeating something doesn't make it true. In fact, exactly the opposite is true, however. Go uses a lot of address space, which is great on 64 bit, not so good on 32-bit. This has been discussed a lot years ago: <http://lwn.net/Articles/428100/> is a good place to start.

I've seen you repeat over and over in multiple discussion threads that having lots of kernel threads is no big deal. What you don't seem to realize is that in C/C++, thread overhead is somewhere between 1 MB and 2 MB a thread if you want to use pthreads and glibc and avoid random data corruption resulting from thread heap collisions (hint: you do). Linux also doesn't have an O(1) scheduler any more in mainline; it uses the completely fair scheduler (CFS), which has complexity O(log N). There are disadvantages to green threads, but to even start discussing this requires a lot more background than you have.

Again, you can read about any of this on wikipedia, LWN.net, or even the replies that inevitably get made to all of your posts on HN. So learn already.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


Ask HN: Is scraping webpages for research purposes considered legal - <AUTHOR> <comment><USER2> Depends on a country. And in practice on how much money the people behind the website can throw at the lawyers when annoyed.

For the US you may want to read about [https://en.wikipedia.org/wiki/Aaron_Swartz](https://en.wikipedia.org/wiki/Aaron_Swartz)

<comment><USER3> Also depends on the ToS of each page, and their robots.txt should allow or disallow crawling

</comment></comment><comment><USER4> If it matters pay a lawyer for a legal opinion. If it doesn't matter, it doesn't matter. Good luck.</comment>


Sun Microsystems' Pioneering Co-Founder Gives A Rare Interview - <AUTHOR> http://mixergy.com/scott-mcnealy-sun-interview/ <comment><USER2> The interesting takeaway I took from this which I loved was his gorilla marketing strategy.

Basically it goes like this, attack your competitors, wind them up in the press as a form of advertising. This creates enormous attention for nothing (people actually read editorial and skip the ads) and often you need an adversary to make something newsworthy.

Be ethical but let the industry know there is battle on and you're fighting for your life, but fight on safe ground!

This is the method I personally used with some success in my former business which was also an electronic hardware, design and manufacturing company. With very little funds for marketing I had to be creative, we made impressive DPS adverts and coupled these with side stories which were often gossip over industry turf wars or other antics I would get up too.

<comment><USER3> I'm still unclear on what this has to do with gorillas.

</comment></comment><comment><USER4> Amazing! Serious props to Andrew Warner for setting this up. Going to watch it as soon as I get a chance.

</comment><comment><USER5> It's a shame that most of this interview was derailed into a political conversation.

<comment><USER2> not really as someone who's been in the ring, the same points resonated with me. The experience you are left with is that which will shape your world view and future actions.</comment></comment>


TLA+ - <AUTHOR> https://en.wikipedia.org/wiki/TLA%2B <comment><USER2> Here is my experience getting started with TLA+ and using it in my distributed systems class.

[http://muratbuffalo.blogspot.com/2014/08/using-tla-for- teach...](http://muratbuffalo.blogspot.com/2014/08/using-tla-for-teaching- distributed.html)

[http://muratbuffalo.blogspot.com/2015/01/my-experience- with-...](http://muratbuffalo.blogspot.com/2015/01/my-experience-with-using- tla-in.html)

</comment><comment><USER3> Intel has had good results with formal methods. This is pretty important to all of the rest of us.

Here are some slightly dated references to slides on the topic:

[http://www.cl.cam.ac.uk/~jrh13/slides/nasa-14apr10/slides.pd...](http://www.cl.cam.ac.uk/~jrh13/slides/nasa-14apr10/slides.pdf)

[http://www.cl.cam.ac.uk/~jrh13/slides/kieburtz-05dec03/slide...](http://www.cl.cam.ac.uk/~jrh13/slides/kieburtz-05dec03/slides.pdf)

<comment><USER4> Intel's work is great. The hardware industry in general is light-years ahead of software industry on applied formal methods. The reason is straightforward: bad circuits can't be fixed with an update. That recall made Intel and others look at the balance sheet a second time with nice results. :)

And thanks for the links1

</comment></comment><comment><USER5> Amazon have used it to verify algorithms in several of the core distributed systems they run apparently. There was an article in the communications of the ACM recently about it, can't remember the reference offhand.

<comment><AUTHOR> "How Amazon Web Services Uses Formal Methods" [http://cacm.acm.org/magazines/2015/4/184701-how-amazon- web-s...](http://cacm.acm.org/magazines/2015/4/184701-how-amazon-web-services- uses-formal-methods/fulltext)

</comment></comment><comment><USER6> I remember this from a Leslie Lamport talk posted also on HN a few months ago. Is anyone using this for specifications, prototyping or anything in between in real life?

<comment><USER7> At Machine Zone, we've been using formal methods to specify and verify systems we have in development. This is something we've only been doing in the last 6-9 months though.

<comment><AUTHOR> Fascinating! I'd love to read a blog post or white paper on this.

It does seem like online gaming companies are at the forefront of distributed systems implementation. See League of Legends' use of conflict-free replicated data types, for example: [http://highscalability.com/blog/2014/10/13/how- league-of-leg...](http://highscalability.com/blog/2014/10/13/how-league-of- legends-scaled-chat-to-70-million-players-it-t.html)

</comment></comment></comment><comment><USER8> I saw the TLA+ talk [1] recently and was surprised there was no discussion of code-generation.

Once you've spent a significant effort in writing and verifying a formal spec for a program, there should be an automated mapping between it and the implementation, or at least a template of such implementation.

[1]: [https://www.youtube.com/watch?v=-4Yp3j_jk8Q](https://www.youtube.com/watch?v=-4Yp3j_jk8Q)

<comment><AUTHOR> There is a difference between formal specification and formal verification. Formal specification is what we have with TLA+: you create a high-level description of your system, to which you apply software tools to check the design. It's like blueprints for software.

Formal verification deals with proving that the actual code you write implements a formal specification. This is a much, much harder problem. Usually, it involves cajoling a theorem prover by adding lots of annotations to your code. There's been some impressive work with the Ironclad project from MSR[1] which brought this down to ~5 lines of annotation per single line of implementation code - within striking distance of unit testing! Still, probably a decade or more away from widespread use.

Formal verification isn't quite what you meant, though. You were talking about code generation. For general systems specified by TLA+, this isn't going to be useful unless you write in a very idiomatic way; in which case TLA+ is just a very high-level programming language. However, code generation _is_ implemented in some specification languages that deal with very specific areas of system design. I'm thinking primarily of the P language[2], which is used to specify & check state machines and includes code generation capabilities for C++ and C#.

[1] [https://www.usenix.org/conference/osdi14/technical- sessions/...](https://www.usenix.org/conference/osdi14/technical- sessions/presentation/hawblitzel)

[2] [http://research.microsoft.com/apps/pubs/default.aspx?id=1771...](http://research.microsoft.com/apps/pubs/default.aspx?id=177118)</comment></comment>


Samuel Morland, Magister Mechanicorum (2017) - <AUTHOR> https://www.headstuff.org/culture/history/terrible-people-from-history/samuel-morland-magister-mechanicorum/ <comment><AUTHOR> I saw this link on Reddit and was interested because I already knew a little bit about Morland.

He was an early inventor - he designed some mechanical calculators, which is where I first learned about him.

[https://history- computer.com/MechanicalCalculators/Pioneers/...](https://history- computer.com/MechanicalCalculators/Pioneers/Morland.html)

[https://history-computer.com/People/MorlandBio.html](https://history- computer.com/People/MorlandBio.html)

He's also involved in early mass surveillance. On of the reasons Britain set up a state postal service was to spy on communications.

[https://pasttenseblog.wordpress.com/2019/09/03/today-in- lond...](https://pasttenseblog.wordpress.com/2019/09/03/today-in-londons- surveillance-history-secret-apparatus-for-tampering-with-copying-forging- letters-in-the-interests-of-the-state-burned-in-the-great-fire-1666/)

I'm struck by this quote:

> Morland also recorded what he saw as the basic function of his devices and > of surveillance in general: "a skilful prince ought to make a watch tower of > his general post office… and there place such careful sentinels as that, by > their care and diligence, he may have a constant view of all that passes."

I haven't found much information about his machines (but I haven't looked particularly hard), so I have no idea how they worked. The reddit post has an answer that talks about sealing letters in the Spanish manner: [https://regencyredingote.wordpress.com/2012/11/16/sealing- wa...](https://regencyredingote.wordpress.com/2012/11/16/sealing-wax/)

> It was then that the superior qualities of the new "Spanish" wax came to be > highly valued. The basic formula of this new sealing compound was a blend of > shellac, mastic, turpentine, chalk or gypsum, and a coloring agent, to which > essential oils and/or fragrant balsams might be added to facilitate melting > and impart a pleasant fragrance. This "sealing wax" could be melted to a > thick viscous fluid which would readily and firmly adhere to the parchment > or paper on which it was placed. While warm, it would take a clear > impression of any seal that was pressed in to it. It would remain solid, > even in the heat of summer, and was flexible enough to remain intact while > affixed to the document on which it had been placed. However, it was > extremely difficult to remove a seal made of this material and replace it > after the contents of the sealed document had been read. This compound was > more brittle than beeswax so it could be easily broken, thus providing clear > evidence of tampering. Even if the seal could be removed unbroken, any > attempt to re-affix a seal was nearly impossible, since, with such a low > melting point, the image which had been impressed into it would loose its > crispness, if not melt completely, if additional hot wax was used to re- > attach it, yet another sign of tampering.</comment>


Introducing the Google Translate app for iPhone - <AUTHOR> http://googleblog.blogspot.com/2011/02/introducing-google-translate-app-for.html <comment><USER2> I find it insane that we've come to a point when speaking to a machine gives you the ability to translate what you just said to a different language immediately. Sure, the pieces were all out there already, but the combination of all of them in one package is non-trivial. We've come a long way.

Much like Louis C.K. would say about flying: "people complain about not having wifi on a plane, but they're flying through the air, sitting in a f*cking chair"

<comment><USER3> "You're sitting in a chair. IN THE SKY!" and paraphrasing... "Are you not amazed you're partaking in the miracle of human flight, you non-contibuting ZERO?"

</comment></comment><comment><USER4> This is ridiculously awesome. I have had a lot of fun hacking the google translate API before, but this wraps everything up in a sweet interface.

But it's too bad that Google is strapping everybody down to their services like this. The Google API shuts you down after too many requests per second. For this stuff to really take off what we need is this technology to be build right into the web browser, and have a JavaScript API for control over the translation and TTS engine.

</comment><comment><USER5> I think it's cool. I played with it for Android (not the voice input, but the text based input and the voice output). I was with a Russian and Turkish colleague (I speak American English). We found that the translation was pretty good--but that the speech synthesis was pretty bad for both Turkish and Russian. Has anyone checked it out for Chinese, Japanese, or Spanish?

<comment><USER6> I just tried it for Dutch, and it got one out of the ten 5-word sentences I tried, correct. Some sentences only got one word right, and I sure was articulating like they do on national television ;) They just got a much greater sample size for English, matter of time for the rest of the languages I hope.

<comment><USER7> "... and I sure was articulating like they do on national television" Not sure what they trained their algorithm on, but this articulation might have been the culprit. If they have a corpus of "normal people" speaking Dutch, and then you go and articulate, you will get poor results.

</comment></comment></comment><comment><USER8> So, you do realize that once you can fit something like this in your ear you have a bona-fide Star Trek universal translator.

<comment><USER9> Couple it with a tablet, load up wikipedia and you're ready to beam aboard any passing Vogon spaceship.

<comment><USER10> I'd recommend bringing a solar powered battery charger (who solar powered? because you can run it off nearly any light source, including artificial lighting, which is more likely than trying to find a source of electrical power that's compatible with your charger).

</comment></comment></comment><comment><USER11> The speak feature really would have came in handy when I was in China for the big earthquake in 2008. I thought I'd be ahead of the game and use g-translate to pre-save some fullscreen images of phrases I wanted to use while I was there. My favorite loss in translation moment was when I tried asking a Monk if I may please take his picture, only to find out I was asking him if I might take all of his personal pictures.

</comment><comment><USER12> My own experience with the app on Android would have me warn you that speech recognition is sub-par. English _generally_ works, but it is sketchy. Spanish didn't work with me; I thought maybe it was my non-native accent, yet it managed to fair worse when I had some native speakers try it. It couldn't catch even basic phrases no matter how many times tried.

</comment><comment><USER13> I find it amusing that google has an application that can translate from language to language yet when I call <insert big name company>'s automated system they cannot decipher what I am saying worth a damn.

<comment><USER14> If the Google system is anything like the Youtube auto-transcribe feature or the voicemail to text system, it can't really decipher what people are saying worth a damn either. ;)

</comment></comment><comment><USER15> Any idea if 'speak to translate' will be coming to the API? <http://code.google.com/apis/language/translate/overview.html>

</comment><comment><USER16> Well, I exhausted my knowledge of Korean phrases by trying the (phonetic) phrase "Anyong haseyo". I am as far from a native speaker as one can be.

I can't even describe how cool it was to see:

Hi 안녕하세요

</comment><comment><USER17> does this have the same functionality that the Android version had for a month or so? It is still pretty amazing.

</comment><comment><USER18> Google Translate app, please translate this for me to RoR:

"1,000,000 page views in 24 hours."

</comment><comment><USER19> The star, listen and fullscreen buttons look awfully small

</comment><comment><USER20> This is freaking awesome. Now all we need are sane roaming agreements between carriers so we can actually use our iphones overseas ..</comment>


Show HN: Blanking all Wikipedia as SOPA Protest Live Stats - <AUTHOR> http://hacksandthoughts.posterous.com/blanking-all-wikipedia-as-sopa-protest-live-s <comment><USER2> I was curious so I was reading over the comments, and I noticed that most people seem to back this with the caveat that it only be done in the United States since it's not an international affair. That was the major thing I took away from reading the comments (both support and non-support comments pointed this out).

</comment><comment><USER3> Bug report: on inner iframe <http://phonnel.com/projects/sopatally.php>: Uncaught SyntaxError: Unexpected token ) (line 23)

        data.setValue(3, 1, );

Edit: and we're back!

<comment><USER4> Yep, I'm seeing that too, and a blank chart.

<comment><USER5> Could you say what the results are roughly? I cannot see the graph either.

<comment><USER6> Support 55.7% + Strongly Support 30.3% = 86%

Oppose 9.9% + Strongly Oppose 4.1% = 14%

</comment></comment></comment></comment><comment><USER7> In case the creator is checking for comments here but not checking his own page: PHP errors, not currently working.

(But if you open the 4 URLs shown in the errors yourself, they do work fine and give you the count. Support is beating opposition by some margin right now.)

<comment><AUTHOR> Fixed it! Thanks for the feedback.

<comment><USER7> Not sure if I'm overlooking something or if you have a bug, but the numbers in your chart don't seem to match the numbers that Yahoo is returning. And, based on the previous PHP errors, it doesn't look like the problem is caused by caching.

Right now the numbers Yahoo are giving me are 9, 34, 177. 56 (strongly oppose, oppose, support, strongly support) and the numbers in your chart are 9, 24, 124, 58. (And when I say the numbers from Yahoo, they're taken straight from the URLs you created that were showing up in your PHP errors.)

edit: Interestly, both sets of numbers given an almost identical % for support vs oppose, 84.42% or 84.65% supporting. In terms of % for individuals (i.e. without grouping support and strongly support together) the %s come out with a much greater difference.

<comment><AUTHOR> Good observation but you are missing a little detail. "Strong Support" is a sub-set of "Support" because each "Strong Support" is also a match for "Support". I am doing this arithmetic in my PHP script: Support = Support - Strong Support

<comment><USER7> Oh of course, can't believe I didn't realise that after writing my "edit: interestingly.." - should have been obvious.

Incidentally just reloaded your page to see no graph, and the source showed:

            data.setValue(0, 0, 'Support');
            data.setValue(0, 1, -58);
            data.setValue(3, 0, 'Strongly Support');
            data.setValue(3, 1, 58);
            data.setValue(2, 0, 'Oppose');
            data.setValue(2, 1, 24);
            data.setValue(1, 0, 'Strongly Oppose');
            data.setValue(1, 1, 9);

</comment></comment></comment></comment></comment><comment><USER8> Feature request: Any chance of getting a graph to show support over time? Might be able to scan through the edit history to get the stuff you've already missed.

<comment><AUTHOR> I am now logging entries in a database for caching. So it would be possible to create a time-series. I don't see a purpose though!

<comment><USER8> I was thinking of linking particular events (post made by Jimbo, major news story) with features in the data, something like what Google Trends does. I always find that information interesting.

</comment></comment></comment><comment><USER9> Fatal error: Call to undefined function apc_fetch() in D:\Hosting\8254397\html\sopatally.php on line 4

So excited to see it too!

</comment><comment><USER10> > HTTP/1.0 500 999 This page is currently unavailable in > /home/content/r/a/n/rangeenchara/html/projects/sopatally.php on line 5

I'm no PHP guy, but looks like server's getting a 500 on your REST query. The query itself works nicely from my browser though:

<Edit: query string apparently gets munged here, can't paste it...>

<comment><AUTHOR> Sorry about that! It is back now though.

</comment></comment><comment><USER11> A fundamental misunderstanding of how decisions are made on the English Wikipedia.

<comment><USER12> The author of this particular straw poll is likely to know a bit more about the workings of the English Wikipedia than you do...

<comment><USER11> I was referring to this graph and the premise that it supports.

Also, Jimbo has very little to do with the running of the English Wikipedia. He stepped down as a leader of it because of how often his actions were sharply criticized by the community that he was out of touch with. Just because you co-founded something 10 years ago does not make you an expert on it.

<comment><USER7> The graph shows how many people support/oppose this concept. And finding that out was Jimmy's aim here. Not to make a decision based on the resulting figures.</comment></comment></comment></comment>


The 2,500-Person Tech Mixer That Was Not a Party - <AUTHOR> http://recode.net/2014/02/09/the-2500-person-tech-mixer-that-was-not-a-party/

<comment><USER2> "This is our fifth mixer. People are like, 'Andrew, what could be next?' And it's like, 'Oh. Done.' We have a mechanical bull. Game-changer. Innovate."

Oh dear. Quickly reminds me of Vanity Fair's Dave Morin interview: [http://www.vanityfair.com/culture/my-phone/2013/03/dave- mori...](http://www.vanityfair.com/culture/my-phone/2013/03/dave-morin-path- facebook-apple)

</comment><comment><USER3> > People are like, 'Andrew, what could be next?' And it's like, 'Oh. Done.' We > have a mechanical bull. Game-changer. Innovate.

> "We don't call it an after-party. We call it after-hours."

Waaaay too close to the Poe's Law line, I can't tell if this guy thinks this is for real or if he knows it's ridiculous and is just trying to cash in on demand.

</comment><comment><USER4> To whom is frequenting that scene: cross the Atlantic, come to any European country, settle a bit and then look back to that "not-party". Yes, you are looking at the very quintessence of bullshit. How could you not see that when you were in SF, you say? Well... Where to begin?

</comment><comment><USER5> Sounds like a rave with "tech" mixed in to get sponsors.

</comment><comment><USER6> San Francisco? Sounds about right.</comment>


The best accelerators for hardware startups - <AUTHOR> http://thenextweb.com/dd/2014/10/21/best-accelerators-hardware-startups/

<comment><USER2> Should building hardware be your next act of voluntary insanity, here are the people who can help you survive the asylum.

</comment><comment><USER3> Any idea what would the average startup profile be to get accepted in a hardware accelerator?</comment>


Cross-platform Rust rewrite of the GNU coreutils - <AUTHOR> https://github.com/uutils/coreutils <comment><USER3> Rust is a great choice for systems programming it'd seem. Esp considering that a well-tested, battle-hardened code-base like SQLite faces problems [1] solely due to the nature of the language its written in.

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

<comment><USER4> Not sure why you're being downvoted. I don't see why we shouldn't be moving to languages like Rust given the chance, as C makes it far more difficult to write safe and correct code.

<comment><USER5> I expect it's because because the first part is essentially preaching to the choir, and because Richard Hipp very much disagrees with the second part[0]

> Rewriting SQLite in Rust, or some other trendy "safe" language, would not > help. In fact it might hurt.

(see link for expansion on that matter, which is a question of tooling and testing)

[0] [http://blog.regehr.org/archives/1292#comment-18452](http://blog.regehr.org/archives/1292#comment-18452)

<comment><USER6> Disappointing to see Hipp make that argument. It's trivially refuted.

Yes, all programming languages allow the programmer to write bugs. But languages very much vary in _how many_ , and _what kinds_ of bugs programmers write _in practice_. Saying "well, Rust doesn't eliminate all bugs" is attacking a straw man. If you want to argue that Rust isn't worth it, you need to convince me that C plus gcov results in fewer bugs in the important areas _in practice_ than Rust (plus kcov [1] if you like) does. I think that's going to be pretty hard. (Especially if memory safety issues are the most important bug class you're concerned about: I think it's completely impossible for any C-based solution to compete with Rust here, regardless of how much tooling you add.)

Drawing an equivalence between undefined behavior and compiler bugs also doesn't make sense. Compiler bugs are _way way less commonly encountered_ than undefined behavior in C. Also, they're qualitatively different: compiler bugs get fixed in new compiler versions, while UB is by design and doesn't get fixed.

[1]: [https://users.rust-lang.org/t/tutorial-how-to-collect- test-c...](https://users.rust-lang.org/t/tutorial-how-to-collect-test- coverages-for-rust-project/650)

<comment><USER7> > If you want to argue that Rust isn't worth it, you need to convince me that > C plus gcov results in fewer bugs in the important areas in practice than > Rust (plus kcov [1] if you like) does.

I don't have a dog in this fight, but I don't see how the burden of proof is on Hipp rather than the folks proposing the change. In other words, shouldn't the "rewrite it in Rust" folks have to prove that the cost of their proposed rewrite will be justified?

<comment><USER8> Sure, the primary burden of proof is on those proposing a change. However, _any_ time you stand up and make an argument, the burden is on you to make sure it actually makes sense, and that goes for both sides.

<comment><USER9> This is getting a bit meta, but I disagree. It would be trivial to abuse in discussions.

        A: Bash would be way better for SQLite, really!
        B: But Bash is a terrible choice because X, Y, Z, ...
        A: If you make those arguments, you have to prove them.

<comment><USER10> "Bash would be terrible because using it would cause a fire"

Yes, arguments have a burden to make sense, and provide evidence...

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> > Many GNU, Linux and other utils are pretty awesome, and obviously some > effort has been spent in the past to port them to Windows. However, those > projects are either _old_ , abandoned, _hosted on CVS_ , written in > platform-specific C, etc.

I have seen such a paragraph in another projects README, IIRC a Go rewrite of standard utilities. I do not understand why a project would be obsolete because it's on CVS or is old. CVS is simpler than Git, albeit less capable. I, for one prefer it over Git for this reason, and others may do so too. Why would the end user care?

And why would we care about the age of a programme if it works?

Now, that said, the authors need not justify anything, they are free to do whatever they want, and I guess it's fun to code this stuff. I tried this just to play with Golang when it was 1.1.

And lastly, that Makefile is really a bunch of shell scripts, and some common environment variables. There is no real dependency tracking in it, and it is easier to maintain a bunch of shell scripts than a seriously ugly and complex Makefile like this. N.b. that when I say dependency tracking I mean dependencies among input and output files of processing commands, not tasks. I guess Cargo would know how to do that, and how to not build if the build artefact is already there. It's a useless use of make. And that makefile is very GNU-specific, not complying with a project whose purpose is to be cross- platform. Also, I guess, tho I'm really unfamiliar with Rust and Cargo, if that makefile was removed, maybe on Windows they'd be able to drop development dependencies on Cygwin or Msys.

<comment><USER12> I could see preferring svn to git because of the simpler model, but _cvs_? No thanks, a vcs without atomic commits is not much better than snapshot archives, maybe worse actually.

<comment><USER13> For my use case, it's way more preferrable:

a) SVN seems daunting and complex, tho I didn't ever dive into it. CVS is so simple and easy, a half-arsed programmer like me can actually _understand_ it. Things like git and mercurial are way more complex.

b) RCS is real handy for single files, e.g. a free-standing text file or shell script. But when the thing grows up, it is very easy to integrate the fileset into a CVS repo preserving it's history: move the ,v files to $CVSROOT/$MODULE/.

c) The repository model of CVS is as transparent as it gets.

d) The keywords like $Id$ are really useful.

e.g. I keep my system configuration in "~/Checkouts/system-config", and I have a script that cp's the files to appropriate locations using a map file. When I'm not sure if the active config is not up to date, I can verify very easily. And I can be sure that dirty files won't be active as long as I don't expressly copy them. I know that SVN has this too, but I find CVS easier to use in general.

I guess for fast paced, very active development, yes CVS is sub-par, but for personal stuff, or for something that is patched say at most two-three times a month, it's O.K. It boils down to personal preference.

<comment><USER14> SVN is way simpler at the interface than CVS, you should really look into it. SVN is a spiritual successor to CVS, and is trivially easy for a CVS user to pick up. We switched from CVS to SVN at work several years ago and everyone was happy with the change.

<comment><USER15> We did the same and plenty were _unhappy_. In the end git took over.

There were plenty of things I didn't like about SVN (separate folders per branch? yuk), having used CVS, and didn't find it 'trivial' to pick up.

<comment><USER14> Really, it's hard to handle branching worse than CVS does, and if SVN doesn't do a stellar job either, I don't see it as a barrier to switching.

</comment></comment></comment></comment></comment></comment><comment><USER16> Redox has been working on smaller, more BSD-like versions of the basic Unix utilities, also written in Rust:

[https://github.com/redox-os/coreutils](https://github.com/redox-os/coreutils)

I am excited to see this as I was working on a similar project last year (rewriting the BSD userland in Rust), but it's from pre-1.0 Rust so not really as idiomatic as what is coming out of the Redox project.

<comment><USER17> From the README: "These are based on BSD coreutils rather than GNU coreutils as these tools should be as minimal as possible."

If all of these utilities are running in userspace, per Redox's microkernel architecture, then what is the advantage of intentionally _not_ making them feature-rich?

<comment><USER18> It has the advantages that come from following the UNIX style. To learn more, I recommend reading this short paper by Rob Pike and Brian Kernighan, published in 1984: [http://harmful.cat-v.org/cat-v/unix_prog_design.pdf](http://harmful.cat-v.org/cat-v/unix_prog_design.pdf)

<comment><USER19> "Those days are dead and gone and the eulogy was delivered by Perl" \- Rob Pike (2004)

</comment></comment></comment></comment><comment><USER5> Rewriting coreutils is neat, but a project I'd really look forward would be a strict POSIX base expanded with warnings or errors on valid but risky constructs e.g. echo -n. Even more so if it included a shell (with static analysis of useless uses and dangerous patterns). That would make writing cross-shell scripts much easier.

<comment><USER20> Ok, I'll bite. What's wrong with "echo -n"?

<comment><USER5> [http://www.in-ulm.de/~mascheck/various/echo+printf/](http://www.in- ulm.de/~mascheck/various/echo+printf/) is the raw data version.

POSIX defines echo as only taking string parameters and no options, but notes that behaviour facing `-n` is implementation-defined.

BSD and GNU echo implement `echo -n` as not printing a trailing newline, but `echo` commonly calls to a shell builtin which may or may not follow that behaviour (and may switch behaviour depending on whether the shell is in "sh mode" or not), so `echo -n` could print `-n<newline>` or nothing whatsoever (empty string and suppressed newline) depending on the utils set, the shell, and the shell's runmode.

GNU echo also supports -e, -E, --version and --help options, and much like -n shells and other utils set may or may not support these.

For instance on my machine (OSX 10.11)

* zsh (builtin) interprets -e, -E and -n as options (but not version or help)

* bash (builtin) also does, except when invoked as sh in which case it does not and all parameters are literal (this may also apply to zsh)

* dash (builtin) interprets -n, but none of the others. bash note may also apply to it.

* BSD echo interprets -n but will print -e, -E, version and help literally

* GNU echo interprets all of the above

So if you use echo with any non-literal parameter, or with one of the parameters listed above, in a script you distribute to un-controlled third- parties as an sh script (rather than e.g. a bash or zsh script specifically) you will suffer from portability issues.

And that's just for measly trivial echo (and incidentally why you should always use printf rather than echo in scripts you try to make portable).

<comment><USER21> Whoever wrote the POSIX spec was too conservative. -n should mean no newline(s). Anything else is wrong.

<comment><USER13>
      ECHO(1)                 FreeBSD General Commands Manual                ECHO(1)

      NAME
           echo — write arguments to the standard output

For this definition, -n should mean merely a sequence of two bytes to be written to stdout. Why not just use printf instead? It is way more flexible and powerfull, and "printf x" always prints "{'x', 0}";.

</comment></comment></comment></comment></comment><comment><USER22> Though I like ideas behind Rust but the code is awful. If you look at the code you'll see a lot of misterious symbols (as in Perl) and strange constructs like wrap, unwrap, Arc etc. They make the code less readable.

Also Rust doesn't have exceptions so you have to wrap almost any function call with let/match/Ok/Err. Ugly.

I looked at one random file which turned out to be a `du' command implementation: [https://github.com/uutils/coreutils/blob/master/src/du/du.rs...](https://github.com/uutils/coreutils/blob/master/src/du/du.rs#L89)

Are they really starting a new OS level thread for every directory found? Looks like an easy way to exhaust system resources to me. Also I don't see the code that would collect error information if if the thread panics.

<comment><USER23> >Also Rust doesn't have exceptions so you have to wrap almost any function call with let/match/Ok/Err. Ugly.

respectfully, This is pure nonsense.

First of all rust does not have runtime and AFAIK for providing exception you should have runtime to manage stack.

Second not every language should be like high-level languages, it is not the _rule_ to be like C#,Java,Python,etc. I use a lot of them for my work when I need simple thing to do, but rust designed to do low-level stuff, and I cannot understand how having not having exception makes a language ugly (specially when you code in lowlevel).

<comment><USER22> I mean if you have to write that match construct around every function call the code quickly gets bloated, doesn't it? And that is not good.

<comment><USER5> > I mean if you have to write that match construct around every function call

Not quite.

1\. you're supposed to handle errors around function calls which can fail, which is a strict subset of "every function call"

2\. rust has a number of higher-order constructs to facilitate that handling[0][1][2], not just raw `match` statements or expressions.

That aside, for rust explicit error handling is considered a feature both at the language level (allows for less runtime requirements and much stronger guarantees — check out exception-safe C++ for what happens when low-level meets exceptions) and at the user level (by forcing a conscious and explicit decision, whether it's crashing the system, handling the error or passing the ball upwards)

> the code quickly gets bloated, doesn't it?

Does C code quickly get bloated? Because you're also supposed to check for error codes after each function call which can fail, and C doesn't provide much abstractive power to mitigate that.

[0] [http://doc.rust-lang.org/std/result/enum.Result.html](http://doc.rust- lang.org/std/result/enum.Result.html)

[1] [http://doc.rust-lang.org/core/macro.try!.html](http://doc.rust- lang.org/core/macro.try!.html)

[2] [https://github.com/rust-lang/rfcs/pull/243](https://github.com/rust- lang/rfcs/pull/243)

</comment></comment></comment></comment><comment><USER24> The CoreUtils sort is amazingly efficient, it can sort files nearly as big as your hard drive without matching memory requirements.

With all these node.js / Go / Rust CoreUtils implementations I'm still hoping for one of them to actually match the efficiency of the original implementation.

<comment><AUTHOR> I wrote the initial sort about a year ago (w/o looking at GNU version's source). I just looked at the current version, and confirmed uutil's sort does not do any external sorting, meaning the entire input is stored in memory. Maybe someone can confirm that GNU's sort uses temporary file storage to do something like an external merge sort to reduce memory usage?

edit: confirmed. [http://stackoverflow.com/questions/930044/how-could-the- unix...](http://stackoverflow.com/questions/930044/how-could-the-unix-sort- command-sort-a-very-large-file)

</comment></comment><comment><USER25> What are the licensing implications for this kind of work? I assume the authors used GNU coreutils as more than just inspiration. They probably read all the original code and reused some of the solutions (obviously ported to Rust).

Shouldn't the derivative work still be covered by the GPL?

<comment><USER26> Just to give an example:

[https://github.com/uutils/coreutils/blob/master/src/whoami/p...](https://github.com/uutils/coreutils/blob/master/src/whoami/platform/unix.rs)

looks suspically simmilar to:

[http://code.metager.de/source/xref/gnu/coreutils/src/whoami....](http://code.metager.de/source/xref/gnu/coreutils/src/whoami.c)

<comment><USER27> I'm not sure picking a program where the portion that does any actual work is 3-6 lines in length is a good reference for whether they are copying code/algorithms. There's so little of substance to actually do differently, the chance of them looking similar in that respect if fairly high.

</comment></comment></comment><comment><USER28> Rust is a fine language, no doubt. What worries me is the exact rewrite of the C code using the unsafe construct.

Also a little out of topic; Can more light be shed by fellow HNers on the debugging tools for rust, the debugging experiences from the security research point of view?

<comment><USER29> It looks like there are 134 instances of 'unsafe', in 23,000 lines of Rust. And it looks like a lot of that unsafe is to FFI into libc.

Rust works with GDB, so you end up debugging like anything else. IDE integration is being actively worked on, and sorta-kinda works in my understanding.

<comment><USER30> What is the roadmap on getting rid of the need for libc? Given how terrible libc is, I personally would make that a high priority, though I guess in Linux you can't even start up a process without libc (maybe that is a misunderstanding?), which makes the situation less clean, but at least you could get to a point where you never call back into it after entry into main.

<comment><USER31> Do you suggest they should use raw system calls? On most systems your options are either calling standard C functions or doing raw calls (not portable).

Someone did start a C stdlib implementation in Rust, but it appears to be inactive: [https://github.com/mahkoh/rlibc](https://github.com/mahkoh/rlibc)

<comment><USER30> Yes, the right thing is to port your language's standard library to whatever operating system you want to run on ... just like libc did.

You could have a dummy version that just calls out to libc, for compatibility with systems that you haven't finished porting to yet.

<comment><USER32> And what about systems that don't have a stable interface below dynamically linking that platform's system-provided libc? Just let every program break when the system updates?

</comment></comment></comment></comment></comment></comment><comment><USER33> I'd really love to use rust, given the large growth of projects like this. I only need an IDE to get started, but it seems like there isn't one yet.

Anyone have any pointers on where I can find a good IDE for Rust? Should I just start praying to lord-JetBrains for something that works?

<comment><USER34> If you've never programmed without an IDE I _strongly_ encourage you to give it a go. You'll learn a lot!

[Good lord, a downvote on this? I'm being completely sincere.]

<comment><USER35> I learned how to program without an IDE, and I'm a pretty big fan of it. And strongly typed functional languages with type inference tend to be really easy to write and refactor without needing specialized IDE tasks for the job.

That being said, nowadays I use an IDE because it is extremely helpful to have autocomplete (which is _okay_ with Racer+Vim, but kinda hacky) as well as the hover for type information (name of types, type signature, etc.). Without the hover information, I usually end up doing ridiculous things like writing bogus explicit types to see what type an undocumented function from a library will return after compiling (Is it Option? or Result?). That is _really_ annoying.

I didn't downvote you BTW.

<comment><USER29> [this post was wrong]

<comment><USER36> Isn't it the other way around? One can downvote a post and then reply to it, but can't downvote replies to one's own post?

<comment><USER29> Gah, you're right.

</comment></comment></comment></comment></comment></comment><comment><USER37> Could be useful given the choice of MIT license rather than a GPL variant.

<comment><USER38> They really should use the GPL and not a pushover license.

<comment><USER39> What is it with rewrite-the-world-in-Rust people being stridently anti- copyleft?

<comment><USER40> I don't understand it either. It's as though they want to ignore the history of free software, which simply wouldn't have happened without copyleft.

<comment><USER41> Tautologically, it wouldn't have happened _as it did_ , but free software long predates the FSF.

<comment><USER40> Sure, but the FSF and the GNU project were reactions to proprietary software becoming more common. Free software wasn't recognised as such until Stallman saw the issue and decided to act. Saying that "free software existed before the FSF" is ignoring the fact that free software would've died almost entirely without the FSF and GNU.

</comment></comment></comment></comment></comment></comment><comment><USER42> Some people worry about the file size (which should be similar), but I worry about the speed. How much faster can we grep or sed with a Rust compiled grep vs a C compiled grep?

<comment><USER43> Likely not as fast as with a grep written in C, but FreeBSD's grep is (was?) pretty slow compared to the GNU version and nobody really cares (read: it's probably fast enough).

<comment><USER29> There shouldn't be any theoretical reason that a Rust grep should be slower than a C grep. In practice, a rust grep would be a new code base, and the existing grep has seen a lot of development over years.

</comment></comment></comment><comment><USER44> See also today's discussion of `cash` ("CoreUtils implemented in pure JavaScript"): [https://news.ycombinator.com/item?id=11334597](https://news.ycombinator.com/item?id=11334597)

</comment><comment><USER45> The rationale talks about easy portability to Windows, but I'm skeptical - <USER2> underlying API and filesystem is different enough that this is likely to cause problems. '\' vs '/' to start with.

<comment><USER46> Windows supports forward-slash fine. Has for at least 25 years. No need to change / to \ or visa versa.

Now obviously any Windows port would have to call Win32 APIs instead of POSIX APIs (unless you're writing for a Cygwin-like layer).

<comment><USER47> Supported, just but it's a second class citizen, for example, no tab completion of directories on the cmd prompt when using forward slash. Some commands will not except it;

e.g. type c:\home\foo.txt -> cats it out type c:/home/foo.txt -> 'The syntax of this command is incorrect.'

whereas cd will except either forward or backslash

cd c:\home/foo cd c:/home/foo

work as expected.

<comment><USER46> Firstly I was talking about API support. Since that is the topic at hand.

Secondly, Cmd is deprecated. Powershell supports both slashes and "type c:/home/foo.txt" works perfectly.

<comment><USER48> But Powershell redirects < and > either don't work or can corrupt your files

<comment><USER46> You might find this useful:

[https://technet.microsoft.com/en- us/library/hh847746.aspx](https://technet.microsoft.com/en- us/library/hh847746.aspx)

<comment><USER48> A) That's only one direction, the other way doesn't work

B) Even going that direction, at times it corrupts the data

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> Written in Rust, MIT-licensed, designed to be portable...I wonder if this is something that might eventually get merged into Redox?

<comment><USER29> Redox uses a different, BSD style coreutils, not GNU style.

<comment><USER17> Please pardon my ignorance, but what are some of the key differences?

<comment><USER29> I am not an expert, but the general difference, in my understanding, is that the BSD coreutils is significantly "lighter", both in features and in code size.

</comment></comment></comment></comment><comment><USER49>
        (on Windows use MinGW/MSYS or Cygwin make and make sure you have rustc in PATH)

This made me chuckle - if you have MSYS installed, which already comes with a windows port of coreutils, why would you want to use it to build a windows port of coreutils?

<comment><USER50> Because you don't trust the memory safety of programs written in C. Or because you think the coreutils would progress faster with a language with modern semantics like Rust.

</comment></comment><comment><USER51> It is a bit ironic that these "gnu" core utils are not licensed under the GPL

</comment><comment><USER52> Complete rubbish: _Many GNU, Linux and other utils are pretty awesome, and obviously some effort has been spent in the past to port them to Windows. However, those projects are either old, abandoned, hosted on CVS, written in platform-specific C, etc. Rust provides a good, platform-agnostic way of writing systems utils that are easy to compile anywhere, and this is as good a way as any to try and learn it._

Cygwin has a complete, up-to-date port of the Coreutils for Windows.

The POSIX + C language provides a a good, platform-agnostic way of writing systems utils that are easy to compile anywhere.

<comment><USER36> Is the cygwin port just some different build files, or is it genuinely different code? A Rust codebase probably wouldn't (in most cases) need to be modified to run on different supported platforms.

<comment><USER53> I'm not going to comment about cygwin (because its build process is not as transparent) but instead about msys2, the spiritual successor to cygwin. See for yourself: [https://github.com/Alexpux/MSYS2-packages/blob/master/coreut...](https://github.com/Alexpux/MSYS2-packages/blob/master/coreutils/PKGBUILD) is the `pacman` style `PKGBUILD` used to build the `coreutils` package.

<comment><USER36> That looks pretty clean, but they're still applying looks like 5 patches which would need to be maintained separately. It's certainly not as bad as a full port, but it's still not the same codebase. Rust's cross-platform efforts would (I think?) obviate that process.

<comment><USER52> But, nevertheless, it's not exactly a port of Coreutils to Windows _per se_.

For instance, let's take the "cp" utility.

A Windows port "cp" should be able to copy Windows-specific file attributes. Does the Cygwin "cp" do that? How about NTFS forks?

I don't believe that you can write some portable code in Rust, and have a "cp" utility which correctly handles every quirk of every OS's file structure.

<comment><USER36> Not familiar with Windows' filesystem APIs, but the description for the Rust function in the stdlib is here:

[https://doc.rust-lang.org/std/fs/fn.copy.html](https://doc.rust- lang.org/std/fs/fn.copy.html)

Seems like it should handle platform specific attributes?

</comment></comment></comment></comment></comment></comment><comment><USER54> "easy to compile anywhere"

Doesn't this imply there needs to be the Rust compiler / Cargo (if it needs that) installed on the system? And what versions - stable / unstable ?

</comment><comment><USER55> Yes! No more buffer overflow exploits in the core utils.

</comment><comment><USER56> This is actually a surprisingly good place to learn utils and learn how to write Rust...

</comment><comment><USER57> Offtopic: I'm currently indulging myself in clojure but as I only know dynamic high-level languages I am also a bit curious about low-level stuff.

For someone starting at zero, would you recommend C rather than Rust or the other way around?

</comment><comment><USER58> Observation:

[https://github.com/uutils/coreutils/blob/master/LICENSE](https://github.com/uutils/coreutils/blob/master/LICENSE)

GNU coreutils is GPL, this is MIT.

</comment><comment><USER59> How big are the executables when compiled, especially compared to the C versions?

I hope it's not Rust version 2 MB, C version 6 KB.

<comment><USER29> Well, that would be a statically linked Rust version vs a dynamically linked C version. Either of those languages can produce binaries of either size. Statically link a MUSL libc and it'll be bigger than 6kb, dynamically link the rust code and use the system allocator instead of jemalloc and it'll be smaller than 2MB. (Or rather, it should be, I haven't literally tried it. The smallest known Rust executable is 151 bytes.)

<comment><USER59> That's what I wanted to hear, could really the mentioned in Rust implemented coreutils be compiled and linked equivalently to C or not and can we see the resulting sizes? Not "if I don't use any library I can get the 151 byte binary" but exactly these coreutils that are presented.

It gives a good idea if the replacements can actually be comparable replacements.

The second part is then to compare the number of features implemented and the behavior.

</comment></comment></comment><comment><USER60> I love UNIX too much, nothing can replace C in my heart! :)

</comment><comment><USER61> does GNU coreutils include sed/awk?

</comment><comment><USER62> which company is using Rust?

<comment><USER29> There's a lot of startups that you may or may not have heard of, but the most well-known company using Rust in production today is Dropbox.

</comment></comment><comment><USER63> It certainly beats using NodeJS.

EDIT: Yea, this was meant as a reference to the coreutils-in-nodejs post on the frontpage.

<comment><USER64> NodeJS is for applications, Rust is for system programming. How does one beat another?

It's akin to saying "ARMv7 assembly beats using Java for Android programming".

<comment><USER65> He is probably referring to this: [https://news.ycombinator.com/item?id=11334597](https://news.ycombinator.com/item?id=11334597) \-- discussion on CoreUtils in Javascript!

<comment><USER64> Ah, understood.

I think neither of these beats actual coreutils and their support base (still under impression of Termux capabilities...), at least not yet.

</comment></comment></comment></comment><comment><USER66> Is there a real need for this project ? I mean, this project has been used for a long time, could it really be better ? Do you intend to replace GNU coreutils ?

Not to be mean, just a genuine question (and yes I read the Why section of the readme).

<comment><USER67> Multiple people have sought to rewrite coreutils, whether it be for fun, exercise, or out of frustration with the current utils. I know folk on 4chan's /g/ were rewriting them once, and the people at suckless are trying to do the same, only with a lot of options and features stripped out due to "bloat" (my word not theirs).

Your second question presumes that just because something is old means it is the best. Traditional things can indeed work out well, but challenging tradition is how progress is made. And you can't know if the coreutils can be improved if you don't try, right?

<comment><USER66> It is a rewrite of gnu coreutils because cureutils sucks. It is a good reason !

I guess it doesn't intend to be a 1:1 rewrite of coreutils then ? The public available function to users will be rewrote.

</comment></comment></comment><comment><USER68> MIT license? Is open-source dying?

<comment><USER69> I was going to say it only takes about 30 seconds to fork and change the license if you want to. Then I decided to check if someone had already done so. Yep. [https://github.com/ivegotasthma/coreutils/commit/4c7dcbd912a...](https://github.com/ivegotasthma/coreutils/commit/4c7dcbd912a78fda77900806c8bb3a59335b2d6d)

I didn't count, but that may have taken less than 30 seconds.

<comment><USER70> Is that valid? The original license had:

      > The above copyright notice and this permission notice shall be
      > included in all copies or substantial portions of the Software.

As those have now been stripped away, it seems like a license violation.

<comment><USER41> You don't have to be a lawyer to recognize that as a genuine bona fide electrified six-car copyright violation. You just have to be able to read.</comment></comment></comment></comment>


Ask HN: Actual chances of seeing the space shuttle from afar - <AUTHOR>

I am in Atlanta, Georgia. I have fairly easy access to a high parking deck but it's an exceptionally cold night for Atlanta and I just wanted to confirm from a source I trust that my friends and I will actually be able to see something at 4:30ish. <comment><USER2> <http://spaceflight.nasa.gov/realdata/sightings/>

</comment><comment><USER3> Scrubbed for tonight, so...no.</comment>


Unsupervised Doodling and Painting with Improved Spiral (Demo, CPU Intensive) - <AUTHOR> https://learning-to-paint.github.io/ <comment><AUTHOR> Link to Arxiv paper

[https://arxiv.org/abs/1910.01007](https://arxiv.org/abs/1910.01007)</comment>