Use ack instead of grep to parse text files - <AUTHOR> http://stevengharms.com/blog/2012/04/10/use-ack-instead-of-grep-to-parse-text-files/

<comment><USER2> You can do a lot of things with `grep -E`, fwiw - there's not much here to really sell ack.

Things that _do_ sell ack, for me:

      ack css_class --sass       # search .sass and .scss
      ack some_method --no-flash # ignore .as and .mxml
      # ignore compiled css in every Rails project on
      # my system (as long as I `ack` from the root)
      --ignore-dir=public/stylesheets/compiled

And the fact that it prints out like this:

      path/to/file.ext
      123: some text matching
      234: more text matching

      path/to/other/file.ext
      480: a match

instead of like this (with `-n`):

      path/to/file.ext:123:  a match
      path/to/other/file.ext:567:  another match
      path/to/that/file/you/didnt/know/you_had.ext:32:  yet another match

makes it _massively_ more useful for human-viewing of the results than the normal behavior of grep. And it reverts to grep-like output when you pipe it into something, so you can go from exploration to composition with no effort.

<comment><USER3> Entirely agreed. Other users' points about the tone of the article ring true to me as well, and they are only hurting people's impression of the tool, which is unfortunate; I use both ack and grep (my regex comfort level is not extremely high, so grep -v is still a common fallback).

For the curious: It's "ack-grep" in Ubuntu's package manager (and presumably Debian, though I can't say for sure); I stick it on every machine/server I set up just to have it handy. Queries to the effect of _ack-grep --python ClassName_ yield fast, readable, extremely useful output, as you mention. That's why I use it _in addition_ to grep.

</comment></comment><comment><AUTHOR>
      ack '(?=silver).*needle' haystack

is really not the same as:

      grep needle haystack|grep silver

Because with the double grep method, a match will be made whether "silver" is before or after "needle"; while with the single ack command shown above, a match will only be made when "silver" comes before "needle".

Also, I'm not sure why the author uses

      ack '(?=silver).*needle' haystack

instead of simply:

      ack 'silver.*needle' haystack

<comment><USER4> Maybe it's because you can write the latter also with plain grep:

        grep 'silver.*needle' haystack

<comment><USER5> That assumes that "silver" will appear _before_ "needle", which may not always be the case. `grep needle file | grep silver` gets you lines containing both "silver" and "needle" but not necessarily in that order.

</comment></comment></comment><comment><USER6> While ack is a great tool, I don't think the author pointed out its strengths in this article. From my perspective, the strengths are using it recursively and its ability to 'recognise' files containing source code (and yes, I know that grep has a recursive option - it's more innate, though, in ack).

</comment><comment><USER7> This article is a wonderful demonstration why simple methods piped together is better and easier to use than a giant monolithic application like awk.

<comment><USER6> Are you confusing awk with ack?

<comment><USER7> I confused the apps in the text but the point was that those regexes look far worse than the equivalent grep pairs.

<comment><USER8> Agreed. He says he can't remember the syntax for such and such in grep, but the regexen he follows up with seem complicated enough to me.

Now, there's stuff that never sticks in my brain (tests in shell, sigh). But generally there's less syntax and therefore less to remember in a chain of greps. Composition of simple piece is easier to understand than one equivalent and therefore more complex piece. Heck, the power of the shell is predicated on this idea.

Perhaps the best part about ack is that it's simple to restrict your search of files to a given pattern with a command line flag rather than using shell globbing. You could wrap invocations of grep with a shell function or another script, but that's still not great.

</comment></comment></comment></comment><comment><USER9> A little feedback on voice. When someone says "You should stop using them. Now.", I expect the article to be about some system killing security problem, not an argument for the elegance of one tool over another. And if the argument is going to be about elegance, it better be absolutely compelling. The benefit of piped grep expressions is that you don't have to know anything beyond the principles of Unix to intuit their usage. For many uses (most uses for me), no thought is required -- grep fades into the background and becomes part of the programmatic brain stem. Commanding the reader to no longer use it is as effective as telling them to stop breathing.

</comment><comment><USER10> _> The primary virtue of these commands is that they use the Perl regular expression engine._

You mean the engine that lets you write pathological regular expressions[1] and accidentally ReDoS[2] yourself? To be fair, it's fine if you understand how the engine works well enough to avoid these cases. But how many people can actually say this?

1\. <http://swtch.com/~rsc/regexp/regexp1.html>

2\. <http://en.wikipedia.org/wiki/ReDoS>

<comment><USER11> I was looking into breaking a Perl IRC bot the other day and couldn't get any of the examples to work (that is, take more than a split second to execute). Does perl now detect these pathological cases and work around them or was I just not trying the examples correctly?

<comment><USER10> I believe I read somewhere that recent versions of Perl detect certain obviously pathological cases and abort them, but I don't know if they fail silently or display an error. Whether a particular needle is pathological depends on the haystack, too, so it could just be that there was a mismatch between the two in your case.

</comment></comment></comment><comment><USER12> _if you want the silver needle, the unsophisticated, greppy way of doing this would be: $ grep needle haystack|grep silver_

Why not simply $ grep "silver needle" haystack?

<comment><AUTHOR> Well, with a simple haystack like the one used in the example, there really would be no reason not to grep for "silver needle" in the first place. So it's really not the best or most realistic example of the usefulness of the double grep method.

When I use double grep in real life, I often tend to do so on a relatively large haystack, where I don't necessarily know what the second search term will be. In that situation, I'll usually do the first grep, look through its output, and add on the second grep once I see something in the first grep's output that I want to narrow the results down to.

Of course, instead of adding on a second grep, I could modify the original regex (and sometimes I do); but if the original regex is complicated, then modifying it is error prone. And, anyway, using a shell abbreviation, it's very easy to type " G " and have that expand to " | grep " to simply add on another grep, without touching the first regex.

A second, quite common use case for a double grep is when I want the second search term to match whether it's before or after the first term. There's probably some convoluted way to get the same effect using a single regex, but it probably won't be nearly as easy or intuitive as a double grep.

</comment></comment><comment><USER13>
      cp /usr/bin/grep ack

Find the needles

       ./ack needle haystack

Find the silver needles

       ./ack silver.*needle

Find all needles except lead ones

       ./ack '[^^][^e.][^a.][^d.] needle' haystack

That last one could be tricky if there's other types of needles with names like "ead needle" or "mead needle". But using the haystack he gives us BRE can do the job, easily.

Perl regex may be easy to use but they are inferior from a performance perspective. As someone else said, they're slower than BRE or ERE. Moreover, even if speed is not an issue, you pay a price in the amount of memory you will need compared with line-based utilities like, e.g., sed and awk.

Find the needles

      sed '/needle/!d;/needle/q' haystack

Find the silver needles

      sed '/silver needle/!d;/silver needle/q' haystack

Find all needles except lead ones

      sed '/lead needle/d;/needle/!d/needle/q' haystack

My preference is to use (f)lex if I want a fast "parser" (scanner). Its regex is more than adequate.

</comment><comment><USER14> \- grep does regular expressions.

\- grep uses by default the same regular expressions as sed, which is another frequently used tool.

\- grep also supports perl regular expressions.

\- grep is available on every linux/bsd/*nix system out there, so it just works and make your scripts work.

\- We use grep to search through gigabyte sized files (ie logs). You didn't show us how well ack performs there.

<comment><USER8> That'd be my other concern. ack is perl, as far as I can tell. I have no idea how perl performs at these tasks. But grep is written in C, and there're fun examples of how exactly it gets to be so fast ([http://ridiculousfish.com/blog/posts/old-age-and- treachery.h...](http://ridiculousfish.com/blog/posts/old-age-and- treachery.html) comes to mind).

</comment></comment><comment><USER15> Ack is sweet. Ag is sweeter:

<http://github.com/ggreer/the_silver_searcher>

</comment><comment><USER16> I do wish the author described which 'ack' is being lauded. When I attempt to use 'ack' on my linux workstation the results are confusing.

        moses@deunan:~$ </etc/mime.types grep application |grep x-ruby
        application/x-ruby				rb

        moses@deunan:~$ </etc/mime.types ack application x-ruby
        application: No such file or directory
        x-ruby: No such file or directory

        moses@deunan:~$ ack -h
        ack v1.39 Copyright 1993,94 Ogasawara Hiroyuki (COR.)
        usage: ack [-{e|s|j|c[c]}] [-{a|A|o<file>}] [-zCntud] [-{E|S}] [<file>..]

</comment><comment><USER17> Why is:

        ack -C5 'scope(?!.*lambda)' app/models

Better than:

        grep -C5 scope app/models | grep -v lambda

    ?

<comment><USER18> The first one gets you five lines around all of the scopes without lambdas. The second one gets you five lines around all the scopes (including those with lambdas) and then omits all of the lines with lambdas, some of which will have caused a match in the first grep, and some of which may be part of the context of matches in the first grep. You will get both contexts with no match in the middle and matches with incomplete contexts.

<comment><USER17> Quite right. The downfalls of posting untested code...

</comment></comment></comment><comment><USER19> Is anyone else turned off by the tone of the blog post and the attitude of the poster? There's gotta be a better way to showcase the usefulness of a tool.

<comment><USER5> I'm more turned off by hard-to-read regular expressions, especially ones that look like they may break depending on what terminal emulator I'm using, how quotes are escaped, etc. The "you've been doing it wrong for years" tone I could do without, but see people using it with good enough intentions so frequently that I'm no longer bothered by it.

Also, `ack` is not installed by default, which is reason enough to not get too used to it. Some people will say "optimize for being on your own machine, since you are 99% of the time", but I'm not. Installing additional utilities on multiple production servers is annoying enough, and can actually become problematic in a PCI-compliant environment as mine is. I'm also frequently helping out other members of my team, and having a magic one-liner that often results in "-bash: ack: command not found" is not terribly useful to me. YMMV.

</comment></comment><comment><USER20> Strange article -- I love ack, but this article doesn't really hit any of the reasons why, but focuses only on cases where I'd use grep anyway.

</comment><comment><USER21> if all you need is Perl regexp you can use grep -P, no need to stop using grep

</comment><comment><USER22> Is it worth learning grep or ack or a similar tool?

When I need to do these sort of tasks, I do them in a scripting language with some combination of split() and regex instead of using command line tools. But, I'm just doing that because it's what I know.

Would I end up saving a significant amount of time if I learned to use grep instead?

<comment><USER23> I'd say start with ack for its ease of use, but knowing grep is important. I prefer ack but most of the boxes i work on don't have ack installed (and won't).

<comment><USER23> Also, these aren't particularly good examples of ack vs grep... as others have pointed out.

</comment></comment></comment><comment><USER24> "Look at that one character shorter than grep and just as easy."

Well, let's apply that same criteria to searching for two terms:

> grep needle haystack|grep silver

> ack '(?=silver).*needle' haystack

Look at that one character shorter than ack and just 10 times easier.

grep wins, by a knockout.

</comment><comment><USER25> Wasn't mentioned in the article but you can install ack (on OSX) through the homebrew package manager with: `brew install ack`. Check out the docs at <http://betterthangrep.com/>

</comment><comment><USER26> I find ack slow and overcomplicated (in implementation at least). As an alternative consider:

<http://www.pixelbeat.org/scripts/findrepo>

</comment><comment><USER27> I thought perl regex was much much slower. Atleast according to Russ Cox,

</comment><comment><USER28> grep has the great strength of near-ubiquitous installation. If you find yourself on a Unix-like system, it will have grep. Perhaps if you only ever really work on a very small set of systems, then this doesn't matter, but for those of us who frequently need to work on different systems and don't always have the ability to install new packages, grep does a fine job. In fact, it has a lot in common with vi here: you can (nearly) always count on having it available.

</comment><comment><USER29> grep -E is good enough. But whatever works.

Saying "You should stop using them. Now." is ridiculous. Why do I need to stop anything if it does what I need?

</comment><comment><USER30> ack-grep is not ack's related cousin. Ack-grep is the name debian uses for the ack executable in order avoid a namespace collision.

      dfc@ronin:~$ apt-file search bin/ack
      ack: /usr/bin/ack
      ack-grep: /usr/bin/ack-grep
      ...
      dfc@ronin:~$ apt-cache search --names-only ^ack
      ack - Kanji code converter
      ack-grep - grep-like program specifically for large source trees
      dfc@ronin:~$

</comment><comment><USER31> ack is a great tool for _searching within_ text files, not for parsing them.

[shameless plug] Try also the pure-Python based alternative to ack called "pss" (pip/easy_install or <https://bitbucket.org/eliben/pss>).

</comment><comment><USER32> Searching text files, not parsing.

</comment><comment><USER33> No.

</comment><comment><USER34> Love it since I started using it a couple of months back. :)</comment>


The curse of the gifted programmer (2000) - <AUTHOR> http://lwn.net/2000/0824/a/esr-sharing.php3 <comment><USER2> > Your tendency to undervalue modularization and code-sharing is one symptom. > Another is your refusal to use systematic version-control or release- > engineering practices. To you, these things seem mostly like overhead and a > way of needlessly complicating your life. And so far, your strategy has > worked; your natural if relatively undisciplined ability has proved more > than equal to the problems you have set it. That success predisposes you to > relatively sloppy tactics like splitting drivers before you ought to and > using your inbox as a patch queue.

I hang my head in shame at this. I'm lucky, though, that the other members of the D team talked me into using modern tools like github and bugzilla. I'm grateful for that.

P.S. yes, I really did use email as a patch queue and database.

<comment><USER3> I've seen this sort of version control done twice in a professional setting, and both were by programmers much more gifted than me.

I once saw a guy who wrote a robust e-store web app in C. Not C++, but C. Tons of complexity, and it worked _fine_ , but then when I dived in to work on it, it was a nightmare. He told me "You want main_app.version3.old.c, That's the one that gets compiled and pushed to the production server. Not main_app.c, that one's old and we don't use it anymore." He built a build system from scratch, did his own version control in his head, and kept everything in one monolithic C file.

Of course, he was the shittiest _software developer_ I've ever seen. Just a brilliant _programmer_. He needed a manager the way a jet needs a pilot. Sadly, he was 30 years my senior, and not amenable to being told what to do, so after a long talk with our CEO, we decided to let him go. He was the only one who knew how our system work, but I built a comparable one using best practices and open-source software in less than a month.

<comment><USER4> C isn't a terrible language to write a web framework in. (Not using version control _is_ a terrible idea). About 15 years ago I wrote a simple high level framework in C for writing web apps:

[http://git.annexia.org/?p=c2lib.git](http://git.annexia.org/?p=c2lib.git) [http://git.annexia.org/?p=pthrlib.git](http://git.annexia.org/?p=pthrlib.git) [http://git.annexia.org/?p=rws.git](http://git.annexia.org/?p=rws.git) [http://git.annexia.org/?p=monolith.git](http://git.annexia.org/?p=monolith.git)

It actually does stuff that even current frameworks cannot achieve, such as providing long-lived stateful web apps entirely in HTML (no JS required), although you are entitled to doubt if that matters these days since JS has won and is available pretty much everywhere.

The best thing about it was that it was so fast, because the code + data of a small web app would fit entirely in the L1 cache of the CPU.

<comment><USER5> C _is_ a terrible language to write a web framework in. The kind of high-level constructs modern programming languages provide are just not possible in C. It is also very easy to write buggy code and is too low level for the use case.

<comment><USER4> You should try looking at the code before declaring that. The C used a pool allocator, had some high level structures (vectors and hash tables, basically the same as Perl), loads of safe string functions, try/catch, coroutines, cooperative threads, and other stuff I've forgotten[1].

It was possible to write safe code in that framework, and in fact we did write a lot of code used daily by tens of thousands of UK schoolchildren until quite recently.

[1] Invoking [https://en.wikipedia.org/wiki/Greenspun's_tenth_rule](https://en.wikipedia.org/wiki/Greenspun's_tenth_rule) although I like to think our code was very minimal, elegant and not too buggy.

<comment><USER5> > You should try looking at the code before declaring that.

Attempting to write a web framework in C is great!

Even though you end up building the high-level programming constructs, C web dev is still just too hard compared to other alternatives. Because of this it is not possible to build a large community around it, which I would say is the most crucial part of today's web framework like Django/Rails.

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> Here are a few earlier discussions of this email:

      Curse Of The Gifted (2000) 606 points
      luu  2 years ago  365 comments

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

      Eric S. Raymond - The Curse of the Gifted (2000) 243 points
      vinutheraj  6 years ago  59 comments

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

      The curse of the gifted programmer (ESR's email to Torvalds) 95 points
      semmons  6 years ago  38 comments

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

It's interesting to compare the quality of discussion over the years. In this case, I think the more recent ones come out looking pretty good.

<comment><USER6> [https://news.ycombinator.com/item?id=1221756](https://news.ycombinator.com/item?id=1221756)

The first two comments on this thread were definitely snarkier and more aggressive. Part of me thinks there were advantages to the earlier culture of HN, though. People were more likely to be challenged on their statements, and forced to defend their beliefs.

</comment></comment><comment><USER7> ESR showed his wisdom. That is a nice post. I like this quote:

      > When you were in college, did you ever meet bright
      > kids who graduated top of their class in high-school
      > and then floundered freshman year in college because
      > they had never learned how to study?

Yeap. I also met a few who thought they were smart, then gained a secret terror that they were secretly stupid because they found CS hard.

Some things you have to work at before you learn them.

<comment><USER8> Was he at all correct in thinking that this applied to Torvalds? Time seems to have proven that ESR was completely off-base.

<comment><USER9> To be fair, Linus _did_ change. That charge about not valuing version control and systematic release practices? He built git in 2005. Kernel release practices are now a well-oiled machine. And overall the kernel has likely got more modular, not less, over the years (although I have not had a look in a while, but that was the trend a few years ago).

ESR might have been wrong on the specific item at hand (I have not read the whole thread, and he, ESR was wrong on _a lot_ of things over the years) but some of his arguments are definitely right - at least seen from a "gifted something" who flopped in uni ;)

<comment><USER10> But was it due to ESR's ramblings or due to patches overflowing his inbox capacity?

Personally, for years I had been completely ignoring everybody who framed something as "a better alternative to talent" (wtf?) or said the magic words "you are smarter than me". They correlated too well with "stupid ideas I knew (or quickly checked) to be wrong".

Nowadays I'm trying to fish for useful information even in messages which push my bullshit-o-meter out of scale, but it takes work.

If you want to maximize your chance of being treated seriously, stick to constructive arguments about the problem at hand, not some generic unfalsifiable wisdom.

<comment><USER11> The reason for that way of phrasing is because it appeals to ego. If you want someone to do something, particularly someone with a known ego, then this is an effective way to get them to listen to you and not dismiss you.

Of course, there's a fine line between stroking and patronizing, though.

<comment><USER10> No, it's a trap.

It works until you get to those with really big egos who take pride in dismantling such tricks and gaming others by pretending to fall for their games. These need higher levels of gaming.

But in the end, if you truly think that something is a good idea for everyone involved, just explain why.

</comment></comment></comment></comment></comment></comment><comment><USER12> It doesn't seem like this has anything to do about Linus raw talent, or the "curse of the gifted".

Quite the opposite, it seems it was an opinion evolved through experience.

[https://lkml.org/lkml/2000/8/22/52](https://lkml.org/lkml/2000/8/22/52)

Linus point was apparently about avoiding crappy interfaces when one goes about having common code just because it looks like they do the same thingy. He seems mindful enough that sharing code _is hard_.

[https://lkml.org/lkml/2000/8/23/47](https://lkml.org/lkml/2000/8/23/47)

On the contrary, a raw talented engineer would usually jump into the opportunity to refactor and share common code, without realizing when the challenge is above one's ability.

In this aspect, even a few decades of experience in software (fragmented in many separate projects) can be less valuable than a single 5 year stretch in _the same_ code base.

<comment><USER13> Indeed, rather than being anti-code sharing it looks very similar to the risks presented by The Wrong Abstraction that was posted a little while back.

[http://www.sandimetz.com/blog/2016/1/20/the-wrong- abstractio...](http://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction)

</comment></comment><comment><USER14> What an amazing email from ESR.

I feel like I've had the issue he describes happen to me in multiple facets of life, at different points.

College? Check - There definitely was a point where I couldn't cruise and catch up by cramming. High school was a joke in comparison with some of the learning challenges I finally encountered.

Task management? Hah! Todo lists are for old people. I cruised by on this one for a LONG time due to (at least my own perceived) pretty large short-medium term memory before personal life + work life (and moving up the chain) meant that there's no way I'd remember everything that needed tending to unless I adopted some sort of system.

More guilty one? Tests. For better or for worse, I worked professionally in an environment where we a) had a compiler, b) had a QA group, and c) managed to put out a lot of working software without a test suite. It definitely made me finally give in to "code should have at least SOME test suite, if not a pretty comprehensive one" after much kicking and screaming. To this day, in my mind, I harbor feelings that it's possible to pump out largely working (i.e. with a defect rate not much worse off than any other project, because no software is without any) software incredibly faster and make the users/customers/people who wanted the thing built happy WITHOUT writing tests. That said, I also know it's completely irresponsible and not scalable to do so.

<comment><USER15> With tests, there's also the idea that writing them helps you write better code.

That's something that doesn't happen automatically. If you approach tests as something you have to do because somebody told you to, and I think this is pretty common, then your tests are probably not going to be great, and it's not going to help your code...

But if a team really takes to heart the whole principle of testing, and start to design things with testing in mind... then they start to ask questions up front like "how will we really know that this works?" and "how can we isolate this component so that we can test it independently?" and "how can we write fast tests for this?" and "can we make this into more of a pure, simple data structure?" and so on and so on.

Especially this one: "How can we get the important business logic here to be a clear and distinct module with verifiable correctness?"

And that's a cascade of wonderful benefits. Enforcing a culture of "you must write tests" might possibly help with QA, especially in the more obvious cases of algorithmic correctness, but the true benefits are so much deeper.

</comment></comment><comment><USER16> Seeing this post in context of whole conversation will show that Linus' stance was not that bad:

[https://lkml.org/lkml/2000/8/22/12](https://lkml.org/lkml/2000/8/22/12) (quote from Linus' post)

` _It 's true that "simple and tested code means less bugs". And quite often, code sharing will imply that the code gets (a) more complex and (b) has cases that people who make changes will never be able to test.

No, I'm not saying that sharing is bad. Sharing is good. But anybody who makes a blanket statement like "sharing reduces bugs" is full of crap.

Good and clear interfaces reduce bugs. Avoiding complexity reduces bugs. Using your brain before you code something up reduces bugs.

But making a very complex driver that handles ten different variations on the same hardware? No. That does _not_ reduce bugs. It's quite often more efficient to have two people work on two drivers that are independent of each other, than to have two persons working on the same driver. Alan put it well at some point: the way to create working open source software is to minimize the amount of communication needed._`

I think he's _veeeeery_ reasonable in this. This reminds me "Wrong Abstraction" article. [https://news.ycombinator.com/item?id=11032296](https://news.ycombinator.com/item?id=11032296) Sometimes it is better to create two separate things than create some weird obscure abstraction which cover all the cases.

</comment><comment><USER17> I have seen these people who have "curse of the gifted." One of them is me, another is my step-son.

Problem is people's approach to your gifts, first; your parents. If they say continuously that you are gifted, very smart, very beautiful, adorable etc and you can do anything you want because you are so smart, you are most likely doomed later in life.

Now, my step-son about to finish high school. His mother, always complimented him starting from kindergarten. He was smart all along, did all problems from his mind easily without much effort. His parents and teachers complimented him everyday. He was happy, and proud of himself to be smart, his parents were also proud.

High school required more disciplined work. He couldn't make it, too many distractions around. He was thought to be a very special person when he grow up, but now, he is below average, and sadly, he accepts that even though he had the potential. I see how he will fail more in college, and can't help.

My only difference from him was that he is failing in high school, I failed in university.

I have a small daughter, 4 years old, and I am afraid as hell not to spoil her. She looks very smart and gifted. I always say she is not gifted, she is just normal. I don't want her to be very special person when she grow up, I want her to be happy and healty, that's all. Only thing I am trying to do is not to say her that "she is gifted, she is very smart".

I don't know how to solve his brother's problem. Looks it is very late.

<comment><USER18> I believe there's a fair amount of evidence that praising effort, not cleverness or 'being gifted', is much more productive for children in the long run.

<comment><USER19> Yes, this! Praise effort. Tell them it's okay to fail, heck it's even GREAT to fail because each failure puts you closer to success.

It's not a "You are talented or not". Sure some people start out with an advantage but everyone has to hone their skills through practice and effort.

</comment></comment></comment><comment><USER20> Previous discussion (632 points, 2 years ago, different URL):

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

And here is a good comment:

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

From it: "Eric writes using vague generalizations about age and experience; Linus writes with specifics about his experience with the kernel."

And: "Also, compare this message from Linus earlier in that thread [https://lkml.org/lkml/2000/8/22/52](https://lkml.org/lkml/2000/8/22/52) with a post of his from yesterday: [https://lkml.org/lkml/2014/2/10/575](https://lkml.org/lkml/2014/2/10/575), especially regarding abstraction."

<comment><USER21> Sounds like his position hasn't changed, despite the tremendous growth of the kernel since then. Maybe he was right after all.

</comment></comment><comment><USER22> I don't know about the specifics talked about here, but he's absolutely right that no matter how much raw talent you have, eventually you will find yourself facing a challenge that you can't beat. And at that point, if you want to keep improving, you will have to start learning the same kinds of engineering discipline and using the same kinds of external aids that everyone else has had to use all along.

I've seen a few people go through this process (and experienced it myself) at various stages in their careers and everyone has a rough patch after hitting that wall. Eventually they admit that what they've been doing is no longer working, and they become better engineers because of it. But it's tough when you're in the middle of it, and for a while your work definitely suffers.

<comment><USER23> > I don't know about the specifics talked about here

The specifics matter a lot here. ESR was trying to get his patchset for his rather complex configuration/menu language into the kernel (to be used to configure kernel configs/options) which seemed to have to do more with ESR's need to be perceived as a "kernel hacker" rather than any concrete problem. Fortunately, Linus said no. ESR responded with some weird tirade which had nothing to do with the matters being discussed. Luckil

<comment><USER21> Was it a patch by ESR? From the earlier Linus message, it seems the patch was from another dev: [https://lkml.org/lkml/2000/8/21/25](https://lkml.org/lkml/2000/8/21/25)

</comment></comment></comment><comment> V-2 This letter reminds me of a historical anecdote (I read about it in some history book, it could be apocryphial though) in which Hitler's generals were faced with some ludicrous strategical concepts of his. But, of course, noone really dared to speak up. And finally one gray-haired general clears his throat and says "mein Fuhrer, I'm afraid you are mistaking Stalin for a genius equal to yourself!"

</comment><comment><USER24> The greatest realisation I've had as a developer is that no matter how much I learn and how clever I think I'm being, I'm always going to be limited by the number of hours in the day. If you want to build brilliant, audacious, complicated applications then you simply _have_ to work with other people because you physically can't do everything yourself.

If you're a "lone gunman" you'll have to accept you're limiting yourself to things you can make in your available, very limited time.

<comment><USER25> To me this is where the allure of the 10/100x developer myth comes in, if I were truly gifted I would build tools that multiplied my ability, so I could do more. But I haven't so I must not be. Is it a myth? I don't know.

</comment></comment><comment><USER26> Thinking is like 4 wheel drive. You still get stuck but in harder to get out of places.

<comment><USER27> Which is why you learn to install a winch or have a friend handy with a 4-wheeler to pull you out. Having the right tools or right people to turn to for help can get you out of almost any situation.

<comment><USER22> Precisely, and this is all the email is saying; that it's better to learn how to use a winch or a snatch strap before you get yourself fully bogged.

<comment><USER28> Side story: My Dad once worked for Pacific Bell in the 70's and they had International[2] trucks with a winch. One night they need to go up an Oregon mountain road in a blizzard to fix something[2]. They got stuck in the 4 wheel drive and basically hauled the truck up the mountain road by using the winch to pull it up. One would walk to the next pole or tree and then they would pull the truck up. I guess they really needed to fix that thing right then.

1) A truck that was as impossible to destroy as it was hated

2) I never really heard what they were fixing, I did hear a lot of cuss words referring to said item.

</comment></comment></comment></comment><comment><USER29> I knew an _incredibly_ gifted developer who was CTO of a company I joined as VP of Engineering. He was a genius level developer but didn't believe that any of the normal rules of software development applied to him - so no backups of product source code (which of course he wrote all the complex bits), no revision control, no build process, deployments by RAID...

Just before I joined, the CEOs nerves had taken a bad hit when CTO had power cable to only laptop with source for product stretched out at ideal tripping height, he runs to get something, trips over cable, smashes laptop...

Mind you he destroyed my nerves as well... <sigh>

Edit: Prize to anyone who can guess how "Deployment by RAID" worked...

<comment><USER30> Stag machine has a raid1 setup, when it's time to go to prod you take out one of the drives and put it in the prod machine? That would actually have some quite good properties.

<comment><USER31> Staging?? What Bureaucracy!

<comment><USER29> More like "spend money on a server that just sits around not earning money?"? This was in the days before VMs or the cloud.

What if you only have on site production servers? :-)

</comment></comment></comment></comment><comment><USER32> It is, shall I say, suspiciously easy to recognize oneself in this piece. In doing so, you get to be gifted at the small psychic price of being cursed. (For a narcissist, that's actually a win-win.) I submit as evidence most of this comment thread.

Maybe not every one of us is a hugely gifted reserve of untapped potential. Maybe some of us are just people with shitty habits and a reluctance to change.

</comment><comment><USER33> This rings bell to me and I tried to applied it myself. "The importance of fundamentals". Some of the hard parts are be honest to myself and admitting it, then re learn everything from scratch. I used to be able to get away with "instinct" but fundamental theory/knowledge is important too.

Pete Carroll preach about it and emphasize it in his team. Elon Musk also talked about the usefulness of sound fundamentals when it comes to learn about any fields of knowledge.

</comment><comment><USER34> Linus' gifted-child problems aside, calling Linus out over a refusal to use "systematic version-control" might have had some small role in causing Linus to write Git, if for no other reason than spite. That alone makes this an amazing email.

<comment><USER35> It was more that Tridge "reversed"[1] the Bitkeeper protocol, leading to licensing issues and the eventual separation of Linux from Bitkeeper. The need for a high performance, distributed replacement motivated Linus to write a git.

[1] [https://lwn.net/Articles/132938/](https://lwn.net/Articles/132938/)

<comment><USER30> The license issues were there all along. Tridge just made it harder to ignore them.

</comment></comment></comment><comment><USER7> Does anyone know how Linus responded? I can't find it anywhere after a quick search, and it doesn't seem to be on lkml.org

<comment><USER36> It seems that the contents are copy/pasted from a bunch of different messages. Here is the list of messages from that day: [https://lkml.org/lkml/2000/8/22](https://lkml.org/lkml/2000/8/22) . Torvalds's responses are in there as well.

<comment><USER7> Thanks. Here are some fun Linus quotes from that day:

      > It's a stupid lie, and one we should ignore at all times it comes up.

      > Make good interfaces. THAT will reduce bugs.

Showing that Linus is abrasive, but he's also right.

<comment><USER37> Making "good" interfaces is subjective.

</comment></comment></comment></comment><comment><USER38> > "I still worry about what will happen if the complexity of the kernel > exceeds the scope of your astonishing native talent before you grow up."

It never did and he never grew up. LOL.

<comment><USER39> This is the true ending to that fairytale.

<comment><USER40> Is it? The kernel now has comprehensive version control, and is arguably more modular.

</comment></comment></comment><comment> ryan-allen That was an epic read. I've only ever known ESR from his 'edge' opinions but this email feels like a pearl from the wise.

He mentioned code sharing and using his inbox as a queue, was this pre-source control? Stupid question, but does anyone have any context to what it was like when this was written?

<comment><USER41> No, things like SCCS were already around in the 80s but not in the PC world. At the time of writing though, it was common to use CVS, or if you were a Windows shop, the soul crushing MS SourceSafe. Distributed version control systems would not appear until BitKeeper.

</comment></comment><comment><USER42> Both of them have tons of ego.

</comment><comment><USER43> Man they ought to call it the curse of the stupid everyone else.

</comment><comment><USER44> for those who are curious the whole discussion thread can be read here [http://markmail.org/message/kndbnthmmlai2ky6#query:+page:1+m...](http://markmail.org/message/kndbnthmmlai2ky6#query:+page:1+mid:2gklodigelhzd4pi+state:results)

</comment><comment><USER45> That's just one weird e-mail message, a mash-up of Uriah Heep and self- aggrandized condescension.

</comment><comment><USER46> This kind of toxic snarkism fueled by fratboy within insecure adults produce toxic working culture. Like literally shitting on anything the other person says or does, makes a pretty tough environment to work together.

<comment><USER47> I really dislike the sensitivity to negative feedback that has become more common over the past ten years. It used to be possible to communicate that someone's behavior is harmful without being accused of literally shitting on them.

ESR's email conveys strong negative feedback—as Linus needed—and in the most deeply respectful and complimentary way I've ever seen in an "email rant". Especially from ESR lol. It's very clear that he means it from a heartfelt place and intends it to be productive.

If you read that email and feel snark from it, that's projection on your part, and it speaks to an uncomfortability with criticism in your world view. You might find life happier if you see that people give negative feedback not to shit on you or snark, but because they care and want to see you succeed.

<comment><USER48> It's really hard to give any kind of critique that benefits someone without them and everyone around them being offended. I always try to give advise about what should be done instead of what is currently being done when I find someone's done something highly inconvenient, sadly a lot of people take my comments as "pooping" on them. It is not easy trying to help people who think they're fully entitled to be higher than you no matter what. They would be too good if they did receive feedback for self-improvement though I suppose? :)

<comment><USER49> > It's really hard to give any kind of critique that benefits someone without > them and everyone around them being offended.

These days, now that people define themselves, people _will_ have their identities wrapped up in the things they make and do. In that case, I'm not sure there's a simple way to keep things from getting personal. That's a job for a rabbi, priest, pastor, mentor, or counselor, not a boss or coworker.

See also: discussing politics, money, diet, weight, etc.

And, yes, I'm disappointed to come to that conclusion. It seems to mean that we have to continually "handle", patronize, and manipulate people for the greater good. I'd rather treat everyone with respect and transparency. I also think I'm not particularly good at dissembling.</comment></comment></comment></comment>


What's new in web2py 1.62.1 - <AUTHOR>

Hello everybody web2py 1.62.1 is out

    http://www.web2py.com
 Here is a video of some of the new features:

    http://www.screencast.com/t/OH8Uc5ab6
 New features: - admin interface reads web2py twits - deploy on Google App Engine directly from the web based admin - commit your apps to mercurial repos directly from admin (requires easy_install mercurial) - every app has its own ajax shell (allows multiline commands and database interaction) - when files uploaded in database are downloaded, original filename is used to set content-disposition. - new "welcome" scaffolding app has Authentication, Role Based Access Control, CRUD, and Menu turned on by default - choice of third party authentication mechanisms including BASIC, GMAIL, LDAP - new .w2p file format for distributing zipped applications - new MENU helper for pure CSS popup and cascading menus. - WingIDE support - Better internationalization - runs with Python 2.4, 2.5, 2.6.2 and some of it runs on Jython and IronPython (the database drivers and web server do not).
The rest is backward compatible as usual.
IMPORTANT:
web2py includes the only Database Abstraction Layer / ORM that works on both the Google App Engine and relational databases (sqlite, mysql, postgresql, mssql, firebird, oracle, db2). You write once and it runs everywhere. You DO NOT NEED to use the Google API to access the Google Datastore as you do when you use other web frameworks on GAE.
web2py writes SQL for you (and you don't even need to see it) and automatically creates a web based interface to your data.
web2py includes a web base administrative interface for installing, creating, editing, debugging, testing, deploying and managing your applications. You only use the os shell if you chose to.
web2py  includes a ticketing system that logs all errors and issues tickets to visitors.
web2py runs everywhere python runs including iPhone, Windows CE, N800 and of course, Windows, Mac, Linux. <comment><USER2> Hi massimo, I have just downloaded the new version and i must confess to you that i am really impressed by the new admin interface, its cleaner, more cohesive and reinforces my resolve to go the web2py way.</comment>


The Paywall may be journalism's Maginot Line - <AUTHOR> http://scripting.com/stories/2010/12/12/thePaywallMayBeJournalisms.html <comment><USER2> The content just has to be good enough to be worth paying for. The internet is not killing newspapers by "stealing their news", but by raising the bar. In other words, the internet's supply of poor writing has made classical newspapers obsolete. Raise your standards!

<comment><USER3> ...or useful enough to get your subscription paid for by your employer.

(see: the WSJ, Financial Times, the Economist)

</comment></comment><comment><USER4> Notice how by likening a paywall to the Maginot Line, the internet must take the role of Hitler's invading forces. I wonder if that was the author's deliberate implication.

<comment><USER5> I think that you're taking the analogy too far. The main point seems to be that the paywall is this 'line in the sand' that keeps moving as soon as the 'enemy' crosses it.

<comment><USER6> The maginot line failed because they only built it along the border with their enemy (germany) and didn't continue it along the border with their friend (belgium) - so the enemy simply drove around it.

In newspaper terms it's like having a paywall but allowing the full text of the story to appear via Google's cache.

<comment><USER7> > The maginot line failed because they ... didn't continue it along the border > with their friend (belgium) - so the enemy simply drove around it.

Wikipedia says this is a myth:

> It is a myth however that the Maginot Line ended at the Belgian border and > was easy to circumvent.[2] The fortifications were connected to the Belgian > fortification system, of which the strongest point was Fort Eben-Emael.

[2] _Mosier, J. The Blitzkrieg Myth: How Hitler and the Allies Misread the Strategic Realities of World War II, HarperCollins, 2004, pp. 2, 38._

<http://en.wikipedia.org/wiki/Maginot_Line>

<comment><USER6> Still happened though

<comment><USER8> Still _something else_ happened --not the original argument (that they bypassed it because it wasn't extended to Belgium).

<comment><AUTHOR> The moral of the story is that, while the Maginot Line would have been a perfect defense in World War I, it was ineffective in World War II. People are always preparing to fight the last war. Very common mistake. A failure of imagination.</comment></comment></comment></comment></comment></comment></comment>


FDA names dog-food brands with potential link to canine heart disease - <AUTHOR> https://www.fda.gov/animal-veterinary/news-events/fda-investigation-potential-link-between-certain-diets-and-canine-dilated-cardiomyopathy <comment><USER2> My purebreed english bulldog 9 years old ate zignature kangaroo for past 2 years

Zignature has the top most dcm cases from this report.

He was diagnosed with DCM 2 nights ago.

We had to put him down last night.

Not sure if there is a relation, we never got a chance to validate his taurine levels but put him on taurine supplement, but there wasn't enough time to see the effect as he got worse with breathing and bloating do to the DCM and myocardial arithmia, was in severe cardiac arrest.

I read on the possible link and the vet mentioned it could be related yesterday.

He was born with an enlarged heart, so dont know if that's related.

Who knows... we will miss him, I wish there was more we could have done.

Also want to point out we did do 50% BARF diet, my dog had alot of allergy and supposedly did have gluten intolerance. Barf was not always feasible to give being on the road alot, so we also fed him zignature.

Since he was on it, alot of his conditions cleared up and I would say he was doing better overall health than on other brands (royal canine) till recently.

More work needs to be done before I would blame the brand.

<comment><USER3> I'm saddened that you are going through this now, it is a hard time.

<comment><USER2> Thanks

</comment></comment></comment><comment><USER4> A very good friend of mine who is a laboratory veterinarian once told me that the most important difference between niche brands like these and major players like Purina is that Purina actually dedicates massive resources to longitudinal testing of their products for things like all cause mortality, and hippie brands can't or don't.

<comment><USER5> I also have a good friend who is a vet who laughs at people spending 5x as much on hippie dog food brands that either don't do anything good or make things worse. He has had 4 dogs all live past 15 and only fed them the cheapest big brand name pet foods.

<comment><USER6> Sometimes it's an enterprising vet at fault: oh, your pet has ______ and needs a special diet containing _____, which we just happen to sell and you can't find at a big box store.

Now the vet has turned your pet into a recurring revenue source beyond labour- intensive checkups.

It's kinda like Luxxottica: a lot of their brands are only available through brick and mortal clinics. You can't buy them through an online provider because they won't sell to them.

<comment><USER4> Every vet will tell you that Hill's Science Diet is an excellent brand that they don't give to their own pets because it's too expensive.

<comment><USER7> The "prescription" version is even worse. You need a "prescription" from your vet to buy it for authorized retailers, but it doesn't actually have any drugs in it that are regulated in a way requiring a prescription. They've been sued over this (but I think they won).

My vet told me to put my cat on it after he had stress-related urinary problems. The problems went away, but the food is stupid-expensive, I'm a little peeved at how the system is taking advantage of me, but I don't know what to switch to other than starting to give my cat tryptophan.

<comment><USER8> Take your pet to a different veterinarian for a second opinion. There has to be at least one that doesn't shill for corporate product and can give you grounded, practical advice.

</comment></comment></comment></comment></comment></comment><comment><USER9> Better link, with links to more specific studies and updates (including the June 2019 update): [https://www.fda.gov/animal-veterinary/news-events/fda- invest...](https://www.fda.gov/animal-veterinary/news-events/fda- investigation-potential-link-between-certain-diets-and-canine-dilated- cardiomyopathy)

I guess it is good that they are being transparent with the data, but it is largely useless at this point as it isn't normalized at all and is in a way self-reported. You obviously can't conclude that chicken is bad and goat is good, but you can't really conclude anything else either. One potential mechanism is the taurine levels but the set of DCM cases contain low, normal, and high levels of taurine at similar rates. I think they are doing a reasonably good job, though. There are a number of controlled (though small sample size) studies ongoing.

<comment><USER10> OK, we've changed to that from [https://www.cbc.ca/news/health/dog-food-dcm- fda-1.5199186](https://www.cbc.ca/news/health/dog-food-dcm-fda-1.5199186). Thanks!

</comment></comment><comment><USER11> I wonder if this might've be explained by owner income, high income being correlated with both grain free food and expensive pathology reports on dogs that suddenly passed away.

<comment><USER2> Very possible

A dog can suddenly die from dcm, most dog owners dont perform an autopsy and there isn't much post mortem services available altogether.

I had the chance to get it diagnosed, the work put into the initial analysis ran up to nearly $5000(the treatment plan was for 10k, not including the potential 6 medicines and weekly blood analysis/vet visits, ecg if he did make it)

Not everyone has this option to afford it, nor does every pet have the time to reach diagnosis based on their condition.

I have a friend who fed his dog the cheapest kibble from grocery store, the dog suddenly passed. He seeked an autopsy, nothing much could be done post- mortem. That was the end of it.

The dog could have had dcm, or something else, but not enough work done in this field of dog cardiology. He definitely was not feeding it grain free legumes diet food.

Zignature is one of the most expensive brands($110 a month worth of food i was paying), I would think owners purchasing this would be enabled to also afford expensive services to diagnose DCM more than others

<comment><USER12> s/autopsy/necropsy/g

</comment></comment></comment><comment><USER13> This makes no sense ... first they say:

"Although the FDA first received a few sporadic reports of DCM as early as 2014, the vast majority of the reports were submitted after the agency notified the public about the potential DCM/diet issue in July 2018."

Then at the end of the article ...

"Another puzzling aspect of the recent spike in DCM cases is that they have occurred just in the last few years. "

It's not puzzling, it's because that's when the public was notified and more people reported cases!

</comment><comment><USER14> Did the FDA account for sales volumes? Their release only mentions frequency of reports. It would be natural for more popular brands to show up more: [https://www.fda.gov/news-events/press-announcements/fda- issu...](https://www.fda.gov/news-events/press-announcements/fda-issues-third- status-report-investigation-potential-connection-between-certain-diets-and- cases)

</comment><comment><USER15> This is particularly interesting to me, as I became aware dogs can eat legumes shortly after I got my two rescues.

Their typical died consists of a mixture of green or yellow split peas, pressure cooked for 43 minutes, then blended to a medium-thickness liquid, and cooked brown rice. This then gets mixed with raw mince (typically kangaroo or chicken), and grated / finely chopped raw vegetables consisting of one or more of the following: carrots, sweet potatoes, cauliflower, broccoli, cabbage. They also get raw meat bones (lamb, kangaroo, chicken), as well as raw eggs. Oh yeah, they also low apples, particularly fujis, and berries. So the mixed food I make often contains chopped apples or frozen mixed berries.

I generally never feed them the same ratio, or same things consistently. Some weeks the mix I make them will have no peas, another week no rice, another week no meat. They often skip meals, or have fast days where they get no food only water and exercise, as I believe dogs are opportunistic scavengers well suited to gorging and fasting.

I rarely feed them any off the shelf dog food.

I can see the difference when I feed them off the shelf food, as their poops turn to, shall I say, shit. Whereas the mixture of cooked peas and rice, plus raw veg and meat and bones, makes their poop easy to pass, and well formed.

With regards to dry dog food, canned dog food, and those dog-roll things... Can you imagine eating nothing but dry dog food most your life? Or nothing but canned food most of your life? Or nothing but luncheon meat / devon most your life? Tell me that isn't going to have long term health consequences.

<comment><USER16> The problem being that this data points in the exact opposite direction: animals developing fatal diseases after being fed more "natural" diets.

I used to be a proponent of raw diets for dogs, but I can't pick a natural fallacy over clinical reality. Poop quality being whatever it is.

<comment><USER15> I disagree.

Have a look at the chart in the article ( [https://www.fda.gov/files/dog_food_formulations_in_dcm_repor...](https://www.fda.gov/files/dog_food_formulations_in_dcm_reports_to_fda.png) ) where it says _Review of the canine reports shows that most reports were for dry dog food formulations, but raw food, semi-moist food, and wet foods were also represented._

Edit to add: also, the 'more natural' diets indicated by the article are these niche pet food formulations that _try_ to be more natural, but are just as cooked / processed as any other similar type of pet food, and potentially worse because, as others have pointed out, these niche brands lack the longitudinal research capacity of the big brands. Whereas my formulation is, as many have pointed out when they see what I'm making for my dogs, pretty much exactly what I eat: fresh raw and cooked vegetables, meats, and beans. If a fairly natural diet of raw and cooked foods kills me and my dogs, we're all fucked and might as well give up now.

</comment></comment></comment><comment><USER17> This has been frustrating to watch unfold. Of five major brands not implicated -- Purina, Royal Canin, Hill's Science Diet, Eukanuba, and Iam's -- we've tried four and they do not agree with my dog. The brands I have found that he thrives on, Fromm and Taste of the Wild, are listed here as possibly being linked to DCM (although he does well on non-grain-free Fromm). It has been a struggle finding an ideal food not linked to DCM but also agreeable to my dog.

<comment><USER18> My anecdotal issue is I did use Taste of the Wild for a year or so before switching to Victors but not long after my male dog developed all sorts of issue, yet can I truly attribute them to the food or his age (14?).

However from the article I cannot figure out, how long after the diet was changed before symptoms were noticed?

</comment></comment><comment><USER19> I, and I'm sure many others was unaware that the FDA had anything to do with pet food - pleasantly supprised and does make sense.

<comment><USER20> Pet food recalls are issued through the FDA: [https://www.fda.gov/safety/recalls-market-withdrawals- safety...](https://www.fda.gov/safety/recalls-market-withdrawals-safety- alerts)

</comment></comment><comment><USER21> I never understood the whole "dry dog food diet" and expecting dogs to be healthy long term. Imagine yourself eating dry crackers all your life. Its sad.

Maybe its just me but dogs need to eat actual meat and bones and real veggies. I grew up with our dog eating normal food: remains of the meats we ate, bones, lightly cooked meat purchased separately, certain vegetables etc. etc.

One day, we did buy dry dog food for him. He came up, looked at it, turned around and walked away. The next day we gave dry food away. We "spoiled" him with good normal food.

People might say its expensive. But really, looking at the thousands and thousands of dollars pet owners spend on their dogs already normal food prepared smartly is not that expensive.

Honestly if you cant afford to feed your dog/cat properly maybe you should not have a pet at all.

<comment><USER22> My wife makes our dogs food once/month. The cost comes out to about the same as one of the expensive brands of kibble.

She does have to cook everything which takes a few hours though.

<comment><USER21> I mean duh you'd cook food for your child and not feed him/her crackers. The same goes for dogs/cats. They are family members and deserve to eat god food too.

</comment></comment></comment><comment><USER23> I have been feeding my dog Taste of the Wild for three months until she started vomiting. I took her to the vet and it seems it's because some food allergy. At the moment she's taking Hill's I/D (the one with the darker pink tone) and she's alright, she stopped vomiting and she's just okay.

I just talked to my vet and he's told me to give her Hill's I/D for one or two months to dicard other causes.

From what I gather here from other comments it seems big brands have resources other brands don't although the quality of the ingredients may be lower although they are set in the right amount.

I won't ever feed again my dog other food than big brands you can find on your vet. And of course I'll be feeding her food with grain.

</comment><comment><USER24> This seems reckless to release names without a causal relationship defined. The only thing they seem to be able to determine is that in some breeds, some dog foods that are really common, might possibly be related to the disease. That's kind of like saying that because nearly every human eats vegetables on a regular basis, vegetables must cause cancer and heart disease since those are the two major causes of deaths in humans. I've had numerous dogs on one of the listed brands, not a single one has died of this disease.

<comment><USER25> Unlike most people, dogs usually get fed majority of food from single sources. Thus causality is relatively strong in comparison to other observational studies.

<comment><USER26> It's not though. Establishing Brand X as a cause doesn't tell you what ingredient, or what missing nutrient, or what other feature of that brand's food is causing the problem. What value is there in that? You can switch brands, but you have no way to know the new food isn't worse than the old food. And if you're the producer, you have no knowledge of how to improve your food - might as well just close up shop because ... the brand is the cause?

<comment><USER8> Gathering the data is a step in the right direction, and publishing it is the only ethical thing to do.

</comment></comment></comment></comment><comment><USER27> We feed one of our dogs Blue Buffalo. He thrives on it after years of methodically trying other brands. He's 13.

During our quest, we also found that the best supplement was fish oil (pollock). Prior to the fish oil, he had all kinds of skin problems and inflammation. The fish oil was beneficial and required regardless of dog food brand we tried.

</comment><comment><USER28> > It's important to note that the FDA doesn't yet know how certain diets may > be associated with DCM in some dogs.

From my read, it's an ongoing research and no results/conclusions have been reached yet. They are posting names of brands as an effort to "being transparent with their investigation".

</comment><comment><USER29> Well this is upsetting. Our golden retriever died suddenly just shy of two years of age (very young) several years ago. She was fed Fromm Family Gold exclusively due to our breeder's recommendation. The food was expensive and I remember thinking how well she must be eating as it had so many kinds of meats and fat in it (including stuff like duck IIRC). Fromm is one of the brands listed by the FDA and golden retrievers are clearly hardest hit by this.

We did have a necropsy performed however it was inconclusive. She got a ton of exercise though as I took her to doggy daycare a majority of days during the week and our kid at home played with her often. Really sad that we apparently unknowingly did everything wrong (but with the best intentions) to ensure our dog died an early death. Fuck.

<comment><USER30> I am very sorry for your loss. It always sad to deal with the death of a pet, but it's especially hard when they're so young and it's so sudden.

I hope you will consider that this report is discussing early stages of research, not conclusive findings. I don't think it's fair to beat yourself up for "doing everything wrong" when there's still so much uncertainty.

</comment></comment><comment><USER31> This is why I always advocate for people to look into a BARF diet for their dogs, but too many people are squeamish about it. Some of the most powerful and healthy dogs I've seen all eat BARF.

Some seem to go to great lengths to watch what they eat for their own bodies, but never their dogs.

<comment><USER32> As I had to Google it - apparently BARF is "Biologically Appropriate Raw Food".

I have to say I get the concept. Dogs just didn't evolve to eat the weird hard little grain-based pellets that a lot of people feed to them. Then again, humans didn't evolve to eat a modern Western diet either. Considering the number of fat and unhealthy dogs I see is starting to rival the number of fat and unhealthy people, perhaps that tells us something.

<comment><USER33> Just as a short aside, IIRC there is evidence that because of the very long association between humans and dogs, dogs actually _did_ evolve to make good use of some of humans' throwaways, compared to their wild relatives.

I don't have a dog, so didn't save the link, but for dog caretakers some literature review might do good (also, maybe consensus improved since then).

EDIT: obviously that doesn't necessarily translate to modern dry food.

<comment><USER34> Consider also that dogs have a shorter generation time than humans. Most dogs have eaten a grain-based diet ever since their domestication, because it's cheapest.

</comment></comment></comment></comment><comment><USER35> My dog's brand isn't listed, but it seems like pea protein is a common denominator. My dog's "grain free" food has pea protein as one of its top ingredients.

I just switched him back to regular wet dog food. I'm beginning to think organ meat is necessary for canines. And reading through these comments has lead me to start looking into a BARF diet.

Coincidentally I also noticed this article yesterday on allergic reactions in humans to pea protein: [https://www.cbc.ca/news/health/food-allergy-pea- protein-1.51...](https://www.cbc.ca/news/health/food-allergy-pea- protein-1.5118978)

<comment><USER36> Just be sure you read decent, science based material on the BARF diet rather than just anicdotal forum post and people pitching their 'alternative' products. I've seen a very large cross section of pro-"raw food" and anti-vax attitudes in pet owners. That should be a huge red flag. Not that raw food is necessarily bad, but that the people pushing it are not often critical thinkers.

[https://avmajournals.avma.org/doi/full/10.2460/javma.243.11....](https://avmajournals.avma.org/doi/full/10.2460/javma.243.11.1549)

<comment><USER35> Thanks for the info. I'm not sold on BARF, I'm just curious. I didn't know the connection between that and anti-vaxx.

Interestingly, I'm not sure why my parent post got downvoted so badly.

</comment></comment></comment><comment><USER37> I can't believe noone has mentioned Sportsman's Pride yet. Their lamb + rice blend is the best thing ever for allergies and rashes and et cetera, and the whole brand is very good. They also have cat food, but the point was that their lamb+rice mix is really good for dog itches dog allergies et cetera. Recommend it.

<comment><USER38> This is the direct link to their Lamb Meal And Rice Formula dog food. Works really great for itches allergies and et cetera: [https://www.sportsmanspride.com/lamb-meal-rice-formula- dog-f...](https://www.sportsmanspride.com/lamb-meal-rice-formula-dog-food)

</comment></comment><comment><USER39> We took some time to learn the history of dry dog food and what modern companies have been doing, and recently switched our dog over to a wet food that gets shipped to our house every 2 weeks. It's been a great move, she loves it. And we feel better about giving her less processed food.

<comment><USER40> Please elaborate, maybe with wet food brand. Sincerely, concerned owner.

<comment><USER41> look up BARF food, it's the best for the dog IMO, barely processed. we buy it in deep frozen big packs (essentialy frozen whole meat, not just some meat pasta) 1-2 times a month. The brand is Graf Barf, dunno if it's in the US.

<comment><USER42> Given the topic is an FDA recall of a trendy diet which sounds better (grain free, high meat protein content), are there any studies which look at a BARF diet? I'm a dog owner cnsidering what to feed my pup, and right now I'm leaning towards sticking to Royal Canin based on the information available to us.

<comment><USER43> While I can't speak to your question, I spoke to my mom (veterinarian) about this after reading this thread and asked her specifically about BARF. She said that in most patients she's seen on those diets, their bloodwork has been all over the place. She said it's because when dogs ate meat in the wild, they were actually indirectly eating an omnivore diet, because their prey had plants and grains in their guts. Additionally, she's noticed some really nasty and hard to detect parasites which she suspects originates from these types of diets. Of course, this is anecdotal. She recommends a name-brand dog food because they're all well-tested, and says to not worry about feeding meat to your dogs because they can produce the necessary amino acids themselves.

Consult your veterinarian for dietary advice for your specific animal. You should trust their level-headed advice over emotionally-driven decisions from owners.

It's refreshing to see a skeptical comment like yours, and I too find it interesting a lot of people reporting jumping ship from one trendy diet to another.

<comment><USER41> Actually with BARF you should give also some vegetables to your dog. And good BARF food has the same things as you mentioned e.g. cow stomach with greens inside it (dunno it's English name) As for worms..you should always give your dog anti worm pills, he/she is always up to no good, e.g. drinking from puddles. Also buy quality barf food.

<comment><USER8> The person you are responding to is talking about hard to detect parasites, not just worms. Given that they are hard to detect, I don't think it is reasonable to assume that buying "quality barf food" will solve this issue.

</comment></comment></comment></comment></comment></comment></comment><comment><USER44> Even the FDA notes, there's no definitive evidence, more studies needed.

This is one of those "EVERYTHING IS ON FIRE maybe possibly". A bad report. This will turn people off from listening to the FDA. I would have expected more research before releasing.

</comment><comment> Paul-ish This sounds like it has potential for a class action.

</comment><comment><USER45> Oh no! My golden retriever mix is eating an Acana grain free dry food. Going to have to find something else.

</comment><comment><USER46> Jesus, thats like every dog food brand.

<comment><USER47> Absent of the major brands like Hill's and Purina?

</comment></comment><comment><USER48> This is "investigation conclusions done wrong", specifically a case of "correlation doesn't imply causation" and "normalize your data" working at full speed. Heck, it seems to me they are just publishing the data collected along with a 10 minutes "analysis": lets aggregate this, average that, some bar plots and ready to go online. And to add salt to the injury, they publish brand names.

This is the way "vaccines causes autism" nonsense reach the public and stay there forever. Even if a retraction, correction or refine of the conclusions is published in 6 months it will never have the impact of this release, and many will think "they are paid by the affected brands to say that".

<comment><USER49> Not a good analogy. "Vaccines cause autism" reached the public via a doctor straight-up lying and falsifying data so that he could profit on a new vaccine he hoped would replace the old one. Just another grifting charlatan, albeit one who is now responsible for inestimable damage to humanity.</comment></comment>


Bitcoin just passed the $200 mark - <AUTHOR>

<comment><USER2> At the same time it's now $190 on Bitstamp.

What's nice that the volume at MtGox was pretty high lately, ranging from 10-50K BTC per day. That's up to 10M USD traded daily we're talking about.

</comment><comment><USER3> More surprisingly, btcchina.com is trading at $218/1BTC.

</comment><comment><USER4> Going up or going down?

<comment><USER5> It has been going up.</comment></comment>